Ich glaube, Sie nur brauchen wenig Hilfe bei der Syntax und vielleicht etwas Struktur. Wie im obigen Kommentar erwähnt, sind Home
und HomeDirectory
Eigenschaften des Benutzerobjekts. Um darauf zugreifen zu können, können Sie vorher Select -Expand samaccountname
nicht verwenden, da dies einfach den Alias des Benutzers als Zeichenfolge in der zu verwendenden Pipe weitergibt und diese Eigenschaften nicht enthält. Also fangen wir an, dieses Bit zu entfernen. Als nächstes müssen Sie sie als Eigenschaften korrekt referenzieren, indem Sie auf Ihre Variable $user
verweisen. Das würde wie $user.home -ne "H:"
und $user.HomeDirectory -ne ('\\server\home$\' + $user.SamAccountName)
aussehen. Sie werden feststellen, dass ich diesen beiden auch -eq
hinzugefügt habe. Das ist der Vergleichsoperator für nicht-gleich. Das räumt deine Syntax etwas auf, jetzt schauen wir uns die Struktur an.
Anstatt zu einer If
Anweisung zu leiten, verwenden wir eine Where
Anweisung, um nur die Benutzer herauszufiltern, die Aufmerksamkeit benötigen. Da wir es so machen, benutzen Sie $_
anstelle von $user
, da wir es noch nicht wirklich in die ForEach
Schleife geschafft haben. Also das würde wie folgt aussehen:
(Get-ADUser -Filter * | Where{$_.Home -ne "H:" -or $_.HomeDirectory -ne ('\\server\home$\' + $_.SamAccountName)})
Nun, wenn Sie, dass in Ihrem Skript integrieren es wie folgt aussieht:
ForEach($User in (Get-ADUser -Filter * | Where{$_.Home -ne "H:" -or $_.HomeDirectory -ne ('\\server\home$\' + $_.SamAccountName)})){
Set-ADUser $User -HomeDrive "H:" -HomeDirectory('\\HYDAD1\home$\' + $_.SamAccountName)
}
'-HomeDrive' und' -HomeDirectory' sind Parameter zu 'Set-ADUser' und Sie können sie in Ihrer zweiten Version nicht verwenden. Sie benötigen alle Eigenschaften des Benutzerkontos, damit Sie '$ user.HomeDirectory' überprüfen können, was bedeutet, dass Sie' -ExpandProperty' auch nicht verwenden können, weil dadurch alle anderen Benutzerkontoeigenschaften verloren gehen. Und du kannst 'if() | nicht wirklich verwenden 'Ich brauche' if() {} ' – TessellatingHeckler