Liste mit Nachnamen - per PS Skript sollen daraus die SamAccountName ausgelesen werden
Hallo zusammen,
ich dachte das so die SamAccountname ermittelt werden kann, aber irgendwie klappt das nicht.
Aus der Liste wird nur ein einziger NAme ermittelt. Das stimmt aber nicht.
Was mache ich da falsch?
Gruß
Heiko
1
2
3
4
5
2
3
4
5
$users = Get-Content "C:\user.txt"
foreach ($user in $users){
Get-ADUser -Filter "Name -eq '$user'" | Select-Object name, samaccountname
}
Aus der Liste wird nur ein einziger NAme ermittelt. Das stimmt aber nicht.
Was mache ich da falsch?
Gruß
Heiko
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 255252
Url: https://administrator.de/forum/liste-mit-nachnamen-per-ps-skript-sollen-daraus-die-samaccountname-ausgelesen-werden-255252.html
Ausgedruckt am: 15.04.2025 um 16:04 Uhr
10 Kommentare
Neuester Kommentar
Moin Heiko,
wenn du Nachnamen in deiner Textdatei stehen hast ist das Feld Name suboptimal nehme dazu im Filter Surname = Nachname.
Ansonsten hast du eventuell abschließende oder vorausgehende Leerzeichen in deiner Textdatei, die du dann noch mit trim() entfernen müsstest, denn bei -eq muss der Nachname exakt übereinstimmen (bis auf Groß- und Kleinschreibung, welche hier egal ist)
Grüße Uwe
wenn du Nachnamen in deiner Textdatei stehen hast ist das Feld Name suboptimal nehme dazu im Filter Surname = Nachname.
1
Get-ADUser -Filter "Surname -eq '$user'" | Select-Object name, samaccountname
Grüße Uwe
Zitat von @pixel0815:
Es funktioniert. Jetzt wollte ich das ganze noch als csv raushauen aber da kommt gar nix außer die Überschriften?
wohl noch keinen Kaffee gehabt Es funktioniert. Jetzt wollte ich das ganze noch als csv raushauen aber da kommt gar nix außer die Überschriften?
In der Variablen $user steht bei dir nur die Zeile deiner Textdatei, also der Name, sie ist also kein Objekt
Machst du bspw. so:
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
$export = @()
$pathCSV = "C:\Test.csv"
foreach ($user in $users){
Get-ADUser -Filter "Surname -eq '$user'" -Properties Name | %{
$export += New-Object PSObject -Property @{'Name'=$_.Name;'SamAccountName'=$_.samaccountname;}
}
}
$export | export-csv $pathCSV -Delimiter ";" -NoTypeInformation -Encoding UTF8
Wenn ich beim Filter noch den FirstName hinzunehme, wie kann ich das am geschicktesten machen?
Aus der Textdatei eine CSV-Datei machen in der Nachname und Vorname z.B. mit Semikolon getrennt sind:Nachname;Vorname
Mustermann;Max
Musterfrau;Henriette
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
$csvdata = Import-CSV 'C:\Data.csv' -Delimiter ";"
$pathExport = "C:\Export.csv"
$export = @()
foreach ($user in $csvData){
$vorname = $user.Vorname
$nachname = $user.Nachname
Get-ADUser -Filter {(Surname -eq $nachname) -and (GivenName -eq $vorname)} -Properties Name | %{
$export += New-Object PSObject -Property @{'Name'=$_.Name;'Vorname'=$_.GivenName;'SamAccountName'=$_.samaccountname;}
}
}
$export | export-csv $pathExport -Delimiter ";" -NoTypeInformation -Encoding UTF8
Wenns das dann war, den Beitrag bitte noch auf gelöst setzen. Merci. Nicht das das hier wieder zu einem "Multi-Question-Thread" verkommt.
och mönsch, das habe hier im Forum schon so oft gepostet ....
Ausnahmsweise nochmal:
- Powershell - UserID-Liste übergeben und Company Objekt aus AD auslesen und Liste dann speichern
- Bulk User Import aus CSV Datei
Ausnahmsweise nochmal:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
$csvdata = Import-CSV 'C:\Data.csv' -Delimiter ";"
$pathExport = "C:\Export.csv"
$export = @()
foreach ($user in $csvData){
$vorname = $user.Vorname
$nachname = $user.Nachname
$obj = Get-ADUser -Filter {(Surname -eq $nachname) -and (GivenName -eq $vorname)} -Properties Name
if ($obj){
$export += New-Object PSObject -Property @{'Name'=$obj.Name;'Vorname'=$obj.GivenName;'SamAccountName'=$obj.samaccountname;}
} else {
write-host "User '$vorname , $nachname' wurde nicht gefunden!" -ForegroundColor Red
}
}
$export | export-csv $pathExport -Delimiter ";" -NoTypeInformation -Encoding UTF8