2013-02-13 1 views
0
PowerShell

Мы имеем следующие именования для общих ресурсов:AD вложенной группы членов отчетности

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

Количество ваших колонок будет максимальным количеством групповых memeberships any пользователь имеет. Те в значениях $ sharegroupmembers, так:

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

Вот сколько строк вы будете иметь, и сколько членскую долю свойства вам нужно создать на ваших объекты, которые вы собираетесь экспортировать.