搜索附加到指定服务器的AD组

时间:2015-04-08 12:06:38

标签: powershell active-directory

我希望使用PowerShell,指定服务器主机名,并让它显示所有可以访问该服务器的AD组。从那里开始,我将深入了解用户名并将其存储在csv文件中。

到目前为止,我有获取服务器DN的代码 -

Get-adcomputer HOSTNAME | select DistinguishedName

除了获取最终用户名的代码并将它们存储在csv -

$groups= GROUPS
$selectgroups=$groups |Get-Adgroup
$selectgroups |get-adgroupmember -Recursive | Select samaccountname |
Export-csv -path C:\Groups\Members.csv -NoTypeInformation

我的问题是我无法弄清楚如何让PowerShell查询我指定的服务器上的组。这是可能的,还是我必须考虑另一种方法呢?

感谢。

1 个答案:

答案 0 :(得分:0)

不确定您确切知道自己在寻找什么。无法分辨哪些AD组已通过AD授予对节点的访问权限。你唯一能做的就是在本地节点上查看AD组,但是很多地方你可能想要/需要看看Frode F.已经提到过的。一个共同的主题是将AD组添加到相关节点上的LOCAL组中。

您可以使用WMI或ADSI适配器获取此信息。获取服务器'NODE123'的'Administrators'本地组的所有成员的ADSI示例:

    $server = "NODE123"
    $arrGroupMembers=@()
    $Group = "Administrators"
    $ADSIComputer = [ADSI]("WinNT://" + $server + ",computer") 
    $ADSIGroup = $ADSIcomputer.psbase.children.find($Group) 
    $ADSIMembers= $ADSIGroup.psbase.invoke("Members")
    foreach ($member in $ADSIMembers) {   
        $MemberClass = $member.GetType().InvokeMember("Class", 'GetProperty', $Null, $member, $Null)
        if ($memberClass -eq "Group") {
            $MemberName = $member.GetType().InvokeMember("Name", 'GetProperty', $Null, $member, $Null)
            $arrGroupMembers+=$MemberName
        }
    }

通过上面的数组返回,您现在可以将所有可以访问NODE123的组添加到本地Administrators组。也许这个例子可以帮助你。