通过 vSphere Client 管理 VMware 环境对于小型部署来说效果不错,但随着您的基础设施增长,手动管理很快就会变得低效。VMware PowerCLI 提供了一种强大的方式来自动执行常规任务、管理多个主机和虚拟机,并轻松执行批量操作。

本指南将带您了解如何安装 PowerCLI、连接到您的 vSphere 环境,以及使用基本命令和即用型脚本来自动化日常 VMware 任务。

什么是用于 VMware 的 PowerShell CLI (PowerCLI)

PowerCLI 是一个命令行界面,用于管理和自动化 VMware 环境的各个层面。它作为 PowerShell 模块的集合提供,包含超过 700 个 cmdlet,涵盖了从网络、存储到虚拟机和客户机操作系统设置的所有内容。

vmware powercli 官方标识

PowerShell 是微软底层的自动化框架。PowerCLI 通过添加特定于 VMware 的功能来扩展它,因此您可以在同一个脚本中将标准的 PowerShell 逻辑(循环、条件、变量)与特定于 VMware 的操作结合起来。

PowerCLI 支持广泛的 VMware 产品,包括:

  • vSphere (vCenter 和 ESXi)
  • Site Recovery Manager (SRM)
  • vSAN 和 NSX
  • VMware Cloud Director 和 VMware Aria Operations
  • VMware Horizon 和 HCX
  • VMware Cloud on AWS

PowerCLI 与其他 VMware 自动化工具的比较

工具 最佳用途 学习曲线 VMware 原生? 有状态?
PowerCLI vSphere 自动化、报告、日常运维 低–中
Ansible 配置管理、跨平台剧本 通过模块
Terraform 基础设施预置 (IaC) 中–高 通过提供商
vSphere REST API 自定义应用集成、开发工作流

对于已经熟悉 PowerShell 的管理员来说,PowerCLI 的入门门槛最低。虽然像 Terraform 这样的工具在基础设施预置方面表现出色,但 PowerCLI 更适合持续运维:批量更新、快速报告和临时故障排除,而无需管理状态文件的开销。

如何安装用于 VMware 的 PowerShell CLI (PowerCLI)

安装 PowerCLI 很简单,但首先满足先决条件将为您避免后续的常见错误。

先决条件

  • PowerShell 版本: PowerShell 7.4 或更高版本是目前推荐的最低版本。PowerShell 5.1 正在被弃用,不再推荐使用。
  • 操作系统: PowerCLI 是跨平台的,可以在 Windows、macOS 和 Linux 上运行。安装命令在所有三个平台上都是相同的。
  • 权限: 您需要管理员或 root 访问权限才能全局安装模块。要在没有提升权限的情况下安装,请使用 -Scope CurrentUser 参数。
  • 互联网访问: 方法 1 需要互联网访问。对于受保护的或气隙环境,请使用方法 2。

方法 1:在线安装(推荐)

这是让 PowerCLI 启动并运行的最简单方法。它直接从 PowerShell Gallery 拉取最新版本。

  1. 安装 PowerCLI:

Install-Module -Name VCF.PowerCLI

  1. 仅为当前用户安装(无需管理员权限):

Install-Module -Name VCF.PowerCLI -Scope CurrentUser

  1. 验证安装:

Get-Module -Name VCF.PowerCLI -ListAvailable

成功的输出将列出可用模块及其版本号和安装目录。

方法 2:离线安装(气隙环境)

当您的目标机器无法访问互联网时,请使用此方法。

  1. 在可以访问互联网的机器上,从 Broadcom 开发者门户下载最新的 PowerCLI .zip 文件。
  2. 通过 USB 驱动器或安全的内部渠道将文件传输到离线机器。
  3. 在目标机器上找到 PowerShell 模块目录:

$env:PSModulePath

  1. 将 .zip 文件解压到列出的文件夹之一中。
  2. 解阻塞复制的文件:

cd path_to_powershell_modules_folder

Get-ChildItem * -Recurse | Unblock-File

  1. 验证模块是否可用:

Get-Module -Name VCF.PowerCLI -ListAvailable

注意: 模块目录中的文件夹名称必须与模块名称完全匹配,否则 PowerShell 将无法导入 cmdlet。

如何将 PowerCLI 连接到您的 VMware 环境

安装完成后,第一步是连接到您的 VMware 环境。您可以直接连接到单个 ESXi 主机进行本地化故障排除,但大多数管理员会连接到 vCenter Server 以在单个会话中管理整个集群。

