我想要检索我的 Windows 7 工作站所属的 Windows 域中的计算机列表。
我希望通过很少的额外安装来实现这一点,尤其是微软提供的 230MB 远程服务器管理工具包。
到目前为止我见过的选项包括 DSQuery 工具(RSAT 包的一部分)和 PowerShell 的 ActiveDirectory 模块(也是 RSAT 包的一部分)。
- 是否可能有单独使用 PowerShell 模块(仅限脚本)的选项,或者是否真的需要 230MB 工具集的每一部分?
- 我还错过了其他选择吗?
关于执行查询的用户的权限,我希望能够使用非特权域用户,但如果没有非特权替代方案,管理员也是一个选择。
我还要提到,该net view
命令会显示同一子网或“靠近”工作站的几台计算机,但显然不是域中的所有计算机。另一方面,该命令net view /domain:<domain_name>
没有显示任何结果,并返回错误 6118(这很奇怪,因为我本来希望net view
也不会显示任何结果)。
答案1
您可以随时使用分布式系统集成通过 PowerShell/.NET 接口和System.DirectoryServices
命名空间。
下面是一个简单的例子DirectorySearcher
假设您以标准域用户身份运行 PowerShell。
$searcher = New-Object DirectoryServices.DirectorySearcher
$searcher.Filter = '(objectclass=computer)'
$searcher.SearchRoot = 'LDAP://DC=example,DC=com'
$searcher.FindAll()
在我看来,它不如使用 ActiveDirectory 模块那么好。但它绝对是可行的,在某些情况下,它比 ActiveDirectory 模块更快。
您也可以从其他安装中拉出 ActiveDirectory 模块文件并将其添加到您的个人资料中,而不必安装整个 RSAT 包。如果我没记错的话,它是一个文件夹和大约 5 MB 的文件。