无RSAT工具的Windows客户端如何获取AD中计算机描述?
解决无RSAT环境下获取AD计算机描述的问题
我懂你的困扰——没装RSAT工具的Windows客户端没法直接用AD模块命令,那咱们换个原生思路:用.NET自带的DirectoryServices类做LDAP查询,这个不需要额外装任何组件,Windows客户端默认就支持。
核心思路
借助.NET的[System.DirectoryServices.DirectorySearcher]类直接访问Active Directory的LDAP服务,通过当前计算机名定位到对应的AD对象,提取description属性值。
完整代码示例
# 获取当前计算机短名称 $ComputerName = (Get-WmiObject Win32_ComputerSystem).Name # 初始化AD查询器 $searcher = New-Object System.DirectoryServices.DirectorySearcher # 设置过滤条件:匹配对象类为computer且名称等于当前计算机的AD对象 $searcher.Filter = "(&(objectClass=computer)(name=$ComputerName))" # 指定仅加载description属性,提升查询效率 $searcher.PropertiesToLoad.Add("description") | Out-Null # 执行查询 $result = $searcher.FindOne() # 提取并输出描述信息 if ($result) { $ADComputerDescription = $result.Properties["description"][0] Write-Host "AD中的计算机描述:$ADComputerDescription" } else { Write-Host "未在Active Directory中找到该计算机对象" }
关键细节说明
- 零额外依赖:这段代码基于.NET Framework内置类,Win7及以上的Windows客户端默认都支持,完全不需要安装RSAT工具包。
- 权限门槛低:普通域用户默认就有读取AD计算机对象的权限,不需要管理员权限就能执行。
- 容错处理:加入了结果判断逻辑,如果计算机不在域内或AD中无对应记录,会给出明确提示,避免脚本意外中断。
你可以把这段代码整合到现有脚本里,拿到$ADComputerDescription后,就能和其他收集到的信息一起写入SQL数据库了。
内容的提问来源于stack exchange,提问作者Sam Lewis
相关产品推荐
相关产品推荐

