我希望使用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查询我指定的服务器上的组。这是可能的,还是我必须考虑另一种方法呢?
感谢。
答案 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组。也许这个例子可以帮助你。