ralfkausk
Goto Top

Powershell: Vernüftige Ausgabe der Daten

Hallo zusammen

Ich brauche mal ein wenig Unterstützung.
Ich muss Daten aus dem AD Abgreifen, und das mache ich mit der Powershell.
Die MS Powershell AD Erweiterungen sind installiert und aktiviert.

Leider bekomme ich die Ausgabe nicht vernünftig hin, kann mir jemand einen Tipp geben
Hier mal der Quelltext und die Ausgabe

$s = "S-1-5-21-2609109458-1693113883-1907973627-10731"  
$f = (Get-ADForest).Domains


foreach ($d in $f) {
    Try { $u = Get-ADUser -Server $d -LDAPFilter "(objectsid=$s)" -Properties * }  
    Catch {}
    $samaccountname = ($u).samaccountname
    $userprincipalname = ($u).userprincipalname
    $objectsid = ($u).objectsid
    Write-Host "$samaccountname;$userprincipalname;$objectsid"  
    }

[Ausgabe]
;;
;;
;;
Vorname.Nachname;Vorname.Nachname@xxx.com;S-1-5-21-2609109458-1693113883-1907973627-10731

In diesem Fall gibt werden vier (4) Domänen abgefragt.
Von der Domäne in der die SID gefunden wird bekomme ich eine vernünftige Ausgabe.
Dummerweise bekomme ich auch eine Ausgabe von den Domänen in denen die SID nicht gefunden wird.
Wie kann ich das unterdrücken?

Systeminfo:
Windows Server 2008 via Citrix

Powershell:
Name Value
-----
PSVersion 3.0
WSManStackVersion 3.0
SerializationVersion 1.1.0.1
CLRVersion 4.0.30319.42000
BuildVersion 6.2.9200.16398
PSCompatibleVersions {1.0, 2.0, 3.0}
PSRemotingProtocolVersion 2.2


Danke im voraus
Ralf

Content-Key: 357563

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

Ausgedruckt am: 29.03.2024 um 00:03 Uhr

Mitglied: ralfkausk
ralfkausk 08.12.2017 um 11:49:11 Uhr
Goto Top
Hat sich erledigt, mir ist gerade eine Lösung eingefallen

$s = "S-1-5-21-2609109458-1693113883-1907973627-10731"  
$f = (Get-ADForest).Domains
cls
foreach ($d in $f) {
    $u = Get-ADUser -Server $d -LDAPFilter "(objectsid=$s)" -Properties *  
    if ( ($u).CanonicalName -match $d ) {
        $samaccountname = ($u).samaccountname
        $userprincipalname = ($u).userprincipalname
        $objectsid = ($u).objectsid
        Write-Host "$samaccountname;$userprincipalname;$objectsid"  
        }
    }

Wenn ich das durch die "if-Schleife" schicke bekmme ich nur eine Ausgabe wenn Daten enthalten sind.
Mitglied: 134464
134464 08.12.2017 aktualisiert um 12:19:57 Uhr
Goto Top
Ich würde das stattdessen schöner so schreiben:
$sid = "S-1-5-21-2609109458-1693113883-1907973627-10731"   
(Get-ADForest).Domains | %{Get-ADUser -Server $_ -LDAPFilter "(objectsid=$s)" -Properties UserPrincipleName,ObjectSid -EA Ignore | select SamAccountName,UserPrincipleName,ObjectSid} | Export-CSV .\Daten.csv -Delimiter ";" -NoType -Encoding UTF8