Doraymefayzo 3 Geschrieben 29. Mai 2020 Melden Teilen Geschrieben 29. Mai 2020 (bearbeitet) Hallo! Ich würde gerne folgende Aufgabe per Powershell erledigen: Unsere Dienststelle wird umbennant. Jeder User hat hinter dem Anzeigenamen den Namen der Dienststelle. Also Beispielsweise: Max Mustermann (Dienststelle Nord). Nun soll das bei jedem User geändert werden. Beispiel: Max Mustermann ( Diensstelle 32). Wie ich es in der Beschreibung per Powershell ändere weiß ich. Hier habe ich ein Script, das eine Namensliste aus einer txt-Datei ausliest und die BEschreibung bei allen ändert. Aber nun will ich ja nur einen Teil des Anzeigenamens ändern. Kann man das per Powershell irgendwie bewerkstelligen oder muss ich jeden User einzeln ändern? bearbeitet 29. Mai 2020 von Doraymefayzo Zitieren Link zu diesem Kommentar
Beste Lösung testperson 1.677 Geschrieben 29. Mai 2020 Beste Lösung Melden Teilen Geschrieben 29. Mai 2020 Hi, du kannst dir mit Get-ADUser alle User zusammensuchen und dann durch eine foreach-Schleife jagen und mittels "Replace" den neuen DisplayName setzen (Set-ADUser). In grob: $Users = Get-ADUser -Filter * -SearchBase $("OU=<deine>;OU=<BenutzerOU>,DC=<Domain>,DC=<TLD>") -Properties DisplayName # foreach Set-ADUser $User -DisplayName $User.DisplayName.Replace("alter Wert","neuer Wert") Je nach Aufbau solltest du das ggfs. noch prüfen, nicht das der "alte Wert" an weiteren Stellen im DisplayName auftaucht und dort auch ersetzt wird. "Notfalls" kannst du dir alt und neu auch erst in eine CSV exportieren und dort händisch ggfs. nacharbeiten. Gruß Jan 2 Zitieren Link zu diesem Kommentar
Doraymefayzo 3 Geschrieben 3. Juni 2020 Autor Melden Teilen Geschrieben 3. Juni 2020 Am 29.5.2020 um 12:16 schrieb testperson: Hi, du kannst dir mit Get-ADUser alle User zusammensuchen und dann durch eine foreach-Schleife jagen und mittels "Replace" den neuen DisplayName setzen (Set-ADUser). In grob: $Users = Get-ADUser -Filter * -SearchBase $("OU=<deine>;OU=<BenutzerOU>,DC=<Domain>,DC=<TLD>") -Properties DisplayName # foreach Set-ADUser $User -DisplayName $User.DisplayName.Replace("alter Wert","neuer Wert") Je nach Aufbau solltest du das ggfs. noch prüfen, nicht das der "alte Wert" an weiteren Stellen im DisplayName auftaucht und dort auch ersetzt wird. "Notfalls" kannst du dir alt und neu auch erst in eine CSV exportieren und dort händisch ggfs. nacharbeiten. Gruß Jan Vielen lieben Dank. Funzt einwandfrei und erspart mir eine Menge Arbeit 1 Zitieren Link zu diesem Kommentar
Doraymefayzo 3 Geschrieben 3. August 2020 Autor Melden Teilen Geschrieben 3. August 2020 Ich muss das Thema leider nochmal aufgreifen. Ich wollte nun endlich das Skript ausführe, da unsere Namensänderung nun endlich abgesegnet wurde. Ich hatte das ganze vorher in einer Test-OU gemacht, die eine Ebene unter der OU Benutzer ist. Wenn ich jetzt jedoch das Skrip ausführe, kommt diese Fehlermeldung: Set-ADUser : "System.Object[]" kann nicht in den Typ "System.String" konvertiert werden, der für den Parameter "DisplayName" erforderlich ist. Die angegebene Methode wird nicht unterstützt. In E:\fileserv\Administration\wechsel.ps1:3 Zeichen:31 + Set-ADUser $User -DisplayName $User.DisplayName.Replace("(Dienststelle Nord ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (:) [Set-ADUser], ParameterBindingException + FullyQualifiedErrorId : CannotConvertArgument,Microsoft.ActiveDirectory.Management.Commands.SetADUser Sobald ich wieder eine OU-Ebene Tiefer gehe, klappt es. Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 3. August 2020 Melden Teilen Geschrieben 3. August 2020 Zeig doch mal bitte den kompletten Code. Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 3. August 2020 Melden Teilen Geschrieben 3. August 2020 Moin, Ich tippe mal: es sind Objekte in der OU, bei denen das Feld DisplayName leer ist. Vielleicht hilft es dann, in dem Get den Filter passend zu setzen. Gruß, Nils Zitieren Link zu diesem Kommentar
Doraymefayzo 3 Geschrieben 3. August 2020 Autor Melden Teilen Geschrieben 3. August 2020 vor 5 Stunden schrieb BOfH_666: Zeig doch mal bitte den kompletten Code. $User = Get-ADUser -Filter * -SearchBase $(“OU=Benutzer,OU=ABC,OU=DEF,OU=\+1,dc=aa,dc=xyz,dc=de”) -Properties DisplayName # foreach set-aduser $User -Displayname $user.displayname.replace("(Direktion Nord)","(Direktion 32)") Die OU Namen habe ich nur hier geändert. @NilsK Es sind lediglich drei Unter-OUs dort enthalten. Werden die von dem Script auch einbezogen? Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 3. August 2020 Melden Teilen Geschrieben 3. August 2020 Hmmm ... wenn das wirklich Dein kompletter Code ist, hast Du etwas Entscheidendes einfach weggelassen ... die Schleife .... Du hattest oben geschrieben "Funzt einwandfrei .." - ich gehe mal davon aus, dass Du das nur an einem User getestet hast, oder? Ich würde so anfangen: $UserList = Get-ADUser -Filter * -SearchBase $(“OU=Benutzer,OU=ABC,OU=DEF,OU=\+1,dc=aa,dc=xyz,dc=de”) -Properties DisplayName foreach ($User in $UserList) { try { Set-ADUser -Identity $User.sAMAccountName -Displayname $user.displayname.replace("(Direktion Nord)", "(Direktion 32)") -ErrorAction Stop } catch { Write-Warning "Check User: '$($User.sAMAccountName)'" } } 1 Zitieren Link zu diesem Kommentar
Doraymefayzo 3 Geschrieben 3. August 2020 Autor Melden Teilen Geschrieben 3. August 2020 vor 29 Minuten schrieb BOfH_666: Hmmm ... wenn das wirklich Dein kompletter Code ist, hast Du etwas Entscheidendes einfach weggelassen ... die Schleife .... Du hattest oben geschrieben "Funzt einwandfrei .." - ich gehe mal davon aus, dass Du das nur an einem User getestet hast, oder? Ich würde so anfangen: $UserList = Get-ADUser -Filter * -SearchBase $(“OU=Benutzer,OU=ABC,OU=DEF,OU=\+1,dc=aa,dc=xyz,dc=de”) -Properties DisplayName foreach ($User in $UserList) { try { Set-ADUser -Identity $User.sAMAccountName -Displayname $user.displayname.replace("(Direktion Nord)", "(Direktion 32)") -ErrorAction Stop } catch { Write-Warning "Check User: '$($User.sAMAccountName)'" } } Vielen Dank. So hat es geklappt. Es ist ein User in der OU der wohl komplett schreibgeschützt ist. Der hat das ganze blockiert. Mit deinem Script hat es aber wunderbar geklappt. Recht herzlichen Dank Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.