AD嵌套组成员身份PowerShell报告

时间:2013-02-13 11:48:55

标签: powershell active-directory reporting powershell-v3.0

我们有以下共享资源的命名约定:

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的正确投影进行正确投影

1 个答案:

答案 0 :(得分:0)

您的列数将是任何用户拥有的最大群组密码数。这些是$ sharegroupmembers的值,所以:

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

这将是您将拥有多少行,以及您要在要导出的对象上创建的共享成员资格属性数。