2015-11-20 29 views
0

我是powershell的新手。下面的腳本工作正常,我只需要在此添加memberof。我怎麼能實現它? 我想要這樣做。從user.txt導出memberof的列表

User Group 
------ ------ 
User Group, Group 1, Group 2 
User1 Group, Group 2 
User2 Group, Group 1 
User3 Group, Group 1, Group 2, Group 3 

$USERS = Get-Content c:\Temp\users.txt 
$USERS|Foreach{Get-ADUser $_ -Properties * |Select SAMAccountName, mail, XXXXX, memberof}|Export-CSV -Path C:\Temp\USERS.csv 

在此先感謝。

指導我的傢伙。

+0

究竟是什麼問題,似乎你已經添加memberof – Kiran

+0

我想要這樣做。 用戶\t 組------- --------- 用戶\t組,第1組,第2組 用戶1 \t組,第2組 用戶2 \t組,第1組 用戶2 \t組,Group 1,Group 2,Group 3 – KuganMV

回答

1

我假設你在將數據導出到一致列表時遇到困難。在此之上,組名不容易閱讀,所以我增加了一個功能,因爲它:

Function Get-DisplayName { 
    Param (
     [String[]]$CN 
    ) 
    Process { 
     foreach ($C in $CN) { 
      $m = Get-ADObject -Identity $C -Properties displayName,cn 
      if ($m.ObjectClass -eq "user") {$m.displayName} Else{$m.cn} 
     } 
    } 
} 

$Users = Get-Content 'c:\Temp\users.txt' 

$Result = $Users | ForEach-Object { 
    Get-ADUser $_ -Properties * | Select-Object SAMAccountName, mail, 
     @{Name='Group';Expression={Get-DisplayName $_.memberof}} 
} 

$Export = Foreach ($R in $Result) { 
    Foreach ($G in $R.Group) { 
     $R | Select-Object SamAccountName, Mail, @{Name='Group';Expression={$G}} 
    } 
} 

$Export | Export-CSV -Path 'C:\Temp\UsersExport.csv' 

輸出將是這樣的:

SamAccountName Mail    Group 
-------------- ----    ----- 
Bobs    [email protected] Group 1 
Bobs    [email protected] Group 2 
Bobs    [email protected] Group 3 
Mikec    [email protected] Group 1 
Mikec    [email protected] Group 2 
... 

Select-Object cmdlet接受Expressions。通過使用這個,我們可以調用函數來找到正確的DisplayName。稍後在腳本中,我們可以將這些數據擴展爲用戶所屬的每個Group一行。

爲了讓您一開始,你可以使用以下命令:

  • 要查找有關cmdlet的信息,您可以使用Get-Help Select-Object -ShowWindow
  • 要查看哪些cmdlet是提供給你,你可以使用Get-Command '*Select*'

希望這可以幫助你。

+0

對不起,隊友它不能正常工作給出錯誤,如下所示: - #TYPE System.Collections.Hashtable 「IsReadOnly」,「IsFixedSize」,「IsSynchronized」,「Keys」,「Values」 ,「SyncRoot」,「Count」 – KuganMV

+0

我測試過代碼多次,工作正常。您的輸入文件是否只包含SamAccountNames? – DarkLite1

+0

是的即時通訊使用SamAccountNames。 – KuganMV