'moving user from multiple ADgroup to others with powershell
i have a csv file formatted like this
oldniveau1,oldniveau2,oldniveau3,newniveau1,newniveau2,newniveau3
0UA_Ventes,CIS countries,Contracts,0UA_Ventes,CIS countries,Contracts_1
my goal is to extract active directory group name by formatting the path given in csv file
i have a script that work i give all the line in sigle variable but wheni use the loop i have error message
$csv=Import-Csv $pth\filerN3.csv -Delimiter "," | Foreach-Object {
$n1 = $_.oldniveau1
$n2 = $_.oldniveau2
$n3 = $_.oldniveau3
$n4 = $_.newniveau1
$n5 = $_.newniveau2
$n6 = $_.newniveau3
$adminn3group = "m^" + $n1 + "^" + $n2 + "^" + $n3
$newadmingroup= "m^" + $n4 + "^" + $n5 + "^" + $n6
$writegroup= "g^" + $n1 + "^" + $n2 + "^" + $n3
$newwritegroup="g^" + $n4 + "^" + $n5 + "^" + $n6
$readgroup="g^" + $n1 + "^" + $n2 + "^" + $n3 + "^R"
$newreadgroup="g^" + $n4 + "^" + $n5 + "^" + $n6 + "^R"
$currentmanagermembers = Get-ADGroupMember -Identity $adminn3group -ErrorAction SilentlyContinue
Add-ADGroupMember -Identity $newadmingroup -Members $currentmanagermembers -ErrorAction SilentlyContinue
Remove-ADGroupMember -Identity $adminn3group -Members $currentmanagermembers -confirm:$false -ErrorAction SilentlyContinue
###############
Get-ADGroupMember $writegroup |
Add-ADPrincipalGroupMembership `
-MemberOf $newwritegroup
Get-ADGroupMember $writegroup |
Remove-ADPrincipalGroupMembership `
-MemberOf $writegroup -confirm:$false -ErrorAction SilentlyContinue
###############
Get-ADGroupMember $readgroup |
Add-ADPrincipalGroupMembership `
-MemberOf $newreadgroup
Get-ADGroupMember $readgroup |
Remove-ADPrincipalGroupMembership `
-MemberOf $readgroup -confirm:$false -ErrorAction SilentlyContinue
########"
}
so without the loop for the csv when i use 6 variable to fix each one it work and all the user are moved
but with the loop
i have this error any idea why ?
Get-ADGroupMember : Cannot validate argument on parameter 'Identity'. The argument is null or empty. Provide an argument that is not null or empty, and then try the command again.
At C:\temp\addN3MGR\move_central.ps1:28 char:54
+ ... entmanagermembers = Get-ADGroupMember -Identity $adminn3group -Error ...
+ ~~~~~~~~~~~~~
+ CategoryInfo : InvalidData: (:) [Get-ADGroupMember], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.GetADGroupMember
Add-ADGroupMember : Cannot validate argument on parameter 'Identity'. The argument is null. Provide a valid value for the argument, and then try running the command again.
At C:\temp\addN3MGR\move_central.ps1:30 char:29
+ Add-ADGroupMember -Identity $newadmingroup -Members $currentmanagerme ...
+ ~~~~~~~~~~~~~~
+ CategoryInfo : InvalidData: (:) [Add-ADGroupMember], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.AddADGroupMember
Solution 1:[1]
The issue was due to empty member for some security group so I changed the command were processed and it worked
I'm a beginner in Powershell and not very comfortable yet with try and catch.
Get-ADGroup $adminn3group -ErrorAction SilentlyContinue|Get-ADGroupMember | % {Add-ADGroupMember $newadmingroup -Members $_ }
Get-ADGroup $adminn3group -ErrorAction SilentlyContinue|Get-ADGroupMember | % {Remove-ADGroupMember $adminn3group -Members $_ -confirm:$false}
Get-ADGroup $writegroup -ErrorAction SilentlyContinue|Get-ADGroupMember | % {Add-ADGroupMember $newwritegroup -Members $_ }
Get-ADGroup $writegroup -ErrorAction SilentlyContinue|Get-ADGroupMember | % {Remove-ADGroupMember $writegroup -Members $_ -confirm:$false}
Get-ADGroup $readgroup -ErrorAction SilentlyContinue|Get-ADGroupMember | % {Add-ADGroupMember $newreadgroup -Members $_ }
Get-ADGroup $readgroup -ErrorAction SilentlyContinue|Get-ADGroupMember | % {Remove-ADGroupMember $readgroup -Members $_ -confirm:$false}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | DocZerø |
