winlin
Goto Top

Get AD User from different OU

Hallo zusammen,

wenn ich mit Get-ADUser USERNAME suche dann such er ja nur in dem DC und einer OU - wohl i nder wo ich drin bin....
Wenn ich aber einen User suche der z.b. in Asien ist die haben ne andere OU.
DC is ja immer gleich.

Wie finde ich dann die Userdetails???

Content-ID: 2052151054

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

Ausgedruckt am: 05.11.2024 um 14:11 Uhr

em-pie
em-pie 03.03.2022 um 16:41:34 Uhr
Goto Top
Zitat von @winlin:

Hallo zusammen,

wenn ich mit Get-ADUser USERNAME suche dann such er ja nur in dem DC und einer OU - wohl i nder wo ich drin bin....
ähh... nein. wenn du Get-ADUser [Username] eintippst, der ja Unique ist, sollte er genau diesen User anzeigen, egal in welcher OU er steckt (soeben getestet)

Wenn ich aber einen User suche der z.b. in Asien ist die haben ne andere OU.
DC is ja immer gleich.
Und die Asiaten nutzen den selben DC wie ihr?
Oder haben die vor Ort einen eigenen DC bzw. habt betreibt ihr ein AD-Forest alá europa.company.com, asien.company.com, ...

Wie finde ich dann die Userdetails???
mit Get-ADUser face-wink
winlin
winlin 08.03.2022 um 15:15:10 Uhr
Goto Top
Also wenn ich meinen USer der in DE drin ist mit Get-ADUser suche bekomme ich das:
DistinguishedName : CN=ABCDE3,OU=C,OU=Useraccounts,OU=Fe,DC=de,DC=firma,DC=com
Enabled           : True
GivenName         : Max
Name              : ABCDE3
ObjectClass       : user
ObjectGUID        : 21fcb81d-0a69-4dc4-9fb4-be24e24eb906
SamAccountName    : ABCDE3
SID               : S-1-5-21-220523388-115176313-1801674531-1827011
Surname           : Mustermann
UserPrincipalName : ABCDE3@firma.com

Wenn ich aber einen anderen user suche der in einer anderen Domäne steckt muss ich das so machen:
Get-ADUser -identity GOL56TA -server emea.firma.com

Ausgabe:
DistinguishedName : CN=GOL56TA ,OU=G,OU=Useraccounts,OU=Cky,DC=emea,DC=firma,DC=com
Enabled           : True
GivenName         : Mark
Name              : GOL56TA 
ObjectClass       : user
ObjectGUID        : f002f9dc-0f7a-4e96-81db-2ddd034f4d84
SamAccountName    : GOL56TA 
SID               : S-1-5-21-377891251-1475643905-1959494604-1308602
Surname           : Mustermann
UserPrincipalName : GOL56TA @firma.com
em-pie
em-pie 08.03.2022 um 16:05:09 Uhr
Goto Top
DAS ist aber nicht nur eine andere OU sondern ein anderes AD/ eine anderr AD-Zweig.
Das macht ja einen himmelweiten Unterschied.
1915348599
1915348599 08.03.2022 aktualisiert um 16:18:56 Uhr
Goto Top
Zitat von @em-pie:

DAS ist aber nicht nur eine andere OU sondern ein anderes AD/ eine anderr AD-Zweig.
Das macht ja einen himmelweiten Unterschied.
Eben, per Default sucht Get-ADUser nur in der aktuellen Domain ... so works as designed.

https://docs.microsoft.com/en-us/powershell/module/activedirectory/get-a ...

The default value for the Server parameter is determined by one of the following methods in the order that they are listed:
By using Server value from objects passed through the pipeline.
By using the server information associated with the Active Directory PowerShell provider drive, when running under that drive.
By using the domain of the computer running PowerShell.

RTFM ...
winlin
winlin 08.04.2022 um 12:38:36 Uhr
Goto Top
Wie suche ich über die Powershell Benutzer im "Entire Directory" ???
Über Windows AD Search kann ich da die OU´s angeben aber auch entire directory....

get-aduser -identity ADUSER -SearchBase ?????
1915348599
1915348599 08.04.2022 aktualisiert um 13:03:14 Uhr
Goto Top
Zitat von @winlin:

Wie suche ich über die Powershell Benutzer im "Entire Directory" ???
Über Windows AD Search kann ich da die OU´s angeben aber auch entire directory....

get-aduser -identity ADUSER -SearchBase ?????

-Searchbase Parameter weglassen dann sucht er automatisch in der gesamten aktuellen Domain bzs.w dem default naming context, und der ist dann der Root der aktuellen Domain. "DC=MYDOMAIN,DC=tld"

RTFM! Get-ADUser
winlin
winlin 08.04.2022 um 13:29:45 Uhr
Goto Top
habe es so gemacht:
Get-ADUser -Filter {SamAccountName -eq "GEL1KOR"} -Server "$((Get-ADDomainController).Name):3268"  

das hat geklappt....

Aber nun habe ich ein Problem mit dem Script hier:

