Get-ACL和嵌套组

时间:2014-12-30 22:21:54

标签: powershell get acl

我在这里看到一些与格式化get-acl输出相关的代码,因为从它的外观来看,我不建议回答一个问题,即我开始一个新的线程。 我有几个AD组嵌套在一些本地安全组中,其名称包括tom和dom。我想扩大当地人,向我展示他们的成员组。我并不关心组内的用户。有人可以提出这样做​​的方法吗? 我想过使用get-CimInstance,但这似乎只是通过给出一个特定的组名来过滤,在我的情况下,我宁愿使用从我到目前为止所得到的内容

$folders = dir c:\drv -recurse | where {$_.psiscontainer -eq $true}
$folders |
foreach-object{  
Get-Acl | Select-Object -ExpandProperty Access | where {$_.identityreference -match "tom|dom"} |
  Select-Object @{n="object";e={ $folder.fullname }}, 
    @{n="security_principal";e={ $_.identityreference }},
    @{n="type";e={ $_.accesscontroltype }},
    @{n="rights";e={ $_.filesystemrights }}
} | ft -AutoSize
理想情况下,如果security_principal出现的内容被分成了我的组成员,如果它只显示包含某些通配符的成员组,那就更好了。在剩下的代码运行之前,它可能更容易获得2个组并列出其成员,这很好但是我再次使用get-CimInstance并且不能使用它来工作。我不知道其他方式。

1 个答案:

答案 0 :(得分:0)

您可以使用Powershell和ADSI查看本地组成员身份。

$Server = 'server1'
$LocalGroup = 'Administrators'
$Group= [ADSI]"WinNT://$Server/$LocalGroup,group"
$Members = @($Group.psbase.Invoke("Members"))
Foreach($Member in $Members){
    $Member.GetType().InvokeMember("Name", 'GetProperty', $null, $Member, $null)
}