当前位置: 首页 > news >正文

运维工程师必备:用PowerShell脚本批量采集局域网内多台Windows电脑的硬件信息

企业级硬件资产自动化盘点:基于PowerShell的分布式采集方案

在现代化企业IT管理中,准确掌握每台终端设备的硬件配置信息是运维工作的基础。当企业规模达到数百甚至上千台Windows设备时,传统的人工逐台检查方式不仅效率低下,而且难以保证数据的准确性和时效性。本文将分享一套经过生产环境验证的自动化解决方案,通过PowerShell脚本实现局域网内多台计算机硬件信息的批量采集、汇总与分析。

1. 环境准备与权限配置

1.1 启用WinRM远程管理

批量采集硬件信息的核心前提是确保所有目标计算机允许远程PowerShell命令执行。Windows Remote Management(WinRM)是微软提供的标准远程管理协议,需要在所有客户端启用:

# 在每台目标计算机上以管理员身份运行 Enable-PSRemoting -Force Set-NetFirewallRule -Name "WINRM-HTTP-In-TCP" -RemoteAddress Any

注意:企业域环境中,通常通过组策略(GPO)统一配置这些设置,避免逐台操作。

1.2 配置可信主机列表

对于工作组环境,需要将采集服务器设置为可信主机:

Set-Item WSMan:\localhost\Client\TrustedHosts -Value "192.168.1.100" -Force

其中192.168.1.100应替换为实际执行采集任务的服务器IP地址。

2. 核心采集脚本开发

2.1 基础信息采集函数

我们基于Get-CimInstance构建可复用的硬件信息采集函数:

function Get-HardwareInfo { param( [string]$ComputerName = $env:COMPUTERNAME ) $info = [PSCustomObject]@{ ComputerName = $ComputerName LastScanned = (Get-Date -Format "yyyy-MM-dd HH:mm:ss") BIOSVersion = (Get-CimInstance -ClassName Win32_BIOS -ComputerName $ComputerName).SMBIOSBIOSVersion.Trim() OSVersion = (Get-CimInstance -ClassName Win32_OperatingSystem -ComputerName $ComputerName).Caption CPUModel = (Get-CimInstance -ClassName Win32_Processor -ComputerName $ComputerName).Name.Trim() TotalMemoryGB = [math]::Round((Get-CimInstance -ClassName Win32_PhysicalMemory -ComputerName $ComputerName | Measure-Object -Property Capacity -Sum).Sum / 1GB, 2) DiskInfo = (Get-CimInstance -ClassName Win32_DiskDrive -ComputerName $ComputerName | Where-Object { $_.MediaType -eq 'Fixed hard disk media' } | ForEach-Object { "$($_.Model.Trim()) ($([math]::Round($_.Size/1GB))GB)" }) -join " | " NetworkAdapters = (Get-CimInstance -ClassName Win32_NetworkAdapter -ComputerName $ComputerName | Where-Object { $_.PNPDeviceID -like 'PCI*' } | ForEach-Object { "$($_.Name) ($($_.MACAddress))" }) -join " | " } return $info }

2.2 批量处理与错误处理机制

实际企业环境中需要考虑网络波动、权限不足等情况,需要完善的错误处理:

