Powershell Vergleichen Name u Vorname mit Active Directory
Moin moin zusammen,
vielleicht hat hier ja einer eine Idee.
Ich hab eine CSV Datei. Dort gibt es Nachname, Vorname.
Dieses möchte ich mit dem AD vergleichen ob es den Benutzer gibt oder nicht.
Schwierigkeiten:
- Ursprungsliste enthält Umlaute
- Displayname im AD nicht immer gleich Nachname, Vorname
- Nachname und Vorname nicht immer wie in Ursprungsliste geschrieben ( In der CSV mit Umlaut, im AD ohne Umlaut )
- Mehrfach vorhanden eventuell ( müller maier schulz ).
In der Ausgabe CSV soll SamAccountName, Name, EmailAddress, Enabled, LastLogonDate stehen, wenn der Benutzer im AD nicht exisiert, soll dies natürlich auch in der CSV stehen.
Hat jemand ne Idee?
Gruß
Pixel
vielleicht hat hier ja einer eine Idee.
Ich hab eine CSV Datei. Dort gibt es Nachname, Vorname.
Dieses möchte ich mit dem AD vergleichen ob es den Benutzer gibt oder nicht.
Schwierigkeiten:
- Ursprungsliste enthält Umlaute
- Displayname im AD nicht immer gleich Nachname, Vorname
- Nachname und Vorname nicht immer wie in Ursprungsliste geschrieben ( In der CSV mit Umlaut, im AD ohne Umlaut )
- Mehrfach vorhanden eventuell ( müller maier schulz ).
In der Ausgabe CSV soll SamAccountName, Name, EmailAddress, Enabled, LastLogonDate stehen, wenn der Benutzer im AD nicht exisiert, soll dies natürlich auch in der CSV stehen.
Hat jemand ne Idee?
Gruß
Pixel
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 330803
Url: https://administrator.de/contentid/330803
Ausgedruckt am: 24.11.2024 um 12:11 Uhr
5 Kommentare
Neuester Kommentar
Mach einfach per Where-Object einen Vergleich von Vor- und Nachname (dafür gibt es separate FelderSurname und GivenName, verknüpfe diese Abfrage mit einem oder und teste dann erneut mit den Name bei denen du zusätzlich äöü ersetzt via -replace.
Gruß
Gruß
$csv = Import-CSV 'C:\users.csv' -Delimiter ";"
$aduser = Get-ADUser -Filter * -Properties Surname,Givenname,LastLogonDate,EmailAddress,Enabled
function Umlaute-Ersetzen([string]$text){
return [regex]::Replace($text,'(?i)[äöüß]',{param($m) switch -CaseSensitive ($m){'ä'{'ae'};'ü'{'ue'};'ö'{'oe'};'ß'{'ss'};'Ä'{'Ae'};'Ü'{'Ue'};'Ö'{'Oe'}}})
}
$csv | %{
$sn = $_.Nachname
$gn = $_.Vorname
$user = $aduser | ?{($_.Surname -eq $sn -and $_.GivenName -eq $gn) -or ($_.Surname -eq (Umlaute-Ersetzen $sn) -and $_.GivenName -eq (Umlaute-Ersetzen $gn))}
if($user){$user}else{[pscustomobject]@{SamAccountName="-NONEXISTENT-";Name="$sn,$gn"}}
} | select SamAccountName,Name,EmailAddress,Enabled,LastLogonDate | export-csv .\result.csv -Delimiter ";" -Notype -Encoding UTF8
Guten Morgen
Hab schon ein fertiges Script, das genau das macht
https://www.itnator.net/import-userlist-activedirectory/
Gruß Joe
Edit: naja, vielleicht nicht genau das, aber lässt sich ja relativ leicht umbauen
Hab schon ein fertiges Script, das genau das macht
https://www.itnator.net/import-userlist-activedirectory/
Gruß Joe
Edit: naja, vielleicht nicht genau das, aber lässt sich ja relativ leicht umbauen
Na dann bitte auch als gelöst markieren.