kileo20
Goto Top

Powershell scripting

Hallo Zusammen,

nach langen Tests und Suchaktionen, möchte ich euch um Hilfe bei einer kleinen Herausforderung bitten.

Ich möchte jedem User auf AD eine weitere Email Adresse auf seinem Profil hinzufügen. Das klappt mit diesem PowerShell befehl ganz gut:

ForEach-Object {Set-ADUser $_.SamAccountName -Add @{internalMail=$_.GivenName + $_.sn + "@xyz.de"}}

leider wird nur aus irgendeinem Grund lediglich der Vorname ($_.GivenName) und Domain (@xyz.de) berücksichtig, nicht der Nachname ($_.sn), dh:

Hans@xyz.de
anstatt
Hans.Mustermann@xyz.de

Hab schon versucht statt Attribute:sn Attribute:surname leider ohne Erfolg. Hat jemand eine Idee?

Vorab, Vielen Dank !

Kileo

Content-ID: 649607

Url: https://administrator.de/forum/powershell-scripting-649607.html

Ausgedruckt am: 08.04.2025 um 22:04 Uhr

emeriks
emeriks 08.02.2021 aktualisiert um 14:12:15 Uhr
Goto Top
Hi,
wenn Du uns nicht wissen lässt, was "ForEach-Object" da verarbeitet, dann können wir Dir da auch nicht helfen. Liefere doch bitte die vollständige Skriptzeile bzw. -passage.

E.
Kileo20
Kileo20 08.02.2021 um 15:35:26 Uhr
Goto Top
Hi Emeriks,

anbei die vollständige Skriptzeile:

Get-ADUser -Filter * -SearchBase "OU=Test,DC=abc,DC=DE" | ForEach-Object {Set-ADUser $_.SamAccountName -Add @{internalMail=$_.GivenName + $_.sn + "@xyz.de"}}

Grüße
Kileo
emeriks
emeriks 08.02.2021 aktualisiert um 16:21:02 Uhr
Goto Top
Zitat von @Kileo20:
Get-ADUser -Filter * -SearchBase "OU=Test,DC=abc,DC=DE" | ForEach-Object {Set-ADUser $_.SamAccountName -Add @{internalMail=$_.GivenName + $_.sn + "@xyz.de"}}
Get-ADUser liefert standardmäßig "sn" als "surname". Also
Get-ADUser -Filter * -SearchBase "OU=Test,DC=abc,DC=DE" | ForEach-Object {Set-ADUser $_.SamAccountName -Add  
@{internalMail=$_.GivenName + $_.surname + "@xyz.de"}}  
Kileo20
Kileo20 08.02.2021 um 16:45:35 Uhr
Goto Top
'surname' hatte ich bereits ausprobiert. Ich sehe gerade das einige Zeichen nicht bei copy/paste übernommen wurden, geht es um die Zeichen, die ich nachfolgend unterstrichen habe:

Get-ADUser -Filter * -SearchBase "OU=Test,DC=abc,DC=DE" | ForEach-Object {Set-ADUser $_.SamAccountName -Add @{internalMail=$_.GivenName + "." + $_.sn + "@xyz.de"}}

Möchte das Format: Vornamen.Nachnamen@domain.de erhaten

Mit "surname" erhalte ich die Fehlermeldung:

Set-ADUser : Multiple values were specified for an attribute that can have only one value
At line:1 char:120
'+ ... ach-Object {Set-ADUser $_.SamAccountName -Add @{internalMail=$_.Give ...
'+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (Hans:ADUser) [Set-ADUser], ADException
emeriks
Lösung emeriks 08.02.2021 um 17:13:10 Uhr
Goto Top
Was auch immer.
Fakt ist:
Get-AdUser liefert ohne weitere Angaben keine Property "sn". Aber "surname". Wenn es unbedingt "sn" sein soll, dann muss die Abfrage lauten
Get-ADUser -Filter * -SearchBase "OU=Test,DC=abc,DC=DE" -properties sn  

Alles andere ist dann Handwerk. Natürlich musst Du z.B. filtern, ob ein Benutzerobjekt überhaupt die Attribute "givenname" und "sn" hat. Das ist nicht selbstverständlich so.

Mach doch erst einmal einfach einen Test:
Get-ADUser -Filter * -SearchBase "OU=Test,DC=abc,DC=DE" | ForEach-Object {$_.GivenName + "." + $_.sn + "@xyz.de"}  
Warum gleich Feuer machen wollen, wenn das Holz noch nicht gehackt ist.
Kileo20
Kileo20 14.02.2021 aktualisiert um 22:15:48 Uhr
Goto Top
Hab den Dreh raus, das -add durch -replace ersetzen, dann wird vor-.Nachname@domain.com ins Feld eingetragen

Danke Emeriks für deine Unterstützung