You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PowerShell 2.0或命令行获取域内所有计算机的操作系统信息

获取域内计算机名称与操作系统的方法(Windows Server 2007 SP2/PowerShell 2.0)

一、传统命令行方式(原生工具组合)

用Windows自带的dsquery和dsget命令即可实现,无需额外安装组件:

dsquery computer domainroot -limit 0 | dsget computer -dn -operatingSystem -operatingSystemVersion
  • 细节说明:
    • dsquery computer domainroot -limit 0:查询域内所有计算机(-limit 0取消默认100条结果限制,返回全部数据)
    • dsget computer -dn -operatingSystem -operatingSystemVersion:提取计算机的可分辨名称、操作系统名称和版本

如果需要更简洁的输出(仅保留计算机名和系统信息),可以用for命令处理:

for /f "tokens=*" %a in ('dsquery computer domainroot -limit 0') do dsget computer "%a" -samid -operatingSystem

注:-samid返回的名称格式为COMPUTERNAME$,可通过字符串处理去掉末尾的$。

二、PowerShell 2.0原生实现(无需AD模块)

利用.NET原生类直接查询LDAP,不需要安装Active Directory模块:

# 替换为你的域名称
$domain = "yourdomain.com"
$searcher = New-Object System.DirectoryServices.DirectorySearcher([ADSI]"LDAP://$domain")
$searcher.Filter = "(objectCategory=computer)"

# 指定需要加载的属性,减少查询开销
$searcher.PropertiesToLoad.AddRange(@("name", "operatingsystem")) | Out-Null

$results = $searcher.FindAll()
foreach ($result in $results) {
    [PSCustomObject]@{
        ComputerName      = $result.Properties["name"][0]
        OperatingSystem   = $result.Properties["operatingsystem"][0]
    }
}

如果需要操作系统版本信息,添加operatingsystemversion属性即可:

$searcher.PropertiesToLoad.Add("operatingsystemversion") | Out-Null
# 在输出对象中新增字段
OperatingSystemVersion = $result.Properties["operatingsystemversion"][0]

三、域控制器本地备选方法(不推荐日常使用)

如果这台服务器是域控制器,可通过ntdsutil工具读取AD数据库,但需停止AD服务,会影响域功能,仅作为极端场景备选,优先使用前两种方法。

内容的提问来源于stack exchange,提问作者Brute

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 18:01:24