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

如何整合PowerShell脚本实现远程采集系统及显示器信息?

整合PowerShell脚本实现远程采集显示器信息

核心思路

把本地获取显示器信息的逻辑,通过PowerShell远程执行框架(Invoke-Command)推送到目标机器上运行,再将返回的显示器数据和系统信息合并,最终导出为CSV。

前置条件

  • 目标Windows机器已开启WinRM服务(可通过Enable-PSRemoting -Force在目标机上开启,需管理员权限)
  • 执行脚本的账号对目标机器有本地管理员权限
  • 网络允许WinRM默认端口(5985/5986)通信

具体整合步骤与示例代码

假设你的原远程系统信息脚本通过Get-CimInstance远程获取硬件/系统数据,本地显示器脚本用Win32_DesktopMonitor类获取信息,整合后的完整脚本如下:

# 1. 定义目标机器列表(替换为实际主机名/IP)
$targetComputers = @("PC01", "PC02", "192.168.1.100")

# 2. 远程执行脚本块,同时采集系统信息和显示器信息
$remoteData = Invoke-Command -ComputerName $targetComputers -ScriptBlock {
    # 获取系统基础信息(可根据原脚本调整属性)
    $systemInfo = Get-CimInstance -ClassName Win32_OperatingSystem | Select-Object CSName, Caption, Version, InstallDate
    
    # 获取显示器信息(多显示器会返回多条记录)
    $displayInfo = Get-CimInstance -ClassName Win32_DesktopMonitor | Select-Object DeviceID, MonitorManufacturer, MonitorType, ScreenHeight, ScreenWidth
    
    # 合并系统与显示器信息(处理多显示器场景)
    foreach ($display in $displayInfo) {
        [PSCustomObject]@{
            ComputerName       = $systemInfo.CSName
            OSName             = $systemInfo.Caption
            OSVersion          = $systemInfo.Version
            OSInstallDate      = $systemInfo.InstallDate
            MonitorDeviceID    = $display.DeviceID
            MonitorBrand       = $display.MonitorManufacturer
            MonitorModel       = $display.MonitorType
            ScreenHeightPixels = $display.ScreenHeight
            ScreenWidthPixels  = $display.ScreenWidth
        }
    }
} -ErrorAction SilentlyContinue

# 3. 将采集数据导出为CSV
$remoteData | Export-Csv -Path "RemoteSystemAndDisplayInfo.csv" -NoTypeInformation -Encoding UTF8

关键细节说明

  • 多显示器处理:目标机有多个显示器时,Win32_DesktopMonitor会返回多条记录,脚本通过循环将每条显示器数据与系统信息绑定,确保每条CSV记录对应一个显示器的完整关联信息。
  • 权限与认证:需要指定特定账号时,可在Invoke-Command中添加-Credential (Get-Credential)参数,手动输入目标机权限账号。
  • 错误捕获:示例用-ErrorAction SilentlyContinue忽略连接失败的机器,可添加-ErrorVariable remoteErrors捕获错误,后续导出失败列表:
    $remoteErrors | Select-Object TargetObject, Exception | Export-Csv "ConnectionErrors.csv" -NoTypeInformation
    
  • 备选显示器数据来源:如果Win32_DesktopMonitor返回数据不全,可改用Win32_PnPEntity筛选显示器设备:
    $displayInfo = Get-CimInstance Win32_PnPEntity | Where-Object { $_.PNPClass -eq "Monitor" } | Select-Object DeviceID, Name, Manufacturer
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 10:05:22