Jump to content

Namensänderung via Powershell - Namenszusatz


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

Empfohlene Beiträge

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 von Doraymefayzo
Link zu diesem Kommentar
  • Beste Lösung

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

Link zu diesem Kommentar
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 :-)

Link zu diesem Kommentar
  • 1 Monat später...

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.

Link zu diesem Kommentar
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?

 

Link zu diesem Kommentar

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)'"
    }
}

 

Link zu diesem Kommentar
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 :-)

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...