pikachu750
Goto Top

Powershell Script so abändern, dass er alle AD-User nacheinander abfragt

Guten Tag zusammen,

Habt ihr vielleicht eine Idee, wie ich dieses Powershell Script so abändern kann, dass er nicht nur den einen User "username" und dessen Gruppen aufführt, sondern einfach Alle AD User allgemein.

Import-Module ActiveDirectory
Add-Type -AssemblyName System.DirectoryServices.AccountManagement
#$username = Get-ADUser -filter {SamAccountName -like "*"} funktioniert noch nicht (die User müssten nacheinander abgefragt werden) 
$username = "Username"  
$ct = [System.DirectoryServices.AccountManagement.ContextType]::Domain
$user = [System.DirectoryServices.AccountManagement.UserPrincipal]::FindByIdentity($ct, $username)
$groups = $user.GetGroups() 
foreach ($i in $groups)
{
$user.name+";"+$i  
}

Ich hoffe ihr habt eine Idee !

Content-ID: 267855

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

Ausgedruckt am: 25.11.2024 um 17:11 Uhr

colinardo
colinardo 30.03.2015 aktualisiert um 12:33:47 Uhr
Goto Top
Moin,
da reicht ein Einzeiler face-wink
get-aduser -Filter * -properties MemberOf | ft SamAccountName,MemberOf -AutoSize -Wrap
Grüße Uwe
Pikachu750
Pikachu750 30.03.2015 um 12:56:04 Uhr
Goto Top
Ist es denn auch möglich in der csv Ausgabe die Syntax anzupassen?
get-aduser -Filter * -properties MemberOf | ft SamAccountName,MemberOf -AutoSize -Wrap >>test.csv

Syntax in der CSV aktuell:
username {CN=xxx,OU=xxx,DC=xxx,CN=xxx2,OU=xxx2,DC=xxx}

am besten wäre: (Gruppe Ohne "CN=")

username1, Nachname, Vorname ; Gruppe
username1, Nachname, Vorname ; Gruppe2
username1, Nachname, Vorname ; Gruppe3
username2, Nachname, Vorname ; Gruppe
username2, Nachname, Vorname ; Gruppe2


Mein oberes Script schafft dies schon quasi beinahe perfekt. Nur kann ich nicht mehrere bzw alle user damit abfragen
colinardo
Lösung colinardo 30.03.2015 aktualisiert um 13:28:38 Uhr
Goto Top
get-aduser -Filter * -properties Memberof,PrimaryGroup | ft SamAccountName,Surname,Givenname,@{n='Gruppen';e={$g=$_.memberof;$g+=$_.Primarygroup;($g | %{($_ -split '=|,')[1]}) -join ","}} -AutoSize -Wrap  
Das ganze kannst du dann beispielsweise auch direkt als CSV exportieren
$data = get-aduser -Filter * -properties Memberof,PrimaryGroup | select SamAccountName,Surname,Givenname,@{n='Gruppen';e={$g=$_.memberof;$g+=$_.Primarygroup;($g | %{($_ -split '=|,')[1]}) -join ","}}  
$data | export-csv "C:\temp\usergruppen.csv" -Delimiter ";" -Encoding UTF8  
Pikachu750
Pikachu750 30.03.2015 um 13:31:09 Uhr
Goto Top
Das sieht schon sehr gut aus!
Danke bis hierhin schon mal !

Syntax ist nun

Username1 Vorname1 Nachname1 Gruppe1;Gruppe2;Gruppe3;Gruppe4;


optimal wäre:

Username1,Vorname1,Nachname1 ; Gruppe1
Username1,Vorname1,Nachname1 ; Gruppe2
Username1,Vorname1,Nachname1 ; Gruppe3
Username1,Vorname1,Nachname1 ; Gruppe4
colinardo
Lösung colinardo 30.03.2015 aktualisiert um 14:44:43 Uhr
Goto Top
optimal wäre:
Na dann:
$data = @()
get-aduser -Filter * -properties Memberof,PrimaryGroup | %{
    $groups=$_.memberof; $groups+=$_.Primarygroup
    foreach($group in $groups){
        $groupname = ($group -split "[=,]")[1]  
        $data += $_.SamAccountname + "," + $_.Surname + "," + $_.Givenname + "," + $groupname  
    }
}
$data
Grüße Uwe
Pikachu750
Pikachu750 30.03.2015 um 14:33:31 Uhr
Goto Top
Du bist ein Gott face-smile
Vielen Dank !