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-Key: 267855

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

Printed on: April 24, 2024 at 23:04 o'clock

Member: colinardo
colinardo Mar 30, 2015 updated at 10:33:47 (UTC)
Goto Top
Moin,
da reicht ein Einzeiler face-wink
get-aduser -Filter * -properties MemberOf | ft SamAccountName,MemberOf -AutoSize -Wrap
Grüße Uwe
Member: Pikachu750
Pikachu750 Mar 30, 2015 at 10:56:04 (UTC)
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
Member: colinardo
Solution colinardo Mar 30, 2015 updated at 11:28:38 (UTC)
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  
Member: Pikachu750
Pikachu750 Mar 30, 2015 at 11:31:09 (UTC)
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
Member: colinardo
Solution colinardo Mar 30, 2015 updated at 12:44:43 (UTC)
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
Member: Pikachu750
Pikachu750 Mar 30, 2015 at 12:33:31 (UTC)
Goto Top
Du bist ein Gott face-smile
Vielen Dank !