winlin
Goto Top

AD Userabfrage mit Output in Datei

Hallo Zusammen,

ich möchte gerne eine User AD Abfrage machen und den SAM Accountnamen in eine Datei exportieren was ich hiermit mache:

Get-Content C:\Users\TNJUUP3\Desktop\users.txt | 
ForEach-Object{Get-ADUser -Filter "Mail -eq '$_'"} |  
Select-Object SamAccountName | Convertto-CSV -NoTypeInformation | foreach { $_.replace('"', "") } | Out-File -FilePath C:\Users\TNJUUP3\Desktop\result.txt  

Die users.txt:
vorname.nachname@de.firma.com

Das Ergebnis ist dann:
SamAccountName
TNJUUP3
CVM4RT
GJHII0


Ich würde gerne die result.txt ohne SamAccountName haben wollen und noch @firma.com hinzufügen.

Es soll dann lediglich so aussehen:
TNJUUP3@firma.com
CVM4RT@firma.com
GJHII0@firma.com

Wie muss ich den o.g. Code abändern?
Lieben Dank schon mal im voraus!

Content-ID: 1970317611

Url: https://administrator.de/forum/ad-userabfrage-mit-output-in-datei-1970317611.html

Ausgedruckt am: 22.12.2024 um 23:12 Uhr

Doskias
Doskias 21.02.2022 aktualisiert um 15:22:59 Uhr
Goto Top
Moin,

dein "Problem" ist, ein Export zur CSV, wobei der erste Eintrag immer die Überschrift ist. Du musst also ein Export zur CSV ohne Überschrift durchführen. Sehr gut hier beschrieben:
https://stackoverflow.com/questions/26389952/powershell-export-csv-with- ...

Gruß
Doskias

Nachtrag: Den Ursprungsposting Grundlegend zu ändern ist nicht nett face-wink Zuerst hattest du noch ein export-csv verwendet
1915348599
1915348599 21.02.2022 aktualisiert um 15:26:30 Uhr
Goto Top
Get-Content C:\Users\TNJUUP3\Desktop\users.txt | ForEach-Object{Get-ADUser -Filter "Mail -eq '$_'"} | Select -Expand SamAccountName | set-content  C:\Users\TNJUUP3\Desktop\result.txt  
Es soll dann lediglich so aussehen:
TNJUUP3@firma.com
CVM4RT@firma.com
GJHII0@firma.com
Das sind dann aber keine SamAccountNames mehr sondern Mail-Adressen...und die hast du ja schon in der Textdatei 🤪
winlin
winlin 21.02.2022 um 15:24:12 Uhr
Goto Top
ahaaa okayface-smile habe das wie oben beschrieben nun gemacht - hat das selbe ergebnis. Habe ich im Nachhinein noch geändertface-smile

Jetzt muss ich nur noch SamAccountName am anfang der rresult.txt entfernen und zu jeder NTID moch @firma.com hinzufügen. Wie wäre das am einfachsten machbar? Sorry bin leider kein ps profiface-smile
Doskias
Doskias 21.02.2022 um 15:24:53 Uhr
Goto Top
Warum fragst du nicht gleich die Mail-Adresse aus dem AD ab, anstatt dem SAMACCOUNTNAME?
winlin
winlin 21.02.2022 um 15:30:33 Uhr
Goto Top
Also ich möchte aus einer Liste von EmailAdressen den UPN (NTID) herausbekommen. Mir steht eine users.txt mit vielen mailadressen zur Verfügung und ich möchte am Ende eine Liste haben mit den UPN (=upn@firma.com).

Hier z.b. die Ausgabe get-aduser TNJUUP3:
DistinguishedName : CN=TNJUUP3,OU=C,OU=Useraccounts,OU=Le,DC=de,DC=firma,DC=com
Enabled           : True
GivenName         : Manfred
Name              : TNJUUP3
ObjectClass       : user
ObjectGUID        : 21fcb81d-0a69-4dc4-9fb4-be24e24eb906
SamAccountName    : TNJUUP3
SID               : S-1-5-21-220523388-115176313-1801674531-1827011
Surname           : Maier
UserPrincipalName : TNJUUP3@firma.com
winlin
winlin 21.02.2022 aktualisiert um 15:33:56 Uhr
Goto Top
am besten wäre es wenn der output eine csv datei ist wo dann die emailadresse steht und zusätzlich im zweiten feld die UPN
vorname.nachname@de.firma.com    TNJUUP3@firma.com
winlin
winlin 21.02.2022 um 15:35:42 Uhr
Goto Top
Im Endeffekt habe ich wie erwähnt eine users.txt mir emailadressen (vorname.nachname@de.firma.com) und die CSV Ausgabedatei sollte in zwei seperaten Feldern die mailadress sowie den upn haben.
Doskias
Doskias 21.02.2022 um 15:43:02 Uhr
Goto Top
Hmm.. und wo ist jetzt das Problem?
get-content auf die user.txt
foreach-Schleife
get-aduser wobei der Eintrag aus der user.txt als mail verwendest und dann mittels select-object die beiden Spalten auswählen, die du brauchst.

Bewusst umschrieben und kein Code face-wink
1915348599
Lösung 1915348599 21.02.2022 aktualisiert um 15:48:24 Uhr
Goto Top
Zitat von @winlin:

Im Endeffekt habe ich wie erwähnt eine users.txt mir emailadressen (vorname.nachname@de.firma.com) und die CSV Ausgabedatei sollte in zwei seperaten Feldern die mailadress sowie den upn haben.

Dann schreib das doch gleich so mönsch Meier ...🙈
Get-Content C:\Users\TNJUUP3\Desktop\users.txt | ForEach-Object{Get-ADUser -Filter "Mail -eq '$_'" -Properties Mail,UserPrincipalName} | Select mail,UserPrincipalName | export-csv 'C:\Users\TNJUUP3\Desktop\result.txt' -Delimiter ";" -NoTypeInformation -Encoding UTF8  
Oder wenn's ohne Überschriften und Quotes sein soll
(Get-Content C:\Users\TNJUUP3\Desktop\users.txt | ForEach-Object{Get-ADUser -Filter "Mail -eq '$_'" -Properties Mail,UserPrincipalName} | Select mail,UserPrincipalName | convertto-csv -Delimiter ";" -NoTypeInformation | select -skip 1) -replace '"' | set-content "C:\Users\TNJUUP3\Desktop\result.txt"  
winlin
winlin 21.02.2022 um 15:53:02 Uhr
Goto Top
ahhhhh suppperrface-smile
mensch Meierface-smile
Dankeeeeee