woraxor
Goto Top

Import EmployeeNumber von CSV in AD

Hallo Zusammen,

ich stocke etwas mit der Aufgabe, die EmployeeNumbers in unserem AD mit einem Powershellskript zu aktualisieren.
Ich habe die Daten per .csv Datei bekommen und soweit vorbereitet, das innerhalb der Spalte A der UserprincipalName und in
Spalte B die EmployeeNumber steht.
Jetzt möchte ich anhand des Userprincipalnames die EmployeeNumber in den Attributen aktualisieren.

Folgenden Skript habe ich getestet:
$users=Import-CSV c:\install\Nummer_test.csv
foreach($user in $users){
Get-Aduser $user.UserPrincipalName | set-aduser -employeenumber $user.employeeNumber
}

Ich bekomme folgenden Fehler:

Get-ADUser : Das Argument für den Parameter "Identity" kann nicht überprüft werden. Das Argument ist NULL, oder ein Element der Argumentauflistung enthält einen
NULL-Wert.
In Zeile:4 Zeichen:12

back-to-topGet-Aduser $user.UserPrincipalName | set-aduser -employeeid $user.emp ...

back-to-top~~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo : InvalidData: (face-smile [Get-ADUser], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.GetADUser

Vielleicht hat jemand von euch eine Idee, wie ich weiterkomme..

Viele Grüße

Content-ID: 3510944889

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

Ausgedruckt am: 22.11.2024 um 05:11 Uhr

MrCount
MrCount 01.08.2022 um 08:55:36 Uhr
Goto Top
Servus,

versuche es mal mit -Replace

set-aduser -Identity $user.UserPrincipalName -Replace @{employeeID=$user.employeeNumber}
SlainteMhath
SlainteMhath 01.08.2022 um 09:24:06 Uhr
Goto Top
Moin,

liest sich für mich, als hätte $user.UserPrincipalName keinen Wert. Lass dir die Variable doch mal ausgeben, evtl ist dein CSV einfach nicht korrekt.

lg,
Slainte
Woraxor
Woraxor 01.08.2022 um 09:29:38 Uhr
Goto Top
Servus,

mit Replace gab es keinen Fehler mehr, die employeeID hat er aber leider nicht ersetzt face-confused

VG
Woraxor
Woraxor 01.08.2022 um 09:30:35 Uhr
Goto Top
Moin,

Jup, genau da hänge ich gerade -> warum er mir keinen Wert einliest.

Aufbau der CSV:
userprincipalname;employeenumber
user.test@company.com;003

sollte ja eigentlich funktionieren...

VG
SlainteMhath
SlainteMhath 01.08.2022 um 09:55:45 Uhr
Goto Top
Sind die "Feldnamen" bei Import-CSV evtl. case-sensitive?
3479126418
Lösung 3479126418 01.08.2022 aktualisiert um 10:13:56 Uhr
Goto Top
Kein Wunder...Erste Zeile, Angabe des Delimiters bei Import-CSV fehlt !
Gibt man den nämlich nicht an verwendet die PS das Komma als Delimiter und dann ist klar das der Rest fehl schlägt!
$users = Import-CSV c:\install\Nummer_test.csv -Delimiter ";"  
Woraxor
Woraxor 01.08.2022 um 10:08:32 Uhr
Goto Top
Nach Recherche ist das Value nicht Case sensitive.

VG
3479126418
3479126418 01.08.2022 aktualisiert um 10:23:03 Uhr
Goto Top
S.o. mein Kommentar, der Delimiter fehlt!
Woraxor
Woraxor 01.08.2022 um 13:35:10 Uhr
Goto Top
Moin Bangalore,

das stimmt, der Delimiter hat gefehlt face-smile

usersCSV=Import-Csv c:\install\Nummer_test.csv -Delimiter ";"  
foreach($user in $usersCSV){
Get-Aduser -Filter {UserPrincipalName -eq $User.UserprincipalName}  | set-aduser -employeenumber $user.employeeNumber
}

Jetzt habe ich nur das Problem, das er die Variable $User.UserprincipalName als String einliest. Mit ausgeschriebenen test werten funktioniert es soweit. Nur wie kann ich jetzt ein Variable als String einlesen lassen?

Vielen Dank für eine erneute Hilfestellung face-smile

Viele Grüße
3479126418
Lösung 3479126418 01.08.2022 aktualisiert um 13:38:04 Uhr
Goto Top
Nur wie kann ich jetzt ein Variable als String einlesen lassen?
Das ist per Default der Fall, aber so wie du es im Filter nutzt geht es aber nicht wegen dem Variable-Scope im Filter, so schon
Get-Aduser -Filter "UserPrincipalName -eq '$($user.UserprincipalName)'"  
Woraxor
Woraxor 01.08.2022 um 13:45:45 Uhr
Goto Top
Danke für die Erklärung, wieder eine Menge gelernt face-smile

Viele Grüße