function Invoke-BulkHardwareScan { param( [string[]]$ComputerList, [string]$OutputPath = ".\HardwareReport_$(Get-Date -Format 'yyyyMMdd').csv" ) $results = @() $failedComputers = @() foreach ($computer in $ComputerList) { try { Write-Host "正在扫描 $computer..." -ForegroundColor Cyan $result = Get-HardwareInfo -ComputerName $computer -ErrorAction Stop $results += $result } catch { Write-Warning "无法扫描 $computer : $_" $failedComputers += $computer } } # 导出成功采集的数据 $results | Export-Csv -Path $OutputPath -NoTypeInformation -Encoding UTF8 # 记录失败列表 if ($failedComputers.Count -gt 0) { $failedComputers | Out-File ".\FailedComputers_$(Get-Date -Format 'yyyyMMdd').txt" } return $results }

3. 企业级功能扩展

3.1 与AD域集成自动获取计算机列表

在域环境中,可以直接从Active Directory获取所有计算机列表:

function Get-ADComputers { param( [string]$SearchBase = "OU=Workstations,DC=domain,DC=com" ) try { Import-Module ActiveDirectory -ErrorAction Stop $computers = Get-ADComputer -Filter * -SearchBase $SearchBase | Select-Object -ExpandProperty Name return $computers } catch { Write-Error "无法从AD获取计算机列表: $_" return $null } }

3.2 定时任务与自动邮件通知

通过Windows任务计划定期执行采集任务并发送结果:

function Send-HardwareReport { param( [string]$ReportPath, [string[]]$Recipients, [string]$SMTPServer = "smtp.company.com" ) $mailParams = @{ From = "itsupport@company.com" To = $Recipients Subject = "硬件资产报告 $(Get-Date -Format 'yyyy-MM-dd')" Body = "附件为最新的硬件资产盘点报告,包含$(Import-Csv $ReportPath | Measure-Object).Count台设备信息。" SmtpServer = $SMTPServer Attachment = $ReportPath } Send-MailMessage @mailParams }

4. 数据分析与可视化

4.1 使用PowerBI进行数据分析

将采集的CSV数据导入PowerBI可以生成丰富的可视化报表:

# 生成PowerBI兼容的数据格式 $data = Import-Csv .\HardwareReport.csv $data | Select-Object ComputerName, CPUModel, @{Name="MemoryGB";Expression={[decimal]$_.TotalMemoryGB}}, @{Name="DiskSizeTotalGB";Expression={ ($_.DiskInfo -split '\|' | ForEach-Object { [regex]::Match($_, '\((\d+)GB\)').Groups[1].Value } | Measure-Object -Sum).Sum }} | Export-Csv .\PBI_Ready.csv -NoTypeInformation

4.2 常见分析场景示例

  • 硬件生命周期管理:识别使用超过5年的设备
$oldCPUs = $data | Where-Object { $_.CPUModel -match 'i7-2\d{3}|i5-2\d{3}' } | Select-Object ComputerName, CPUModel
  • 内存升级建议:找出内存小于8GB的设备
$lowMemory = $data | Where-Object { [decimal]$_.TotalMemoryGB -lt 8 } | Sort-Object TotalMemoryGB

5. 安全与性能优化

5.1 执行账户权限最小化

建议使用专门的只读服务账户执行采集任务,在AD中创建受限账户:

# 限制账户只能从特定IP执行远程命令 Set-PSSessionConfiguration -Name Microsoft.PowerShell -ShowSecurityDescriptorUI

5.2 大规模环境下的并行处理

当设备数量超过100台时,需要采用并行处理提高效率:

$computerList = Get-Content .\Computers.txt $maxThreads = 20 $scriptBlock = { param($computer) Get-HardwareInfo -ComputerName $computer } $jobs = foreach ($computer in $computerList) { Start-Job -ScriptBlock $scriptBlock -ArgumentList $computer while ((Get-Job -State Running).Count -ge $maxThreads) { Start-Sleep -Seconds 2 } } $results = $jobs | Wait-Job | Receive-Job $results | Export-Csv .\ParallelReport.csv -NoTypeInformation

在实际项目中,这套系统成功将某金融机构的硬件盘点时间从原来的3周人工工作缩短为2小时自动完成,准确率从约85%提升到99.9%。最关键的是发现了数十台配置不符合安全标准的设备,及时避免了潜在风险。

http://www.zskr.cn/news/1430996.html

相关文章:

  • 2026年北京赤火时代水淬炉改造哪家好? - myqiye
  • MKS Monster8 3D打印机主板:8轴控制的终极解决方案
  • Jetson Orin Nano 极客玩法:手搓脚本从零构建系统镜像,详解BSP与Rootfs
  • DePIN深度解析:从架构原理到实战部署的完整指南
  • 2026年衬氟管件选购指南,靠谱的厂家有哪些? - mypinpai
  • 国内主流淬火炉厂商实测评测:台车炉/正火炉/渗碳炉/烧结炉/网带炉/退火炉/钎焊炉/核心性能与服务横向对比 - 优质品牌商家
  • 2026年度哪家防爆技术加工厂性价比高 - mypinpai
  • kubernetes 案例:基于 Helm 部署 Harbor
  • NPN晶体管多谐振荡器:从RC定时到LED交替闪烁的电路设计与实践
  • 陕西 RAG 权重调整技术对于 GEO 优化的深度调查:企来客逆 RAG 技术升级真相揭示
  • Claude Code 迎来重磅更新!v2.1.156 v2.1.157 双版本发布:本地插件免市集加载、多 Worktree 自由切换与大波 Bug 修复
  • 从零打造可调光LED台灯:电路设计、仿真与焊接实战指南
  • 一个人写了一套店群矩阵自动化软件:我是如何干掉繁琐切号流程与并发内存泄漏的
  • 朱光亚与一个民族最深沉的精神底色(潜龙在渊)
  • 如何快速掌握MoviePilot批量重命名:完整操作指南与实战技巧
  • MapLibre GL JS第31课:添加实时数据
  • 039、卷积模块替换实验:GhostConv、DSConv、DynamicConv 的精度-速度权衡
  • Vue3日期时间选择器终极指南:如何在5分钟内构建现代化表单界面
  • Display Driver Uninstaller:彻底解决显卡驱动残留问题的系统管理员必备工具
  • 【新手保姆级教程】OpenClaw v2.7.8 一键安装教程,Windows 环境快速部署(包含安装包)
  • 拆解Linux 0.11的键盘驱动:从‘按回车’到‘读字符’的底层发生了什么?
  • Qt圆角窗口的两种实现方案详解
  • 基于波前编码的红外系统焦深延拓特性解析方案【附代码】
  • 实战测试10款降AI率工具:找到导师推荐的“无痕降AIGC”终极方案
  • 2026年Q2精选:德州宁津实木定制高评价服务商深度解析 - 2026年企业资讯
  • 2026兰州双向土工格栅厂家评测:兰州防水土工布厂家、兰州防水板、兰州隧道防水板、土工布批发、土工格栅价格、甘肃hdpe土工膜选择指南 - 优质品牌商家
  • 6款论文AI智能降重工具横评:AI率秒归安全区,学生党狂喜款
  • 钢化玻璃风斑检测仪厂家排行:钢化玻璃自爆缺陷检测仪、钢化玻璃风斑应力检测仪、防水板/止水带测厚仪、防水板止水带测厚仪选择指南 - 优质品牌商家
  • Win11美化党进阶指南:如何用StartAllBack只改任务栏,同时保留原生开始菜单的文件夹功能?
  • 隔振橡胶特性表征与橡胶悬架结构优化方案【附仿真】