PowerShell远程导出服务器硬件资产清单需三步:启用WinRM并配置可信主机,用Invoke-Command调用WMI采集CPU/内存/磁盘/系统信息,最后批量收集结果导出CSV并加入错误处理。
用 powershell 远程导出服务器硬件资产清单,核心是“远程连接 + 硬件信息采集 + 结构化输出”。不依赖第三方工具,纯原生命令就能完成,关键在 winrm 配置、权限控制和数据整理三步。
确保远程管理通道可用
WinRM 是 PowerShell 远程执行的底层协议,必须提前启用并信任目标主机:
- 在每台目标服务器上以管理员身份运行:Enable-PSRemoting -Force
- 若跨网段或非域环境,需配置可信主机(如本机为管理端):Set-Item WSMan:\localhost\Client\TrustedHosts -Value "192.168.1.10,192.168.1.11" -Force
- 验证连通性:Test-WsMan -ComputerName 192.168.1.10 成功返回即表示通道就绪
采集关键硬件字段(CPU/内存/磁盘/系统)
使用 Invoke-Command 在远程主机执行 WMI 查询,推荐组合方式兼顾兼容性与可读性:
- CPU 型号与核心数:Get-CimInstance Win32_Processor | Select-Object Name, NumberOfCores, NumberOfLogicalProcessors
- 总内存(GB):(Get-CimInstance Win32_PhysicalMemory | Measure-Object -Property Capacity -Sum).Sum / 1GB
- 磁盘容量与使用率:Get-Partition | Where-Object {$_.DriveLetter} | Get-Volume | Select-Object DriveLetter, SizeRemaining, Size
- 操作系统与启动时间:Get-CimInstance Win32_OperatingSystem | Select-Object Caption, Version, LastBootUpTime
批量导出为 CSV 文件(含错误处理)
将多台服务器结果统一收集、去重、格式化后导出,避免手动拼接:
直播话术巡检系统(Windows版) — 实时语音转写、关键词检测、场景自动切换、告警推送、大屏可视化。支持 Windows VB-Cable 虚拟声卡音频采集,阿里云 ASR 实时识别。一键启动脚本,自动安装环境。
- 准备服务器列表(servers.txt,每行一个主机名或 IP)
- 执行带重试和日志的采集脚本:
$computers = Get-Content servers.txt
foreach ($comp in $computers) {
try {
$info = Invoke-Command -ComputerName $comp -ScriptBlock {
[PSCustomObject]@{
ComputerName = $env:COMPUTERNAME
CPU = (Get-CimInstance Win32_Processor).Name.Trim()
Cores = (Get-CimInstance Win32_Processor).NumberOfCores
TotalRAMGB = [math]::Round((Get-CimInstance Win32_PhysicalMemory | Measure-Object Capacity -Sum).Sum / 1GB)
OS = (Get-CimInstance Win32_OperatingSystem).Caption
LastBoot = (Get-CimInstance Win32_OperatingSystem).LastBootUpTime
}
}
$info
} catch { Write-Warning "$comp failed: $($_.Exception.Message)" }
} | Export-Csv hardware-inventory.csv -NoTypeInformation
进阶建议:适配域环境与提升稳定性
企业环境中可进一步优化:
- 从 Active Directory 自动获取 Windows 服务器列表:$servers = Get-ADComputer -Filter {OperatingSystem -Like "*Server*"} -Property Name | Select-Object -ExpandProperty Name
- 对敏感环境启用 HTTPS WinRM(端口 5986),并配合证书认证
- 用 Start-Job 或 ForEach-Object -Parallel(PowerShell 7+)实现并行采集,缩短整体耗时
- 导出前统一格式化时间字段(如 [Management.ManagementDateTimeConverter]::ToDateTime($LastBoot))

















