2016-04-27 4 views
0

Was ich jetzt habe, ist ein PS-Skript, das eine Textdatei analysiert. Die Textdatei wird wie folgt strukturiert:Wie kann ich PowerShell verwenden, um einen vollständigen Namen in samaccountname ohne mittlere Initiale zu übersetzen?

John Smith 
Anna Jones 
John Brown 

Das Problem ist, ist der Anzeigename in AD etwas wie folgt aus:

John C. Smith 
Anna G. Jones 
John A. Brown 

Und ich weiß nicht, die Initialen. Ich habe das Skript eingefügt, das ich habe. Es gibt mir den richtigen samaccountname, wenn ich die mittlere Initiale in die Textdatei einfüge. Aber ich kenne die mittleren Initialen dieser Benutzer nicht. Gibt es eine Möglichkeit, den Samaccount-Namen zu erhalten, wenn ich die mittlere Initiale nicht kenne? Übergeben Sie vielleicht einen Platzhalter in die Abfrage?

$users = Get-Content C:\Temp\UserList.txt 

foreach ($user in $users){ 
Get-ADUser -Filter "Name -like '$user'" | Select-Object samaccountname 
} 
+0

arbeiten Sie könnte so etwas wie [das] tun (https://www.powershellgallery.com/packages/ARTools/2016.4.21/Content/Public%5CSearch -ADAccountByName.ps1). –

Antwort

1

so etwas wie dieses kann

$users = Get-Content C:\Temp\UserList.txt 

foreach ($user in $users) { 
    $split = $user.split() 
    $first = $split[0] 
    $last = $split[-1] 
    Get-ADUser -Filter "Name -like '$first*$last'" | Select-Object samaccountname 
} 
+1

Das ist ein guter Ansatz. Ich möchte nur darauf hinweisen, dass Sie möglicherweise eine bessere Leistung erzielen, wenn Sie für Vorname und 'sn' den Namen" Vorname "und" Sn "angeben, mit der Einschränkung, dass dies nicht funktioniert, wenn verschiedene Vornamen verwendet werden (z. B. Spitznamen). 'Get-ADUser -Filter {(gegebener Name -eq $ zuerst) -und (sn -eq $ letzter)} – Thriggle

+0

Das hat sicherlich seinen Zweck erfüllt. Vielen Dank! – Drake

Verwandte Themen