Jump to content
Melde dich an, um diesen Inhalt zu abonnieren  
hell-boy

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

Empfohlene Beiträge

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

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

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.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

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

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte überlege Dir, ob es nicht sinnvoller ist ein neues Thema zu erstellen.

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
Melde dich an, um diesen Inhalt zu abonnieren  

×