PowerShell生成虚拟机资产报表需先加载对应平台模块(VMware.PowerCLI、Hyper-V或Az模块),连接平台后提取名称、状态、配置等字段,处理空值并导出为CSV或HTML。
用 powershell 生成虚拟机资产报表,核心是连接虚拟化平台(如 vmware vcenter 或 hyper-v)、提取关键属性(名称、状态、cpu/内存配置、所属集群/宿主机、操作系统、ip 地址等),再导出为结构化格式(如 csv 或 html)。关键是选对模块、写清筛选逻辑、处理常见空值和权限问题。
确认并加载对应管理模块
不同平台需不同 PowerShell 模块:
-
VMware vSphere:安装 VMware.PowerCLI(
Install-Module VMware.PowerCLI -Force -SkipPublisherCheck),首次运行需执行Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -Confirm:$false允许自签名证书 -
Hyper-V:Windows 自带 Hyper-V 模块,确保以管理员身份运行,检查是否启用:
Get-Command Get-VM -
Azure VM:安装 Az.Accounts 和 Az.Compute,登录后用
Connect-AzAccount
采集基础资产字段(以 VMware 为例)
连接 vCenter 后,用 Get-VM 获取虚拟机对象,再用 Select-Object 提取常用字段。注意部分属性(如 IP、OS)需调用 Guest 或 Config 子对象,且可能为空:
- 名称:
Name - 电源状态:
PowerState - CPU 数量:
NumCpu - 内存(MB):
MemoryMB - 所在集群/资源池:
Cluster.Name或ResourcePool.Name - 宿主机:
VMHost.Name - 客户机操作系统:
Guest.OSFullName(需开机且安装 VMware Tools) - IP 地址:
Guest.IPAddress[0](数组,取首个有效 IPv4;常为空,建议加if($vm.Guest.IPAddress){...}判断)
导出为可读报表(CSV / HTML)
推荐先导出为 CSV,便于 Excel 分析;也可用 ConvertTo-Html 生成简易网页报表:
-
CSV 导出:
Get-VM | Select-Object Name, PowerState, NumCpu, MemoryMB, @{Name='Cluster';Expression={$_.Cluster.Name}}, @{Name='IP';Expression={$_.Guest.IPAddress[0]}} | Export-Csv -Path "VM_Report.csv" -NoTypeInformation -Encoding UTF8 -
HTML 报表:加标题和样式更直观,例如:
... | ConvertTo-Html -Title "VM 资产清单" -PreContent "<h2>截至 $(Get-Date)</h2>" | Out-File "VM_Report.html" - 如需按状态或集群分组统计,可用
Group-Object+Measure-Object计算数量
处理常见问题与增强实用性
真实环境中常遇到权限不足、字段缺失、性能慢等问题:
- 若
Guest.IPAddress大量为空,确认 VMware Tools 已安装并运行;Hyper-V 对应使用Get-VMNetworkAdapter -VMName xxx | Select-Object IPAddresses - 批量操作耗时长?加
-Server参数指定 vCenter、用Get-View替代Get-VM提升效率(需熟悉 View API) - 想自动定时生成?用 Windows 任务计划程序调用脚本,或在 Azure Automation/AWS Systems Manager 中部署
- 敏感信息(如密码、内部 IP)需脱敏?导出前用
ForEach-Object过滤或替换特定字段

















