2013-02-13 61 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 

那就是你多少行,多少份额成员属性,您需要创建你的对象你要出口。