2016-06-08 14 views
1

Ich habe Liste der Konten, wie unten in einem Text File-Wie trennt man Benutzer und Gruppen von der Liste der AD-Konten?

AccountName 
Mahin\user1 
Mahin\user2 
Mahin\group5 
user12 
usert1 
groupt3 

Auf diese Weise habe ich rund 400 Konten (Mischung aus verschiedenen Benutzern und einige Gruppen), wie man es von oben sehen können, einige Konten Format wie <Domain>\<AccountName> und einige mit nur <AccountName>.

Ich habe versucht, einen Weg zu finden, Benutzer und Gruppen von dieser Liste zu trennen, Wie erreiche ich das mit Powershell?

die Suche nach so etwas wie

AccountName, IsUser, IsGroup, IsExists 
Mahin\user1,1,0,1 
Mahin\user2,1,0,1 
Mahin\group5,0,1,1 
user12,1,0,1 
usert1,,,0  //-> This Account DOES NOT EXIST, so, IsUser, IsGroup and IsExists (0) can be empty or some distiguishable number 
groupt3,,,0 //-> This Account DOES NOT EXIST, so, IsUser, IsGroup and IsExists (0) can be empty or some distiguishable number 

Bisher weiß ich, wie die Mitglieder der verschiedenen Gruppen unter Skript zu bekommen, aber von oben Teil nicht sicher.

$groups = Get-Content "C:\AD\groups.txt" 
$resultsarray [email protected]() 
foreach ($group in $groups) { 
    $resultsarray += Get-ADGroupMember -Id $group | select  
    samaccountname,name,@{Expression={$group};Label="Group Name"} 
} 
$resultsarray| Export-csv -path "C:\AD\output\GroupMembers.csv" -notypeinformation 
+0

Bitte zeigen Sie uns die volle erwartete Ausgabe für Ihr Beispiel (z. B. Mahin \ user1, Mahin \ group5) –

+0

Hallo Jisaak, bitte überprüfen Sie die aktualisierte –

Antwort

2

Hinweis: Im nicht sehr vertraut mit den Active Directory Cmdlets, gibt es wahrscheinlich eine bessere Lösung.

Allerdings würde ich alle Benutzer und Gruppen abrufen zuerst, dann die Textdatei iterieren und versuchen, jeden Benutzer oder eine Gruppe zu finden:

$users = Get-ADUser -filter * 
$groups = Get-ADGroup -filter * 

Get-Content 'YOUR_FILE_PATH'| ForEach-Object { 
    $adObject = $_ -replace '(.*)\\(.*)', '[email protected]$1' # fix search string 

    if ($users | Where { $_.SamAccountName -eq $adObject -or 
     $_.UserPrincipalName -like "$adObject*"}) 
    { 
     [PSCustomObject]@{ 
      AccountName = $_ 
      IsUser = $true 
      IsGroup = $false 
      Exist = $true 
     } 
    } 
    elseif ($groups | Where Name -eq $adObject) 
    { 
     [PSCustomObject]@{ 
      AccountName = $_ 
      IsUser = $false 
      IsGroup = $true 
      Exist = $true 
     } 
    } 
    else 
    { 
     [PSCustomObject]@{ 
      AccountName = $_ 
      IsUser = $false 
      IsGroup = $false 
      Exist = $false 
     } 
    } 
} | Export-csv -path "C:\output\GroupMembers.csv" -notypeinformation 

Auf meinem AD Ich habe Mahin\group5-[email protected] zu transformieren und die Suche nach [email protected]*, deshalb ersetze ich die Zeichenfolge innerhalb des Skripts.

+0

Vielen Dank Jisaak! Wie können wir das Ergebnis in die CSV-Datei exportieren? Kann ich diese Zeile zum Skript hinzufügen? "$ adObject | Export-csv -pfad" C: \ output \ GroupMembers.csv "-notypinformation" –

+0

Fügen Sie einfach '| hinzu Export-csv -Pfad "C: \ output \ GroupMembers.csv" -Notinformation "direkt nach der letzten geschweiften Klammer –

+0

Es wirft Syntaxfehler, wenn ich diese Zeile nach der letzten geschweiften Klammer hinzufügen –