2012-02-14 84 views
1

我創建了一個包含所有組名稱的CSV。以下腳本從「group.csv」中讀取所有組名,並列出組和成員。Powershell列出來自AD的組和成員並導出爲CSV

腳本:

Add-PSSnapin Quest.ActiveRoles.ADManagement 
$csv = Get-Content "f:\Temp\group.csv" 

$result = $csv | foreach-object { 
$group=$_ 
get-qadgroupmember "$_" -sizelimit 0 -indirect | select-object samaccountname,@{n="GroupName";e={$group}} 
} 
$result | export-csv f:\temp\groupandmem.csv -notypeinformation 

有超過1000組中的「group.csv」有很多在每個成員。腳本的執行會因內存問題而停止,並且沒有任何內容寫入到groupandmem.csv中,因爲這是最後完成的。

我有以下問題:

是可以: - 對於每個組中的「group.csv」,列出從CSV組,搜索組的AD,顯示成員和寫組名和用戶groupandmem.csv的成員。爲「group.csv」中的所有組執行此操作。

-The groupandmem.csv如下填充:

行1組,member1中,members2,members3 .......

行2組2,member1中,members2等

回答

1

如果你開始分配東西給變量,那麼你就是阻止powershell將用戶從管道的一端「流」到另一端(CSV文件)。相反,像這樣構造管道:

Get-Content "f:\Temp\group.csv" | foreach-object { 
    $group = $_ # grab current group name 
    get-qadgroupmember $group -sizelimit 0 -indirect | ` 
     select-object samaccountname,@{n="GroupName";e={$group}} 
} | export-csv f:\temp\groupandmem.csv -notypeinformation 
Get-Content "f:\Temp\group.csv" | foreach-object { 
    $group = $_ # grab current group name 
    get-qadgroupmember $group -sizelimit 0 -indirect | ` 
     select-object samaccountname,@{n="GroupName";e={$group}} 
} | export-csv f:\temp\groupandmem.csv -notypeinformation 

現在有一個從開始到結束的真正的「流水線」:csv | foreach | get | transform | export

之前,你通過在將所有內容傳遞到下一個命令之前將所有內容分配給一個變量來進行備份。

更新:增加了$組到當前捕獲組名(行)

+0

感謝。是否有可能添加組名,然後在同一行上的所有成員,如:行1組,成員1,成員2,成員3 ....... 第2行第2組,成員1,成員2等 – user1195370 2012-02-14 19:45:01

+0

好吧,編輯組名添加。 – x0n 2012-02-14 20:58:34