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

远程查询域内机器注册表键值的PowerShell脚本问题求助

解决PowerShell远程查询域机器注册表的问题

我来帮你搞定这个问题!你的脚本现在读到的是本地注册表值,核心问题是远程机器名引用错误,另外还有CSV输出不规范和缺少错误处理的问题,下面给你修正后的脚本和详细说明:

问题根源分析

  1. 机器名引用错误:你用Get-ADComputer时选择了dnshostname属性,但循环里却用$SRV.name调用——这会返回空值!OpenRemoteBaseKey遇到空值时会默认连接本地机器,所以你读到的自然是本地注册表。
  2. CSV输出不规范:用Out-File -Append手动拼接字符串很容易导致CSV格式混乱(比如分隔符不对、换行异常),应该用PowerShell的对象输出机制来生成标准CSV。
  3. 缺少错误处理:远程查询时经常会遇到机器离线、无权限访问注册表、指定键不存在的情况,不加处理的话脚本会直接中断,漏掉很多机器的结果。

修正后的完整脚本

Import-Module ActiveDirectory

# 获取域内所有计算机的DNS主机名(直接展开成字符串数组,避免后续取属性)
$SRVS = Get-ADComputer -Filter * -SearchBase 'DC=mydomain,DC=local' | Select-Object -ExpandProperty dnshostname

# 初始化数组存储查询结果
$results = @()

foreach ($SRV in $SRVS) {
    Write-Host "正在查询 $SRV..."
    try {
        # 建立远程注册表连接
        $remoteReg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $SRV)
        $targetKey = $remoteReg.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\QualityCompat")
        
        # 处理注册表键不存在或键值为空的情况
        $keyValue = switch ($true) {
            (-not $targetKey) { "注册表路径不存在" }
            (-not $targetKey.GetValue('cadca5fe-87d3-4b96-b7fb-a231484277cc')) { "键值为空或未设置" }
            default { $targetKey.GetValue('cadca5fe-87d3-4b96-b7fb-a231484277cc') }
        }
        
        # 将结果存入自定义对象
        $results += [PSCustomObject]@{
            计算机名称 = $SRV
            目标键值   = $keyValue
        }
    }
    catch {
        # 捕获所有异常,记录错误信息
        $results += [PSCustomObject]@{
            计算机名称 = $SRV
            目标键值   = "查询失败:$($_.Exception.Message)"
        }
    }
}

# 导出到CSV,指定UTF8编码避免乱码,去掉类型信息
$results | Export-Csv -Path "C:\Users\user1\Desktop\regkeys.csv" -NoTypeInformation -Encoding UTF8

关键修改说明

  • 机器名修正:用Select-Object -ExpandProperty dnshostname直接拿到每个机器的DNS名字符串,循环时直接用$SRV即可,不会再出现空值。
  • 结构化输出:用PSCustomObject定义每一行的结构,保证CSV的列名和数据对应,不会出现格式混乱。
  • 异常处理:try/catch块会捕获所有远程连接、注册表访问的错误(比如机器离线、权限不足),都会把错误信息记录到CSV里,不会中断脚本。
  • 边界情况处理:判断注册表键是否存在、键值是否为空,返回友好的提示信息,不会出现空值或报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:34:34