2013-02-13 51 views
0

我們有以下命名約定共享資源:嵌套組成員PowerShell的報告

sg_ShareName1_RO 
sg_ShareName1_RW 
sg_ShareName2_RO 
sg_ShareName2_RW 

我想在Excel/CSV格式如下得到報告:

  ShareName1 ShareName2 ... 
User1 RW   NA 
User2 NA   RO 

我打如何將共享名輸出到csv文件而不是列中。 這裏已經來到代碼,我已經做了:

$users = GetADUser - filter {name like '*'} | sort name | select name 
$sharegroups = Get-AdGroup -filter {name like 'sg_*'} | sort name 
$shares = Get-AdGroup -filter {name like 'sg_*'} | sort name | foreach {$_} | select @{N='Share Name'; E={$_.Name.Replace('sg_', '').Replace('_', '').Replace('RO','').Replace('RW','')}} -Unique 

TNEN避免前往AD每次檢查組成員首先,我想存儲每個組的成員在陣列

$sharegroupmembers = @{} 
foreach ($group in $sharegroups) 
{ 
    $sharegroupmembers[$group.name] = Get-ADGroupMember $group.name -Recursive | select name 
} 

後我被卡在正確投影列,用戶到行,RW/RO/NA到基於組成員身份的值正確投影

回答

0

您的列數將成爲任何組成員的最大數量用戶擁有。這些都是在$ sharegroupmembers的值,因此:

$shargroupmembers.values | 
sort count | 
select -last 1 

那就是你多少行,多少份額成員屬性,您需要創建你的對象你要出口。