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

如何编写PowerShell脚本检测计算机是否为域控制器

如何用PowerShell检测指定计算机是否为域控制器?

下面是几种实用的PowerShell脚本方案,适用于不同环境场景:

方法1:通过CIM查询服务器角色(推荐)

这种方法依赖Windows服务器角色信息,无需额外安装模块,兼容性较好。

# 指定要检测的计算机名,替换为目标机器名称或IP
$targetComputer = "DC01"

# 查询服务器角色信息,筛选域控制器角色
$dcRole = Get-CimInstance -ComputerName $targetComputer -ClassName Win32_ServerFeature | 
          Where-Object { $_.Name -eq "Active Directory Domain Services" }

if ($dcRole) {
    Write-Host "*$targetComputer 是域控制器*" -ForegroundColor Green
} else {
    Write-Host "*$targetComputer 不是域控制器*" -ForegroundColor Red
}

注意事项:

  • 需要对目标计算机有WMI/CIM访问权限
  • 目标机器需开启WinRM服务(服务器系统默认启用,客户端系统可能需手动开启)

方法2:使用ActiveDirectory模块(需RSAT工具)

如果管理机已安装RSAT Active Directory PowerShell模块,可直接查询域内所有域控制器,验证目标机器是否在列表中:

$targetComputer = "DC01"

# 获取当前域内所有域控制器
$domainControllers = Get-ADDomainController -Filter * | Select-Object -ExpandProperty Name

if ($domainControllers -contains $targetComputer) {
    Write-Host "*$targetComputer 是域控制器*" -ForegroundColor Green
} else {
    Write-Host "*$targetComputer 不是域控制器*" -ForegroundColor Red
}

注意事项:

  • 需先安装RSAT工具:Windows 10/11或Server 2016+中,可通过Install-WindowsFeature RSAT-AD-PowerShell安装
  • 执行脚本的用户需具备域内查询权限

方法3:检查NTDS服务状态

域控制器会运行**NTDS(Active Directory Domain Services)**服务,通过检查该服务是否存在并运行可判断:

$targetComputer = "DC01"

try {
    $ntdsService = Get-Service -ComputerName $targetComputer -Name NTDS -ErrorAction Stop
    if ($ntdsService.Status -eq "Running") {
        Write-Host "*$targetComputer 是域控制器*" -ForegroundColor Green
    } else {
        Write-Host "*$targetComputer 的NTDS服务未运行,可能不是域控制器*" -ForegroundColor Yellow
    }
} catch {
    Write-Host "*$targetComputer 不是域控制器(未找到NTDS服务)*" -ForegroundColor Red
}

注意事项:

  • 若DC处于维护模式,NTDS服务可能暂停,需结合其他方法交叉验证

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 20:25:29