Connect-VIServer 命令

Connect-VIServer cmdlet 在工作站和 vSphere API 之间建立一个会话。连接后,服务器将存储在 $DefaultVIServers 变量中,后续的 cmdlet 将自动对其运行。

# 连接到 vCenter Server

Connect-VIServer -Server vcenter.example.com

如果您的 Windows 会话凭据具有必要的权限,PowerCLI 将直接连接而不提示。否则,将出现登录窗口。

处理 SSL 证书警告

默认情况下,当 PowerCLI 遇到不受信任的证书时,它会发出警告或阻止连接,这在使用自签名证书的实验室环境中很常见。要配置 PowerCLI 如何处理此问题,请在连接前运行以下命令一次:

# 设置 PowerCLI 忽略证书错误
Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -Confirm:$false

 

powercli 配置忽略 ssl 证书错误的命令行截图

注意: 仅在实验室或受信任的内部环境中使用 Ignore。在生产环境中,推荐的方法是使用正确签名的证书,而不是绕过验证。

安全地存储凭据

在脚本中硬编码密码是初学者常犯的错误,也是一种严重的安全风险。相反,使用 Get-Credential 以交互方式将凭据作为内存中的加密对象捕获。

# 提示输入凭据并存储
$myCreds = Get-Credential

# 使用存储的凭据进行连接
Connect-VIServer -Server vcenter.example.com -Credential $myCreds 

 

powercli 使用 get credential 安全存储凭据示例

提示: 对于交互式提示不切实际的自动化或计划脚本,请使用 VICredentialStore(通过 New-VICredentialStoreItem)或 PowerShell SecretManagement 模块来安全地存储和检索凭据。

干净地断开连接

每次调用 Connect-VIServer 都会在服务器上分配一个会话。资源会一直保持打开状态,直到您显式断开连接,因此请始终在工作或脚本结束时关闭会话。

# 断开与所有活动服务器的连接
Disconnect-VIServer -Server * -Confirm:$false 

 

powercli disconnect viserver 断开连接命令执行界面

注意: 默认情况下,Disconnect-VIServer 仅关闭与服务器的最后一个连接。如果您打开了多个到同一服务器的连接,请添加 -Force 参数以一次性关闭所有连接。

每位管理员都应了解的基本 PowerCLI 命令

连接到 vCenter 后,您可以使用 PowerCLI cmdlet 从命令行管理整个基础设施。与 GUI 不同,这些命令让您可以在几秒钟内从整个环境中提取数据,并将其直接传递到报告或自动化工作流中。

虚拟机管理

这些 cmdlet 涵盖了最常见的日常 VM 任务,从检查状态到配置新资源。

  • Get-VM: 列出虚拟机。使用 Where-Object 按任何属性进行筛选。
 # 列出所有已开机的 VM
 Get-VM | Where-Object {$_.PowerState -eq "PoweredOn"} 

 

powercli get vm 命令查看虚拟机列表

  • Start-VM / Stop-VM: 控制 VM 电源状态。

Start-VM -VM "Web-Server-01" -Confirm:$false

  • New-VM: 从头开始创建新 VM。

New-VM -Name "Test-VM" -ResourcePool "Development" -Datastore "DS-01"

  • Remove-VM: 永久删除 VM 及其相关文件。

Remove-VM -VM "Test-VM" -DeletePermanently -Confirm:$false

注意: 此操作不可逆。在实际执行之前,请始终先使用 -WhatIf 来确认您要操作的目标 VM 是否正确。

主机管理

检索 ESXi 主机信息或准备主机进行维护,而无需触及 vCenter GUI。

  • Get-VMHost: 返回主机信息,例如连接状态和电源状态。

Get-VMHost | Select-Object Name, ConnectionState, PowerState

  • Set-VMHost: 将主机置于维护模式,触发 vMotion 以自动将正在运行的 VM 从主机上迁移出去。

Set-VMHost -VMHost "esxi-01.example.com" -State "Maintenance"

快照管理

快照在打补丁或进行重大更改之前很有用,但不受管理的快照蔓延会迅速消耗数据存储空间。使用这些 cmdlet 来跟踪它们。

# 创建快照
Get-VM "DB-Prod" | New-Snapshot -Name "Pre-Patching"

# 列出所有 VM 的所有快照
Get-VM | Get-Snapshot

