Jump to content

Namensänderung via Powershell - Namenszusatz


Go to solution Solved by testperson,
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Recommended Posts

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?

Edited by Doraymefayzo
Link to post
  • Solution

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

  • Like 2
Link to post
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 :-)

  • Like 1
Link to post
  • 1 month later...

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 to post
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 to post

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

 

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...