Zum Inhalt wechseln


Foto

Foreach ad-user | set-aduser - Verständnis Problem?


  • Bitte melde dich an um zu Antworten
2 Antworten in diesem Thema

#1 hell-boy

hell-boy

    Newbie

  • 7 Beiträge

 

Geschrieben 23. Dezember 2016 - 10:01

Guten Tag liebe MCSE-Community,

 

ich bin neu hier und habe auch gleiche ein vermutliches Verständnisproblem bei einen meiner Powershell Skripte.

Auch wenn die Lösung eher simpel erscheinen kann möchte Ich um Euren Rat bitten.

 

Was habe ich vor?

Der Fileserver, welcher die Homedrives unserer AD-User bereitstellt wurde auf ein DFS-R Pfad umgeleitet.

Leider sind uns ein paar Benutzer entwischt, welche derzeit noch mit deren Homedrives auf den alten Hostname zeigen.

Mittlerweile bin ich einigermaßen Fit in AD-Powershell abfragen und möchte nun ein erstes Skript mit Set-User erstellen.

 

Die folgende Abfrage nutze ich um die Fehlerhaften Homedrives Abzufragen:

get-aduser -filter * -properties * | Where-Object {$_.homedirectory -like "\\falschername\*" -and $_.samaccountname -like "peter*"}

Die Filteroption 

-and $_.samaccountname -like "peter*"

nutze ich nur zum testen eines Fehlerhaften Referenzbenutzers

 

Mein erster Ansatz führt auch gleich zu der vermutlich alles entscheidenden Frage und den Fehler

get-aduser -filter * -properties * | Where-Object {$_.homedirectory -like "*" -and $_.samaccountname -like "peter*"}| foreach-object{Set-ADUser -HomeDirectory "\\domain.local\USERHOME\" + $_.samaccountname}

Um in die Foreach-Schleife eine Property des get-aduser Ergebnissen hereinzubekommen bin ich mir nicht sicher, ob $_.samaccountname überhaupt hinter der Pipe in der schleife verwenden kann.

Mein Ziel ist es auch in einer Zeile zu schreiben, wenn es möglich ist.

Ich habe die Abfrage  umgeschrieben um zu sehen ob eine andere Schreibweise, wie die folgende zum Ziel führt.

$results=get-aduser -filter * -properties * | Where-Object {$_.homedirectory -like "*" -and $_.samaccountname -like "peter*"}
foreach($result in $results)
{
    Set-ADUser -HomeDirectory "\\domain.local\USERHOME\" + $result.samaccountname
}

Set-ADUser : Es wurde kein Positionsparameter gefunden, der das Argument "Microsoft.ActiveDirectory.Management.ADPropertyValueCollection" akzeptiert.
In Zeile:4 Zeichen:5
+     Set-ADUser -HomeDirectory "\\domain.local\USERHOME\" + $result. ...
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Set-ADUser], ParameterBindingException
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.ActiveDirectory.Management.Commands.SetADUser
 

Leider bekomme ich bei beiden diesen Fehler.

Über jeden Denkanstoß bin ich dankbar



#2 BOfH_666

BOfH_666

    Junior Member

  • 145 Beiträge

 

Geschrieben 23. Dezember 2016 - 11:13

Wenn ich mich nicht irre, solltest Du in Deinem Foreach-Loop eventuell noch den AD-User angeben für das neue Homedirectory gesetzt werden soll

foreach-object{Set-ADUser -Identity $_.sAMAccountName -HomeDirectory ("\\domain.local\USERHOME\" + $_.samaccountname)}

... und zur Sicherheit kannst Du den 'zusammengebauten neuen Pfad' noch in Klammern setzen. Dann braucht PS nicht zu raten wo das dazu gehört.


live long and prosper!

PS:> (79,108,97,102|%{[char]$_})-join''

#3 hell-boy

hell-boy

    Newbie

  • 7 Beiträge

 

Geschrieben 23. Dezember 2016 - 11:34   Lösung

Hi BOfH_666

erst einmal vielen Dank für die schnelle Rückmeldung und vor allem auch Hilfe.

Zwischenzeitlich habe ich den Schalter -identity bereits ausprobiert und habe den selben Fehler erhalten.

Es lag tatsächlich an den Fehlenden Klammern um den Pfadname!!! :jau:

 

Für jeden den es interessiert würde richtige Zeile wie folgt aussehen:

get-aduser -filter * -properties * | Where-Object {$_.homedirectory -like "\\falschername*" -and $_.samaccountname -like "peter*"}| foreach-object{Set-ADUser -Identity $_.samaccountname -HomeDirectory ("\\domain.local\USERHOME\" + $_.samaccountname)}

Die Filterbedingung 

 -and $_.samaccountname -like "peter*"

hilft lediglich zum testen an einem Testbenutzer.

 

Vielen Dank & Schöne Feiertage 


Bearbeitet von hell-boy, 23. Dezember 2016 - 11:35.