harpune

AD: Bulk User-Verschiebung OU

Hallo,

ich bräuchte eure Hilfe beim anwenden eines Scripts zum verschieben mehrerer Accounts in eine OU im Active Directory.

Der PS Script den ich nutze, lautet wie folgt:


Import-Module ActiveDirectory
 
$Import_csv = Import-Csv -Path "C:\temp\InaktiveAccounts.csv"  

$TargetOU = "OU=OU=TempInaktive,DC=****,DC=de"  
 
$Import_csv | ForEach-Object {

    $UserDN = (Get-ADUser -Identity $_.SamAccountName).distinguishedName

    Write-Host "Moving Accounts....."  

    Move-ADObject -Identity $UserDN -TargetPath $TargetOU -WhatIf
} 
Write-Host "Completed move"  

Leider erhalte ich folgende Fehler:

Get-ADUser : Cannot find an object with identity: '$._samaccountname' under: 'DC=****,DC=de'.  
At line:13 char:5
+     Get-ADUser -Identity $._samaccountname
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: ($._samaccountname:ADUser) [Get-ADUser], ADIdentityNotFoundException
    + FullyQualifiedErrorId : ActiveDirectoryCmdlet:Microsoft.ActiveDirectory.Management.ADIdentityNotFoundException,Microsoft.Act 
   iveDirectory.Management.Commands.GetADUser
 
Moving Accounts.....
Move-ADObject : 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 line:18 char:29
+     Move-ADObject -Identity $UserDN -TargetPath $TargetOU -WhatIf
+                             ~~~~~~~
    + CategoryInfo          : InvalidData: (:) [Move-ADObject], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.MoveADObject

Wäre euch sehr dankbar, wenn wir das zum laufen bekommen!
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 11586347436

Url: https://administrator.de/forum/ad-bulk-user-verschiebung-ou-11586347436.html

Ausgedruckt am: 17.06.2025 um 22:06 Uhr

3063370895
3063370895 29.01.2024 aktualisiert um 13:01:47 Uhr
Goto Top
Moin,

wie sieht denn deine .csv aus?
---
Cannot find an object with identity: '$._samaccountname'

$._samaccountname? $_.SamAccountName!
Die Großschreibung ist nicht relevant, die Platzierung des _ dagegen schon

-Thomas
Harpune
Harpune 29.01.2024 aktualisiert um 13:11:16 Uhr
Goto Top
Hi,

Column1                   Column2              Column3                                                        Column4              
-------                   -------              -------                                                        -------              
name                      samaccountname       OrganizationalUnit                                             DistinguishedName    
krbtgt                    krbtgt               Microsoft.ActiveDirectory.Management.ADPropertyValueCollection CN=krbtgt,CN=Users...
ogoyn                     ogoyn                Microsoft.ActiveDirectory.Management.ADPropertyValueCollection CN=...
dahlberg                  dahlberg             Microsoft.ActiveDirectory.Management.ADPropertyValueCollection CN=dahlberg       


usw.


LG
kpunkt
kpunkt 29.01.2024 aktualisiert um 13:21:17 Uhr
Goto Top
Dass du in Zeile 9 von deinem Script den Schreibfehler hast, ist dir aber jetzt schon bewusst, oder?
Siehe:
Zitat von @3063370895:
$._samaccountname? $_.SamAccountName!

Hopsi...jetzt hat's mich selber erwischt. Wo ist jetzt der Schreibfehler? Gerade hatte ich ihn noch.....
Harpune
Harpune 29.01.2024 um 13:23:59 Uhr
Goto Top
Zitat von @kpunkt:

Dass du in Zeile 9 von deinem Script den Schreibfehler hast, ist dir aber jetzt schon bewusst, oder?
Siehe:
Zitat von @3063370895:
$._samaccountname? $_.SamAccountName!

Ich hatte das Falsche herauskopiert ^^
Hier nochmal die korrigierte Variante des Fehlers welchen ich bekommeface-smile

Get-ADUser : 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 line:9 char:37
+     $UserDN = (Get-ADUser -Identity $_.SamAccountName).distinguishedN ...
+                                     ~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidData: (:) [Get-ADUser], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.GetADUser
 
Moving Accounts.....
Move-ADObject : 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 line:13 char:29
+     Move-ADObject -Identity $UserDN -TargetPath $TargetOU -WhatIf
+                             ~~~~~~~
    + CategoryInfo          : InvalidData: (:) [Move-ADObject], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.MoveADObject
Celiko
Lösung Celiko 29.01.2024 aktualisiert um 13:32:58 Uhr
Goto Top
Moin,

