2016-03-02 61 views
1

尋找寫一個PowerShell腳本,將拉動所有的AD用戶,他們的組成員身份和組說明字段。Powershell ALL AD用戶及其組成員身份

我一直在使用兩個腳本來實現這一點,只是在Excel中手動操作它們。任何結合它們的嘗試都會遇到錯誤。

Import-module activedirectory 
$ou ="DC=ptop,DC=loc" 
Get-ADGroup -Filter * -SearchBase $OU | select -expandproperty name | % { 
$group= "$_" 
$result += Get-ADGroupMember -identity "$_" | select @{n="Group";e={$group}},name 
} 



$result | export-csv 'c:\users\membership.csv' -notypeinformation 

和:

Import-Module ActiveDirectory 
$Groups = ForEach ($G in (Get-ADGroup -Filter *)) 
{ 

$UN = Get-ADGroup $G -Properties Description | select name, description 


New-Object PSObject -Property @{ 
Desc=$UN.description 
Name=$UN.name 
} 

} 

$Groups | Export-CSV C:\users\GroupDesc.csv -notypeinformation 
+2

你可能想看看'GET-ADPrincipalGroupMembership' –

+0

@ MathiasR.Jessen我不能確定那是什麼將完成在這裏。他正在從AD查詢中抽取這些組。從用戶角度看,沒有添加「Get-ADPrincipalGroupMembership」,域用戶會丟失。 – Matt

+0

你期望如何處理嵌套數組?如果一個人分成5組,你想讓他們的名字出現5次,每組有一次?你打算獲得嵌套的羣組信息(即用戶A是Group1的成員,Group1是Group2的成員,Group2是否應該顯示給用戶A?) – TheMadTechnician

回答

1

我希望我有這個權利,這將拉動從AD的所有用戶,並獲得組,每組一個是(包括組描述)的成員。一切完成後,它將信息放入csv中。

Import-Module ActiveDirectory 

$OU = "DC=ptop,DC=loc" 

#$allUsers = Get-ADUser -LDAPFilter "(&(objectCategory=person)(objectClass=user)(!userAccountControl:1.2.840.113556.1.4.803:=2))" # all users that are enabled 
#$allUsers = Get-ADUser -Filter * # all users 
$allUsers = Get-ADUser -Filter * -SearchBase $OU 
$results = @() 

foreach($user in $allUsers) 
{ 

    $userGroups = Get-ADPrincipalGroupMembership -Identity $user 
    foreach($group in $userGroups) 
    { 
     $adGroup = Get-ADGroup -Identity $group -Properties Description 
     $results += $adGroup | Select-Object -Property @{name='User';expression={$user.sAMAccountName}},Name,Description 
    } 
} 
$results | Export-Csv -Path 'C:\Membership.csv' -NoTypeInformation -Encoding Unicode 
+0

感謝您的幫助Bluecakes,但我收到以下錯誤「不包含名爲op_Addition的方法」。我知道這與組合陣列有關。 – Kjbojang1es

+0

請注意,錯誤必須由於$ result = @()。需要更改爲$結果。但仍然有問題,不包括所有組。 – Kjbojang1es

+0

當你說它不包括所有組時,你是指你正在搜索的組織中的所有組?你知道它不包括哪些組嗎?帶通配符的「Get-ADUser」應該選取指定OU中的每個組,如果要查找所有組,則刪除「-SearchBase $ OU」部分。 – Bluecakes

相關問題