Jump to content

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


Direkt zur Lösung Gelöst von hell-boy,
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

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

Link zu diesem Kommentar

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.

Link zu diesem Kommentar
  • Beste 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
Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...