pixel0815
Goto Top

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

Content-ID: 330803

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

Ausgedruckt am: 24.11.2024 um 12:11 Uhr

132272
Lösung 132272 01.03.2017, aktualisiert am 02.03.2017 um 14:37:23 Uhr
Goto Top
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ß

$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  
joehuaba
joehuaba 02.03.2017 aktualisiert um 07:12:32 Uhr
Goto Top
Guten Morgen face-smile

Hab schon ein fertiges Script, das genau das macht face-smile
https://www.itnator.net/import-userlist-activedirectory/

Gruß Joe

Edit: naja, vielleicht nicht genau das, aber lässt sich ja relativ leicht umbauen face-smile
pixel0815
pixel0815 06.03.2017 um 09:05:55 Uhr
Goto Top
Guten Morgen cruzer,

wow dankeschön! Ich teste es gerade.
Kann es sein das die Powershell beim CSV Import ein Unicode ooder UTF8 Kodierung ignoriert?
Wenn ich die CSV öffne sehe ich die Zeichen äöüß ganz normal.
Wenn ich jetzt allerdings die Results.csv öffne, sehe ich dort immer ein NOTEXISTENT.
Mache ich da was falsch?

Gruß
PIxel
pixel0815
pixel0815 06.03.2017 um 09:10:57 Uhr
Goto Top
Ach hat sich erledigt. Excel :O) Nun läuft es.
132272
132272 06.03.2017 um 09:19:35 Uhr
Goto Top
Na dann bitte auch als gelöst markieren.