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-Key: 649607

Url: https://administrator.de/contentid/649607

Printed on: May 6, 2024 at 07:05 o'clock

Member: emeriks
emeriks Feb 08, 2021 updated at 13:12:15 (UTC)
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.
Member: Kileo20
Kileo20 Feb 08, 2021 at 14:35:26 (UTC)
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
Member: emeriks
emeriks Feb 08, 2021 updated at 15:21:02 (UTC)
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"}}  
Member: Kileo20
Kileo20 Feb 08, 2021 at 15:45:35 (UTC)
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
Member: emeriks
Solution emeriks Feb 08, 2021 at 16:13:10 (UTC)
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.
Member: Kileo20
Kileo20 Feb 14, 2021 updated at 21:15:48 (UTC)
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