wenn deine Spaltennamen wirklich "Column1" und "Column2" sind, dann musst du statt $_.SamAccountName den Spaltennamen $_.Column2 verwenden.

Import-Module ActiveDirectory
 
$Import_csv = Import-Csv -Path "C:\temp\InaktiveAccounts.csv"    

$TargetOU = "OU=OU=TempInaktive,DC=****,DC=de"    
 
$Import_csv | ForEach-Object {
    #Hier die Änderung in Zeile 9....
    $UserDN = (Get-ADUser -Identity $_.Column2).distinguishedName

    Write-Host "Moving Accounts....."    

    Move-ADObject -Identity $UserDN -TargetPath $TargetOU -WhatIf
} 
Write-Host "Completed move"    


VG
Harpune
Harpune 29.01.2024 aktualisiert um 13:46:46 Uhr
Goto Top
Zitat von @Celiko:

Moin,

wenn deine Spaltennamen wirklich "Column1" und "Column2" sind, dann musst du statt $_.SamAccountName den Spaltennamen $_.Column2 verwenden.

Import-Module ActiveDirectory
 
$Import_csv = Import-Csv -Path "C:\temp\InaktiveAccounts.csv"    

$TargetOU = "OU=OU=TempInaktive,DC=****,DC=de"    
 
$Import_csv | ForEach-Object {
    #Hier die Änderung in Zeile 9....
    $UserDN = (Get-ADUser -Identity $_.Column2).distinguishedName

    Write-Host "Moving Accounts....."    

    Move-ADObject -Identity $UserDN -TargetPath $TargetOU -WhatIf
} 
Write-Host "Completed move"    


VG

Hi,

vielen Dank euch allen, daran hats gelegen. Jetzt habe ich aber das Problem, dass die ganzen Accounts nicht ins Ziel OU migriert wurden obwohl es bestätigt worden ist?

Moving Accounts.....
Moving Accounts.....
Moving Accounts.....
Moving Accounts.....
Moving Accounts.....
Moving Accounts.....
Moving Accounts.....
Completed move
Harpune
Harpune 29.01.2024 um 13:48:20 Uhr
Goto Top
Zitat von @Harpune:

Zitat von @Celiko:

Moin,

wenn deine Spaltennamen wirklich "Column1" und "Column2" sind, dann musst du statt $_.SamAccountName den Spaltennamen $_.Column2 verwenden.

Import-Module ActiveDirectory
 
$Import_csv = Import-Csv -Path "C:\temp\InaktiveAccounts.csv"    

$TargetOU = "OU=OU=TempInaktive,DC=****,DC=de"    
 
$Import_csv | ForEach-Object {
    #Hier die Änderung in Zeile 9....
    $UserDN = (Get-ADUser -Identity $_.Column2).distinguishedName

    Write-Host "Moving Accounts....."    

    Move-ADObject -Identity $UserDN -TargetPath $TargetOU -WhatIf
} 
Write-Host "Completed move"    


VG

Hi,

vielen Dank euch allen, daran hats gelegen. Jetzt habe ich aber das Problem, dass die ganzen Accounts nicht ins Ziel OU migriert wurden obwohl es bestätigt worden ist?

Moving Accounts.....
Moving Accounts.....
Moving Accounts.....
Moving Accounts.....
Moving Accounts.....
Moving Accounts.....
Moving Accounts.....
Completed move

Hat sich erledigt. AD neugestartet und a waren sie face-smile
Danke euch allen!!
em-pie
em-pie 29.01.2024 um 17:06:49 Uhr
Goto Top
Hat sich erledigt. AD neugestartet und a waren sie face-smile
Rechtsklick auf die OU und dort "Refresh" bzw. "aktualisieren" hätte vermutlich auch gereicht. da musst man nicht gleich das ganze AD (vermutlich nur dein DC) neustarten..

Btw: die Info "Moving Accounts..." erhältst du auch, wenn es einen Fehler gegeben hätte.
Du hattest das mit try ... catch abfangen können/ sollen/ müssen und/ oder nochmal validieren, ob der User in der OU zu finden ist - innerhalb des foreach()
Celiko
Celiko 29.01.2024 um 17:44:21 Uhr
Goto Top
Moin,

Em-pie hat recht.
Bitte beim nächsten mal richtiges logging einbringen falls etwas schief läuft. Hat mich auch gestört haha

Da das script aber simpel ist und fehlerfrei durchgehen sollte habe ich nichts gesagt 😜

@Harpune: falls du da Interesse hast zu wissen wie so etwas gemacht werden könnte gerne bescheid geben 👍

Vg