# 删除特定快照
Get-Snapshot -VM "DB-Prod" | Remove-Snapshot -Confirm:$false

 

powercli 创建和删除虚拟机快照的操作示例

提示: 快照是一个有用的安全网,但它们需要谨慎管理。请参阅我们关于 快照最佳实践从快照恢复 VM 的指南以获取更多详细信息。

报告和筛选

PowerCLI 的真正优势在于将 cmdlet 与 PowerShell 的管道结合起来。Where-ObjectSelect-Object cmdlet 允许您筛选和格式化输出,而无需任何额外工具。

  • 识别已关闭电源的 VM:

Get-VM | Where-Object {$_.PowerState -eq "PoweredOff"} | Select-Object Name, MemoryGB

  • 将完整的 VM 清单导出到 CSV:

Get-VM | Select-Object Name, NumCPUs, MemoryGB, PowerState | Export-Csv -Path "C:\Reports\VM_Inventory.csv" -NoTypeInformation

存储和网络

  • Get-Datastore: 返回所有存储卷的可用磁盘空间和容量。

Get-Datastore | Select-Object Name, FreeSpaceGB, CapacityGB

  • Get-VirtualSwitch: 列出所有标准虚拟交换机。对于分布式交换机,请使用 Get-VDSwitch。
# 列出所有标准虚拟交换机
Get-VirtualSwitch

# 列出所有分布式虚拟交换机
Get-VDSwitch 

 

powercli 与 ansibleterraformvsphere api 的功能对比表格

注意: Get 命令可以随时安全运行。在运行 Set、Remove 或 Stop 命令之前,请始终使用 -WhatIf 来验证您要操作的目标对象是否正确。

实际 PowerCLI 自动化脚本(可复制粘贴)

单个命令很有用,但自动化脚本才是 PowerCLI 实现实时节省时间的地方。下面的脚本涵盖了最常见的维护和报告任务,并且只需很少的修改即可运行。

1. 批量 VM 库存报告

此脚本将完整的 VM 库存导出到带日期的 CSV 文件,对于容量规划或管理报告很有用。

# 检索所有 VM 并将资源规格导出到 CSV 文件
Get-VM | Select-Object Name, NumCPUs, MemoryGB, PowerState,
    @{N="Datastore"; E={(Get-Datastore -VM $_).Name}},
    @{N="IPAddress"; E={$_.Guest.IPAddress[0]}} |
    Export-Csv -Path "C:\Reports\VM_Inventory_$(Get-Date -Format 'yyyyMMdd').csv" -NoTypeInformation

 

powercli get virtualswitch 查看虚拟交换机配置

 

2. 打补丁前自动快照

此脚本为目标集群中的每个 VM 在打补丁前创建一个命名的快照,以便在出现问题时为您提供一个干净的回滚点。

# 定义目标集群
$clusterName = "Production-Cluster-01"

# 为集群中的所有 VM 创建带时间戳的快照
Get-Cluster -Name $clusterName | Get-VM |
    New-Snapshot -Name "Pre-Patching-$(Get-Date -Format 'yyyyMMdd')" `
    -Description "每月打补丁前的自动化快照" `
    -Quiesce:$false -Memory:$false

 

powercli 批量导出虚拟机清单到 csv 报告

注意: -Quiesce 要求在每个客户机操作系统上安装并运行 VMware Tools。如果未安装 Tools,该命令将抛出错误。除非您已确认所有目标 VM 上都安装了 Tools,否则请设置 -Quiesce:$false

3. 查找过时快照(超过 7 天)

打开时间过长的快照会消耗数据存储空间,并可能随着时间的推移降低 VM 性能。此脚本列出所有超过 7 天的快照,以便您查看并清理它们。

# 查找所有超过 7 天的快照
$limit = (Get-Date).AddDays(-7)
Get-VM | Get-Snapshot | Where-Object { $_.Created -lt $limit } |
    Select-Object VM, Name, Created, SizeGB |
    Sort-Object Created

 

powercli 打补丁前自动为集群所有 vm 创建快照

4. 按文件夹批量开启/关闭 VM

如果您的 VM 按文件夹组织(例如,开发实验室或部门),您可以使用单个命令将它们全部开启或关闭。

# 开启 "Dev-Lab" 文件夹中所有已关闭电源的 VM
Get-Folder "Dev-Lab" | Get-VM | Where-Object {$_.PowerState -eq "PoweredOff"} | Start-VM -Confirm:$false

 

