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

最初にグループ メンバーシップを確認するたびに AD に移動するのを避けるために、各グループのメンバーを配列に格納したいと考えています。

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

その後、グループメンバーシップに基づいて、共有を列に、ユーザーを行に、RW / RO / NAを値に正しく投影する方法に行き詰まっています

4

1 に答える 1

0

列の数は、ユーザーが持つグループ メンバーシップの最大数になります。これらは $sharegroupmembers の値にあるため、次のようになります。

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

これが、作成する行の数であり、エクスポートするオブジェクトで作成する必要がある共有メンバーシップ プロパティの数です。

于 2013-02-13T12:09:31.080 に答える