2016-06-08 68 views
1

我有如下帳戶列表的文本文件 -如何從AD帳戶列表中分離用戶和組?

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

這樣一來,我身邊有400賬戶(用戶的各種組合和一些團體), 你可以從上面看到,一些賬戶有格式爲<Domain>\<AccountName> 和一些只有<AccountName>

我試圖找到一種方法從這個列表中分離出用戶和組, 我該如何使用PowerShell實現這一目標?

尋找類似

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 

到目前爲止,我知道怎麼去使用下面的腳本不同羣體的成員,但不能確定上述部分。

$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

請向我們展示您的示例(例如Mahin \ user1,Mahin \ group5)的完整預期輸出 –

+0

您好Jisaak,請檢查最新的一個 –

回答

2

注:我不是很熟悉Active Directory Cmdlets,有可能是這個更好的解決方案。

不過,我會檢索所有的用戶和組第一,然後遍歷文本文件,並試圖找到任何用戶或組:

$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 

在我AD我不得不變換Mahin\group5[email protected]和搜索[email protected]*,這就是爲什麼我替換腳本中的字符串。

+0

非常感謝Jisaak!我們如何將結果導出到csv文件?我可以將此行添加到腳本中嗎? 「$ adObject | Export-csv -path」C:\ output \ GroupMembers.csv「-notypeinformation」 –

+0

只需添加'| Export-csv -path「C:\ output \ GroupMembers.csv」-notypeinformation「緊接在最後一個大括號之後 –

+0

如果我在最後一個大括號之後加上那一行,會引發語法錯誤 –

相關問題