powercli 按文件夹批量开启或关闭虚拟机

5. 自动化主机维护模式

此脚本将主机置于维护模式。-Evacuate 参数会触发 vMotion,在主机进入维护之前将其所有正在运行的 VM 迁移到集群中的其他主机。

注意: -Evacuate 需要在集群上启用 VMware DRS。如果没有 DRS,您需要在主机进入维护模式之前手动迁移 VM。
$targetHost = "esxi-hostname.example.com"

# 疏散所有 VM 并将主机置于维护模式
Set-VMHost -VMHost $targetHost -State "Maintenance" -Evacuate

 

powercli 自动将 esxi 主机置于维护模式并疏散 vm

6. 数据存储空间不足警报

此脚本标记任何可用空间低于 50GB 的数据存储,帮助您在存储问题导致 VM 故障之前发现它们。

# 列出可用空间低于 50GB 的数据存储
Get-Datastore | Where-Object { $_.FreeSpaceGB -lt 50 } |
    Select-Object Name,
    @{N="FreeGB"; E={[Math]::Round($_.FreeSpaceGB, 2)}},
    @{N="CapacityGB"; E={[Math]::Round($_.CapacityGB, 2)}} |
    Format-Table -AutoSize

 

powercli 数据存储空间不足警报脚本输出

VMware PowerCLI 常见错误和故障排除

即使是经验丰富的管理员也会遇到 PowerCLI 错误,尤其是在处理证书、安全策略或版本更新时。以下是最常见的问题及其解决方法。

连接时出现 SSL 证书错误

当您的 vCenter 或 ESXi 主机使用您的工作站不信任的自签名证书时,就会发生这种情况。要允许连接在不验证证书链的情况下继续,请在连接前运行以下命令一次:

Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -Confirm:$false

未找到模块

这通常意味着模块未在当前会话中加载,或者安装路径在系统的 $env:PSModulePath 中缺失。尝试手动导入模块:

Import-Module VCF.PowerCLI

如果失败,请验证在离线安装期间模块文件夹是否正确解压,并且它们的名称与模块名称完全匹配。

脚本执行被阻止

Windows 执行策略默认设置为 Restricted,这会阻止所有脚本运行。以管理员身份打开 PowerShell 并运行:

Set-ExecutionPolicy RemoteSigned

这允许本地创建的脚本运行,同时要求从互联网下载的任何内容都需要数字签名。

计划任务中的凭据无效

这通常发生在脚本尝试在非交互式后台会话中执行交互式登录时,或者保存的凭据对象已过期时。与其依赖交互式提示,不如将凭据保存到加密文件中,并在脚本中导入它们:

# 保存凭据一次
$cred = Get-Credential
$cred | Export-Clixml -Path "C:\Scripts\cred.xml"

# 在脚本中导入凭据
$cred = Import-Clixml -Path "C:\Scripts\cred.xml"
Connect-VIServer -Server vcenter.example.com -Credential $cred

 

powercli 计划任务凭据无效错误的处理方法

已弃用的 Cmdlet 警告

Broadcom 会定期淘汰旧的 cmdlet,以支持更新的 vSphere API 标准。警告消息通常会指出要使用的替换 cmdlet。要获取最新的更改列表,请在 Broadcom 开发者门户 上查看 PowerCLI 发布说明。

超越 PowerCLI 脚本保护您的 VMware 环境

PowerCLI 让您能够强大地控制 VMware 环境,但仅靠脚本无法保护您免受数据丢失。

自动化快照和生成库存报告是良好的操作习惯,但快照不是备份。它们与您的 VM 位于同一个数据存储上,这意味着存储故障会同时导致两者宕机。

为了实现真正的保护,您需要一个专用的备份解决方案与您的自动化协同工作。这就是 i2Backup 的用武之地。

i2Backup 是一款企业备份解决方案,专为 PowerCLI 管理员每天管理的环境类型而构建:VMware 基础设施、物理服务器以及在本地和混合云设置中运行的数据库。

  • 无代理 VM 备份: i2Backup 使用原生 VMware API 备份 VM,无需在客户机操作系统内安装任何软件,从而对生产性能产生零影响。
  • 广泛的平台覆盖: 除了 VM,i2Backup 还覆盖物理服务器、主流数据库(Oracle、MySQL、SQL Server、DB2 等)和非结构化数据。如果您的环境是混合的,i2Backup 可以通过一个平台管理它。
  • 自动化计划和智能清理: 按小时、每天、每周或每月配置备份计划。保留策略会自动删除过时的备份,以控制存储使用量。
  • 快速、灵活的恢复: 通过将完整 VM 的备份远程挂载到目标平台来即时恢复,或者在不影响机器其余部分的情况下恢复单个文件和数据库条目。
  • 企业级安全: 备份数据在传输过程中使用 AES 和 SM4 加密进行保护,并且存储支持 WORM 合规性,以防止未经授权的修改或删除。

