VMware PowerCLI:如何安装和管理 vSphere 和 ESXi
VMware vSphere PowerCLI 是一组 PowerShell 模块,用于通过命令提示符管理 VMware 基础架构。您可以使用 PowerCLI 获取虚拟机、数据存储、网络或用户的状态,管理不同的设置,创建新对象,以及在 ESXi、vCenter Server、vSphere、vSAN 和其他 VMware 产品的自动化任务中使用 PowerShell。
目前,VMware 正在开发仅适用于 PowerShell Core (7.0+) 的 PowerCLI 版本。此 PowerShell 版本是跨平台的,可以在 Windows、Linux 或 macOS 中使用。仅针对 Windows PowerShell 5.x 的早期 PowerCLI 模块发布了安全修复程序。建议使用更新的 PowerShell Core 版本。
如何在Windows上安装VMware PowerCLI模块?
您可以在 Windows 中在线或离线安装 VMware PowerCLI。
要从 PowerShell Gallery 在线安装 PowerCLI,请运行以下命令:
Install-Module -Name VMware.PowerCLIPowerCLI vSphere 版本 6.5 或更早版本作为 MSI 安装程序分发。
如果您只想为当前用户安装该模块:
Install-Module VMware.PowerCLI -Scope CurrentUser默认情况下,从 PowerShell 库安装最新的 PowerCLI 版本。如果您想要安装特定的 PowerCLI 版本,您可以显示可用版本的完整列表并安装您想要的版本:
Find-Module -Name VMware.PowerCLI -AllVersions|select version
Install-Module -Name VMware.PowerCLI -RequiredVersion 12.4.0.17860403在安装过程中,系统将提示您更新 NuGet 提供程序。另外,请从不受信任的 PowerShell Gallery 存储库确认安装。您可以使用以下方法使其成为可信的
Set_PSRepositorycmdlet。
检查 PowerCLI 模块是否已安装并显示其版本:
Get-Module -ListAvailable VMware* | Select Name,version要更新 PowerCLI 模块版本,只需运行以下命令:
Update-Module -Name VMware.PowerCLI如果您在 Windows 中安装了 Choco 包管理模块,则可以在存储库中找到 PowerCLI 模块:
choco search vmware并安装它:
choco install vmware-powercli-psmodule
PowerCLI 模块在 winget 中尚不可用。
如果要在隔离计算机(断开连接的环境)上安装 PowerCLI,可以使用离线安装程序。
下载包含 PowerCLI 模块的 ZIP 文件 https://code.vmware.com/web/tool/vmware-powercli(当前 VMware-PowerCLI 12.4.1 的 ZIP 存档大小约为 80 MB);
将存档解压到计算机上包含 PowerShell 模块的目录(您可以使用以下命令获取 PoSh 模块目录的列表)
$env:PSModulePath)。通常
C:\Program Files\WindowsPowerShell\Modules用来。
解除阻止从互联网下载的文件:
cd “c:\Program Files\WindowsPowerShell\Modules” Get-ChildItem * -Recurse | Unblock-File打开 PowerShell 控制台并确保 PowerCLI 模块现在可用:
Get-Module -Name VMware.PowerCLI -ListAvailable
阅读有关 PowerShell 模块离线安装的更多信息。
要将 PowerCLI 模块导入到当前 PowerShell ISE 或 Visual Studio Code 会话,请运行以下命令:
Import-Module VMware.VimAutomation.Core
加载模块时您可能会看到以下错误消息:
Import-Module: File C:\Program Files\WindowsPowerShell\Modules\VMware.VimAutomation.Sdk\12.4.0.18627054\VMware.VimAutomation.Sdk.psm1 cannot be loaded because running scripts is disabled on this system.然后你必须配置PowerShell脚本执行策略。要允许在当前会话中使用该模块:
Set-ExecutionPolicy Unrestricted -Scope Process您可以使用远程计算机上安装的 PowerCLI 模块。为此,请使用 PSRemoting 远程导入它:
$session = New-PSSession -ComputerName mun-svr01将 PowerCLI 模块导入到您的计算机:
Import-Module -PSsession $session -Name VMware.VimAutomation.Core完成后不要忘记关闭会话:
Remove-PSSession $session在 Linux 上安装 PowerCLI 模块
您可以在 Windows 和 Linux 中安装和使用 PowerCLI。首先,在 Linux 主机上安装 PowerShell Core。然后在控制台中运行以下命令安装VMware PowerCLI:
pwsh
Install-Module -Name VMware.PowerCLI将模块导入到您的会话中:
Import-Module VMware.PowerCLI用于管理 VMware vSphere 和虚拟机的基本 PowerCLI 命令
您可以获取 PowerCLI 模块中的 cmdlet 列表,如下所示(有超过 2200 个命令可用):
Get-Command -Module *vmware*要禁用 VMware 客户体验改善计划 (CEIP) 通知,请执行以下操作:
Set-PowerCLIConfiguration -Scope AllUsers -ParticipateInCeip $false要连接到 vCenter Server 或 ESXi 主机:
Connect-VIServer <vCenter_or_ESXi_FQDN>如果您的 vCenter Server 使用自签名 SSL 证书,PowerCLI 将阻止连接:
Connect-VIServer Error: Invalid server certificate. Use Set-PowerCLIConfiguration to set the value for the InvalidCertificateAction option to Prompt if you'd like to connect once or to add a permanent exception for this server.
Additional Information: Could not establish trust relationship for the SSL/TLS secure channel with authority.忽略自签名证书:
Set-PowerCLIConfiguration -Scope AllUsers -InvalidCertificateAction Warn要显示在 ESXi(或 vCenter)服务器上注册的虚拟机列表:
Get-VM仅显示已关闭的虚拟机:
Get-VM | Where {$_.Powerstate -ne “PoweredOn”} | Select Name, VMHost, NumCPU, MemoryMB, Version|Format-Table要启动虚拟机:
Start-VM -VM MUNTestVM1要正确重新启动虚拟机(使用 VMware 工具代理):
Restart-VMGuest -VM MunTestVM1 -Confirm:$False关闭虚拟机:
Shutdown-VMGuest -VM MunTestVM1 -Confirm:$False要显示 VM 的快照列表:
Get-VM -VM MunTestVM1 | Get-Snapshot| Format-List要使用 VMotion 将正在运行的 VM 移动到另一台主机,请使用 Move-VM 命令。例如,您想要将所有虚拟机从 mun-esxi1 移动到 mun-esxi2:
Get-VMHost mun-esxi1|Get-Vm| Move-VM -Destination (Get-VMHost mun-esxi2)要创建新虚拟机,请使用 New-VM cmdlet:
New-VM -Name MunTestVM1 -VMHost mun-esxi1 -ResourcePool Production -DiskGB 20 -DiskStorageFormat Thin -Datastore MUN_MSA2000_Prod1使用
Set-VMcmdlet 以更改虚拟机设置。
使用 PowerCLI cmdlet,您可以与虚拟机的来宾操作系统进行交互。为此,必须在虚拟机中安装 VMware Tools。您可以更新 VMware Tools,如下所示:
Get-VMGuest MunTestVM1 | Update-Tools使用 Invoke-VMS,您可以在来宾 Windows 操作系统中运行脚本或程序:
$script = '"%programfiles%\Common Files\Microsoft Shared\MSInfo\msinfo32.exe" /report "%tmp%\inforeport"'
Invoke-VMScript -ScriptText $script -VM MunTestVM1 -HostCredential $hostCred -GuestCredential $VMCred -ScriptType Bat要将文件复制到所有虚拟机,请运行以下命令:
Get-VM | Copy-VMGuestFile -Source C:\PS\get-size.ps1 -Destination C:\PS\ - LocalToGuest -GuestUser administrator -GuestPassword P@ssdr0w2该模块包含用于管理集群、数据中心、数据存储和 ESXi 主机的 cmdlet:
Get-VMHost
Get-Datacenter
Get-Cluster
Get-Datastore
Get-VirtualPortGroup要显示集群中的 ESXi 主机列表:
Get-Cluster munprod1 | Get-VMHost | sort name将特定 ESXi 主机置于维护模式:
Set-VMhost -VMHost mun-esxi1 -State Maintenance要将 iSCSI LUN 连接到 ESXi 主机并在其上创建 VMFS 数据存储:
Get-ScsiLun -VmHost mun-esxi1 | ftNew-Datastore -Name 'mun_iscsi_datastore' -VMHost mun-esxi1 -Path naa.6000xxxxxxxxxxxxxxxx -Vmfs提示。PowerCLI 以只读模式与免费的 VMware vSphere Hypervisor 配合使用。这意味着您可以使用命令查看主机和虚拟机设置,但无法更改它们。
PowerCLI 示例脚本
有一些使用 PowerCLI 获取有关 VMware 基础架构项目的信息并在网站上自动执行某些操作的示例。您可以使用以下文章中的示例来编写自己的 PowerCLI 脚本:
检查 VMFS 数据存储上的可用磁盘空间
映射 VMware 虚拟磁盘(VMDK 文件)和 Windows 驱动器卷
如何通过IP或MAC地址查找VMware虚拟机?
在 VMware ESXi 主机上配置 SNMP
如何强制重启卡住的 VMware 虚拟机?
将驱动程序注入 ESXi 安装映像
VMware VM 需要整合状态警报
升级虚拟机硬件版本
vSphere PowerCLI 是一款用于管理和自动化 VMware 基础架构的强大工具。 PowerCLI 包括 2000 多个 cmdlet,用于管理云和本地 VMware 基础架构(vSphere、vSAN、vRealize Operations Manager、vCloud Director、Site Recovery Manager、Horizon、NSX-T、VMware Cloud Services、VMware Cloud on AWS 等)。




