利用 PowerShell 批量导出 Hyper-V 虚拟机配置

陌婷同学_8461

陌婷同学_8461

2026-06-29

719人浏览

原创

PowerShell 批量导出 Hyper-V 虚拟机配置的核心是组合 Get-VM 与导出命令,支持 CSV/XML/自定义格式;可导出基础信息、完整属性、磁盘网卡详情,并按状态、代次、动态内存等条件筛选后导出。

用 powershell 批量导出 hyper-v 虚拟机配置,核心是组合 get-vm 与导出命令,把每台虚拟机的关键属性或完整对象结构化保存为 csv、xml 或自定义格式。不需要逐台操作,一条管道就能覆盖全部运行中或指定状态的虚拟机。

导出所有虚拟机基础配置到 CSV

这是最常用、最直观的方式,适合快速查看和横向对比 CPU、内存、状态等字段:

  • 运行:Get-VM | Select-Object Name, State, ProcessorCount, MemoryAssigned, Generation, Uptime, AutomaticStartAction | Export-Csv -Path "C:\vm-summary.csv" -NoTypeInformation
  • MemoryAssigned 单位是字节,如需 MB 可改写为:[math]::Round($_.MemoryAssigned / 1MB)
  • 导出后可用 Excel 打开,支持排序、筛选,比如只看“Running”状态或“Generation 2”的虚拟机

导出每台虚拟机的完整属性(含隐藏字段)

当需要排查问题或做深度审计时,Select-Object * 能暴露所有可用属性,包括未在默认视图显示的设置项:

  • 命令示例:Get-VM | ForEach-Object { $_ | Select-Object * | Add-Member -NotePropertyName ExportTime -NotePropertyValue (Get-Date) -PassThru } | Export-Csv "C:\vm-full-detail.csv" -NoTypeInformation
  • 这样导出的 CSV 包含 AutomaticStopAction、ResourceMeteringEnabled、IsClustered 等运维关键字段
  • 注意:CSV 文件可能较大,建议先用 Get-VM | Measure-Object 查看数量,避免导出上百台时内存占用过高

批量导出磁盘与网卡详细信息

单靠 Get-VM 不包含硬盘路径、控制器类型或 MAC 地址等细节,需配合专用 cmdlet 并关联输出:

PartnerStack
PartnerStack

PartnerStack是一款内容运营工具,领先的合作伙伴生态系统平台。

下载
  • 导出所有 VM 的磁盘路径和大小:Get-VM | ForEach-Object { $vm = $_; Get-VMDiskDrive -VMName $vm.Name | ForEach-Object { Get-VHD $_.Path | Select-Object @{n='VMName';e={$vm.Name}}, Path, FileSize, Size, LogicalSectorSize } } | Export-Csv "C:\vm-disks.csv" -NoTypeInformation
  • 导出网卡配置(交换机名、MAC、SR-IOV 状态):Get-VM | ForEach-Object { $vm = $_; Get-VMNetworkAdapter -VMName $vm.Name | Select-Object @{n='VMName';e={$vm.Name}}, Name, SwitchName, MacAddress, IsSriovEnabled } | Export-Csv "C:\vm-nics.csv" -NoTypeInformation
  • 这些数据可直接用于容量规划或合规检查,比如确认是否所有生产 VM 都启用了 SR-IOV

按条件筛选后导出(如仅导出关机或动态内存启用的 VM)

运维中常需聚焦特定子集,用 Where-Object 过滤再导出更高效:

  • 只导出已关机且为第二代的虚拟机:Get-VM | Where-Object { $_.State -eq 'Off' -and $_.Generation -eq 2 } | Select-Object Name, ProcessorCount, MemoryAssigned, Path | Export-Csv "C:\offline-gen2.csv" -NoTypeInformation
  • 检查动态内存是否启用:Get-VM | Get-VMMemory | Where-Object DynamicMemoryEnabled | ForEach-Object { [PSCustomObject]@{ VMName=$_.VMName; MinimumMB=[math]::Round($_.MinimumBytes/1MB); MaximumMB=[math]::Round($_.MaximumBytes/1MB); StartupMB=[math]::Round($_.StartupBytes/1MB) } } | Export-Csv "C:\vm-dynamic-memory.csv" -NoTypeInformation
  • 过滤后导出能减少冗余数据,也方便后续自动化脚本调用

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

虚拟机

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
虚拟化软件介绍
虚拟化软件介绍

虚拟化软件有VMware、VirtualBox、Hyper-V、Parallels Desktop、Oracle VirtualBox等。想了解更多虚拟化的相关内容,可以阅读本专题下面的文章。

2023.12.20

9819

8

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

2026.10.28

60

16

Vite 如何搭配 Vue.js
Vite 如何搭配 Vue.js

Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。

2026.10.28

40

15

Vite 项目目录怎么看
Vite 项目目录怎么看

Vite项目目录专题汇集入口文件、src源码、public静态资源、路径别名、项目根目录和构建输出目录相关的已审核文章,帮助读者理解各文件夹的用途与引用方式。

2026.10.28

160

10

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

2026.10.22

140

11

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

2026.10.22

120

10

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

2026.10.22

80

15

Gradle怎么构建Java项目
Gradle怎么构建Java项目

本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。

2026.10.22

60

10

PHP时间戳漏洞修复教程
PHP时间戳漏洞修复教程

本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。

2026.10.22

80

25

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程