(Get-Content U:\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\USER\Desktop\result.csv"  

Dieses script nutzt eine users.txt in welcher nur eine email-adresse steht. Dann wird eine result.csv erstellt wo noch zusätzlich zur Mailadresse auch noch die NTID/UPN steht getrennt mit einem leerzeichen.

ABER er macht das nur für users die in meiner OU sind....Wie ändere ich das Skript ab damit er den ganzen GlobalCatalog durchsucht, also wie oben???
winlin
winlin 08.04.2022 um 13:42:39 Uhr
Goto Top
habe es so versucht, es kommt zwar kein FEhler aber in der REsult.csv sehe ich nur die User ausdem EMEA Forest aber nicht die in APAC:

(Get-Content U:\users.txt | ForEach-Object{Get-ADUser -Filter "Mail -eq '$_'" -Properties Mail,UserPrincipalName -Server "$((Get-ADDomainController).Name):3268"} | Select mail,UserPrincipalName | convertto-csv -Delimiter ";" -NoTypeInformation | select -skip 1) -replace '"' | set-content "C:\Users\USERS\Desktop\result.csv"  
winlin
winlin 08.04.2022 um 14:10:18 Uhr
Goto Top
ahhh okay also so klappt es - hat nur ein weilchen gedauert:

(Get-Content U:\users.txt | ForEach-Object{Get-ADUser -Filter "Mail -eq '$_'" -Properties Mail,UserPrincipalName -Server "$((Get-ADDomainController).Name):3268"} | Select mail,UserPrincipalName | convertto-csv -Delimiter ";" -NoTypeInformation | select -skip 1) -replace '"' | set-content "C:\Users\USER\Desktop\result.csv"  
winlin
winlin 27.04.2022 um 11:10:51 Uhr
Goto Top
Hallo Zusammen,

ich habe ja mit dem Skript das so hinbekommen wie ich es eigentlich wollte. Mein Problem ist nur das in meiner users.txt Datei Emailadressen drin sind wo einige mit Gross und einige mit Kleinbuchstaben anfangen. DAs liegt daran das ich in der source app wo ich die users.txt auslese ein linux system ist. Fragt mich aber nicht wieso das so ist.

Mein Problem ist aber nun das wenn ich das Skript ausführe ich zwar das gewünschte ergebnis bekomme - das skript aber alle mailadressn mit Gross Anfangsbuchstaben anlegt. Ich bräuchte es aber so wie es in der users.txt steht. Kann man da was machen das die emailadresse in der result datei so sind wie in der users Datei??
em-pie
em-pie 27.04.2022 um 11:21:43 Uhr
Goto Top
Moin,

ja, das geht.

du müsstest in deinem piped Select statt "mail" eine benutzerdefinierte "Spalte" einsetzen:

(Get-Content U:\users.txt | ForEach-Object{Get-ADUser -Filter "Mail -eq '$_'" -Properties Mail, UserPrincipalName -Server "$((Get-ADDomainController).Name):3268"} |  Select @{Label="mail";Expression={$_.mail.ToLower()}}, UserPrincipalName |  convertto-csv -Delimiter ";" -NoTypeInformation | select -skip 1) -replace '"' |  set-content "C:\Users\USER\Desktop\result.csv"  
winlin
winlin 27.04.2022 um 11:45:49 Uhr
Goto Top
Erstmal vielen Dank für deine Hilfe.

Diese Änderung macht alles auf lowercase. In meinem Fall ist es aber so das ich in der users File Emails habe die upper UND lowercase sind und das auch so bleiben soll in der resultface-smile
winlin
winlin 27.04.2022 um 11:50:17 Uhr
Goto Top
ach ja nochwas...aktuell erhalte ich ja eine csv datei mit:
convertto-csv

Wenn ich eine txt haben möchte ? Ich habe nicht gesehen das es ein
convertto-txt gibt...

Als Ausgabe in dem o.g. skript bekomme ich
vorname.nachname@firma.com ntid@firma.com

zwischen der eamil und der NTID soll es ein "Leerzeichen" geben, mehr nicht.
em-pie
em-pie 27.04.2022 um 11:55:45 Uhr
Goto Top
Zitat von @winlin:

ach ja nochwas...aktuell erhalte ich ja eine csv datei mit:
convertto-csv

Wenn ich eine txt haben möchte ? Ich habe nicht gesehen das es ein
convertto-txt gibt...

Als Ausgabe in dem o.g. skript bekomme ich
vorname.nachname@firma.com ntid@firma.com

zwischen der eamil und der NTID soll es ein "Leerzeichen" geben, mehr nicht.

Das ist einfach. In deinem Script gibst du ja den Dateinamen und das Trennzeichen an:
 .. | convertto-csv -Delimiter ";" ..   
 .. set-content "C:\Users\USER\Desktop\result.csv" ..   

Mache aus dem ; ein Leerzeichen sowie aus der result.csv ein result.txt
 .. | convertto-csv -Delimiter " " ..   
 .. set-content "C:\Users\USER\Desktop\result.txt" ..   

Bei deinem obigen Punkt:
kannst du das erzeugen der user.txt beeinflussen? wenn ja, würde ich hier bereits ein toLower() machen.
ansonsten müsste man da etwas recherchieren, da wäre ich aktuell auch überfragt.
Aber es gibt hier ja zum Glück echte Powersheller face-smile
winlin
winlin 27.04.2022 um 12:04:24 Uhr
Goto Top
hey das is ja einfachface-smile man bin ich blödface-smile sorry für die blöde Frage und danke!!!

Wegen dem ersten Punkt werde ich mal schauen wie ich das hinbekommen könnte, evtl ist hier einer der die Lösung weiss. Leider kann ich die Ausgabe der users.txt nicht beeinflussen.

Ich bekomme dieses File und darin sind eben nur Emailadressen enthalten, manche in upper und manche in lowercase. Und in der result Datei sollte das auch so bleiben, nur leider ändert das o.g. script die emailadressen auf lower case.

Cool wäre es wenn die Grossund Kleinschreibung der mailadressen nicht angefasst wirdface-smile