当然,从我自己的工作站,我可以使用远程服务器管理工具实用程序(例如:“ds …”命令,或PowerShell中的Active Directory模块)来获取我需要的信息.但是,我还希望能够从其他可能没有RSAT且我可能无法安装其他工具的系统中查找域组详细信息.
虽然使用NET GROUP命令解决问题会很有趣,但我不一定限于该工具.但是,我确实只需将自己限制在Windows 7(或类似)操作系统的核心安装中可用的工具,以便我可以轻松地将解决方案移植到不同的计算机上,而在这些计算机中可能无法添加其他工具.如果有一种方法可以在没有附加RSAT模块的情况下使用WMIC或PowerShell之类的东西,我肯定有兴趣听到它.
示例:“MyReallyLongDomainGroupName”是本地Admins组的成员.那么,谁有管理员访问系统?或者“AnotherVerboseDomainGroupName”在某些文件共享权限中 – 谁有权访问该共享?
编辑:
ds工具是独立的EXE,虽然存在于RSAT中,但可以自由复制.即便如此,因为我想尊重你的请求的精神,这里是一个依赖于ADSI接口的Powershell脚本(在Windows中不需要安装RSAT – 它是一个基本的操作系统组件),它将枚举成员资格一组.
# iADSNameTranslate constants $ADS_NAME_INITTYPE_GC = 3 $disTINGUISHednAME = 1 $DOMAINSIMPLE = 5 $UNKNowN = 8 if ($args.count -ne 1) { "`nUsage: ./GroupEnum.ps1 <DOMAIN\groupName>`n"; Exit; } $ns = New-Object -ComObject NameTranslate [System.__ComObject].InvokeMember(“init”,”InvokeMethod”,$null,$ns,($ADS_NAME_INITTYPE_GC,$null)) [System.__ComObject].InvokeMember(“Set”,($UNKNowN,$args[0])) $dn = [System.__ComObject].InvokeMember(“Get”,$disTINGUISHednAME) $Group = [ADSI]"LDAP://$dn" if ($Group.SchemaClassName -eq "group") { $Group.Member | ForEach-Object { $x = [ADSI]"LDAP://$_" if ($x.SchemaClassName -eq "user") { $x.sAMAccountName } } }
我在没有安装RSAT的Windows 7 x64 SP1计算机上使用有限的用户帐户对此进行了测试.我测试了一个名为“123456789012345678901234567890123456789012345678901234567890”的组.
这个脚本绝对没有错误检查.
原文地址:https://www.jb51.cc/windows/366822.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。