如何使用dsquery在Active Directory中检索指定的多个操作系统?
如何用dsquery同时查询Windows 2003和2008 Server的计算机
没问题,你只需要调整LDAP过滤器,用**逻辑或(|)**操作符把两个操作系统的条件组合起来,就能在一次查询中精准匹配这两类服务器。
完整查询命令
dsquery * domainroot -filter "(&(objectCategory=Computer)(objectClass=Computer)(|(operatingSystem=Windows Server 2003*)(operatingSystem=Windows Server 2008*)))"
过滤器逻辑拆解
(&(objectCategory=Computer)(objectClass=Computer)):这部分和你原来的命令一致,确保只查询AD中的计算机对象,排除其他类型的条目干扰。(|(operatingSystem=Windows Server 2003*)(operatingSystem=Windows Server 2008*)):这里用|表示“或”逻辑,匹配操作系统名称以Windows Server 2003开头,或者以Windows Server 2008开头的计算机。末尾加通配符*是为了兼容子版本(比如R2、SP1等带后缀的系统)。
可选优化:直接查看详细属性
如果想一次性获取计算机的名称、完整系统版本等信息,可以把dsquery的结果管道给dsget工具:
dsquery * domainroot -filter "(&(objectCategory=Computer)(objectClass=Computer)(|(operatingSystem=Windows Server 2003*)(operatingSystem=Windows Server 2008*)))" | dsget computer -dn -samid -operatingsystem
这条命令会返回计算机的可分辨名称、SAM账户名和完整操作系统版本,不用再手动二次查询。
内容的提问来源于stack exchange,提问作者JeffR