对于需要不仅仅是备份的环境,i2Availability 提供实时复制和自动故障转移以实现高可用性,如果您计划将工作负载迁移到云或新基础设施,i2Move 支持无中断的跨平台迁移。您可以单击下面的按钮获得 英方软件 解决方案的免费试用。

 

企业级数据保护与迁移解决方案

英方软件提供容灾、备份、数据库同步等产品,帮助企业保障业务连续性与数据安全,支持 VMware、Hyper-V、云环境等多种场景。了解更多 »

60天免费试用
已有超过 2000 万用户下载使用

 

结论

PowerCLI 将耗时、重复的 vSphere 任务转变为自动化、可重复的脚本。从连接到 vCenter 和运行基本 cmdlet 到构建批量报告和维护工作流,本指南涵盖的技能为您从命令行管理 VMware 基础设施奠定了坚实的基础。

一个好的下一步是选择一个您定期执行的手动任务,无论是生成 VM 库存还是创建补丁前快照,并将其变成您的第一个 PowerCLI 脚本。一旦您看到它节省了多少时间,剩下的就会自然而然地跟进。

请记住,自动化处理的是运维,而不是保护。将您的 PowerCLI 工作流与专用的备份解决方案(如 英方软件 的 i2Backup)配对,以确保您的环境在两个方面都得到覆盖。

博客分类底部

准备好构建企业数据韧性了吗?

立即开启 60 天免费试用,或预约产品演示,了解英方软件如何为您的核心业务提供「零中断、零丢失」的数据保护。

请先完成图形验证

验  证  码:

英方官网验证码
第三方二维码 第三方二维码
请先完成图形验证

验  证  码:

英方用户注册验证码
隐私声明
当您在本网站进行合作伙伴注册登记,本网站将收集您的相关信息,并保存记录。本网站收集的个人信息包括但不限于:姓名、地址、公司、所在地区、电话号码以及电子邮件地址等。您主动提供的信息越多及越准确,我们就能够更好地为您提供有关服务。
英方公告铃铛图标
英方公告铃铛图标

公告

英方侧边栏向右箭头
英方高亮提示圆点
关于假冒英方软件官网的声明
近日,我司发现有不法分子仿冒英方软件官方网站,设立虚假网址https://lange-zn.com,其页面内容、服务及产品介绍等均与我司官网高度相似,企图混淆视听、误导用户以达到其不良目的,甚至可能涉及诈骗、数据窃取等违法行为。
对此,我司郑重声明:
英方软件正式官方网站为https://www.info2soft.com和https://www.info2soft.cn,所有其他相似域名或相似内容网站均与我司无关。
请广大用户提高警惕、仔细甄别,切勿在非官方渠道输入个人信息或进行交易,以免遭受经济损失或隐私泄露。任何因用户主动访问、使用或依赖第三方盗版网站、非授权渠道所导致的直接或间接损失(包括但不限于数据泄露、设备损坏、法律纠纷、经济损失等),本公司概不承担任何责任。如您在浏览过程中对网站真实性存疑,可随时拨打我司官方客服电话400-0078-655进行核实。
对于此次假冒我司官网的行为,我司已收集相关证据,并将依法追究相关责任人的法律责任,以维护我司合法权益和市场秩序。
本声明依据中华人民共和国相关法律法规制定,若部分条款被认定为无效,不影响其他条款的效力。
特此声明!
上海英方软件股份有限公司
2025/03/17
英方邮件咨询图标
英方邮件咨询图标

邮件

英方销售支持图标
英方销售支持图标

销售

英方侧边栏向右箭头
联系销售:400-0078-655 转 1
英方社交分享图标
英方社交分享图标

分享

英方侧边栏向右箭头
英方微信公众号图标
微信二维码1 微信二维码2
英方新浪微博图标 英方知乎官方账号图标 英方今日头条图标