我正在寻找一个PowerShell脚本,将查询和输出给定的Windows服务器上的所有本地和AD用户,服务帐户和组。 我需要脚本以recursion方式列出在该服务器上拥有特权的每个组的成员。 我正在寻找一个能够给我一个好的起点的脚本,从中我可以根据自己的具体需求进行调整。 谢谢。
午餐时间我感到无聊,所以我把你做了。
$strLocalMachine = $env:computername $arrLocalGroups = Get-CimInstance -ClassName Win32_Group -filter "Domain = '$strLocalMachine'" $arrDomainGroups = Get-CimInstance -ClassName Win32_Group -filter "Domain = '[YOUR DOMAIN NAME HERE]'" ECHO "" ECHO "Local Groups" ECHO "" foreach($objLocalGroup in $arrLocalGroups) { $groupname = $objLocalGroup.Name $group = [ADSI]"WinNT://./$groupname" ECHO "-----$($objLocalGroup.caption)-----" @($group.Invoke("Members")) | foreach {$_.GetType().InvokeMember("Name", 'GetProperty', $null, $_, $null)} } ECHO "" ECHO "Domain Groups" ECHO "" foreach($objDomainGroup in $arrDomainGroups) { $groupname = $objDomainGroup.name $groupmembers = Get-QADGroupMember $groupname ECHO "-----$groupname-----" foreach($entry in $groupmembers) { IF($entry.type -eq 'group') { Echo "$($entry.name)`n GROUP MEMBERS" $subgroupmembers = Get-QADGroupMember $($entry.name) foreach($member in $subgroupmembers){ECHO " $($member.name)"} } else{echo "$($entry.name)"} $entry = $null } }
这与免费的Quest AD命令列表有关,用于枚举域组成员资格。 如果您已经安装了RSAT,或者您在DC上运行,则可以对其进行修改,以便与Microsoft AD cmdlet执行相同的操作。
我没有在多台机器上testing过,所以不能承诺它将超出我的testing赢7框,但只要你是域pipe理员运行,这应该是好的。
我觉得我的域成员PC的域组输出太高了。 命令Get-CimInstance -ClassName Win32_Group -filter "Domain = '[YOUR DOMAIN NAME HERE]'"远远超出了我的预期,所以YMMV,但如果他们是正确的组,那么它应该通过并列出给你的成员船。
我不知道如何确定本地团体的成员是否是恐惧的用户或团体。 该行: @($group.Invoke("Members")) | foreach {$_.GetType().InvokeMember("Name", 'GetProperty', $null, $_, $null)} @($group.Invoke("Members")) | foreach {$_.GetType().InvokeMember("Name", 'GetProperty', $null, $_, $null)}应该允许我们调用除名字以外的成员,但我不能得到它的工作。 如果有人能为你澄清,你应该能够使用它来列出本地组的成员。
希望这可以帮助。