PowerCLI是VMware官方推出的基于Windows PowerShell的命令行和脚本工具,包含多个模块,提供了大部分自动化管理的功能,能管理的产品包括vSphere, vCloud, vRealize Operations Manager, vSAN, NSX-T, VMware Cloud on AWS, VMware Horizon environments。
下载地址:https://code.vmware.com/tool/vmware-powercli/11.0.0
VMware.PowerCLI:其他模块的基础模块,确保安装、升级、卸载PowerCLI时将所有模块作为一个整体。
VMware.VimAutomation.Core:最常用的模块,提供自动化管理vSphere环境的命令行。如创建删除VM、快照等。
VMware.VimAutomation.Common:此模块没有任何命令,只为其他模块提供通用功能。
VMware.VimAutomation.Sdk:此模块没有任何命令,只为其他模块提供通用功能。
VMware.VimAutomation.Vds:提供管理分布式交换机和端口组的命令。
VMware.VimAutomation.Cis.Core:提供管理Automation SDK server的命令。
VMware.VimAutomation.Storage: 提供管理存储的命令行。
VMware.VimAutomation.StorageUtility:提供管理存储的脚本工具。
VMware.VimAutomation.License:Get-LicenseDataManager
管理License组件。
VMware.ImageBuilder:管理Esx软件仓库depots, image profiles,VIBs的模块。
VMware.DeployAutomation:针对物理host主机的VMware Auto Deploy的管理接口。
VMware.VimAutomation.Cloud: vCloud Director相关的命令行。
VMware.VumAutomation:vSphere Update Manager的相关命令行。
VMware.VimAutomation.vROps:vRealize Operations Manager的相关命令行。
VMware.VimAutomation.Srm:VMware Site Recovery Manager的管理命令行。
VMware.VimAutomation.HorizonView:VMware Horizon 命令行
VMware.VimAutomation.Nsxt:提供管理NSX-T servers的命令行。
VMware.VimAutomation.Vmc:管理VMware Cloud on AWS的命令行。
使用Connect-VIServer
连接服务器时,会默认创建两个驱动(drive):vi和vis,vi表示上次连接的服务器的清单,vis表示目前Session中所有已连接的vSphere服务器清单。这种驱动器提供了一种类似文件目录的方式来访问和操作服务器中的各种对象。
Get-PSDrive
Name Used (GB) Free (GB) Provider Root
---- --------- --------- -------- ----
vi VimInventory \LastConnectedVCenterServer
vis VimInventory \
vmstore VimDatastore \LastConnectedVCenterServer
vmstores VimDatastore \
cd vis:
vis:\> ls
Name Type Id
---- ---- --
TSNH Datacenter Datacenter-d...
PEKF Datacenter Datacenter-d...
PEKW Datacenter Datacenter-d..
PowerCLI命令默认等待运行结束接受返回结果,如果执行一系列任务而并不想等待每条命令结束,可以使用-RunAsync
参数。此时命令只返回任务对象,包含任务的初始状态,此状态不会自动更新,需要使用Get-Task
获取任务对象的状态。如果关注运行过程并等待结束,可以使用Wait-Task
。
在做任何操作之前,首先连接vCenter Server:
Connect-VIServer -Server 10.23.112.235 -Protocol https -Username 'Adminis!ra!or' -Password 'pa$$word'
https协议默认是443端口,可以使用-Port
参数指定端口。
使用Connect-VIServer
连接后,此连接存储在数组变量 $DefaultVIServers
中,这个变量存储了目前Session中所有已连接的服务器。使用Disconnect-VIServer
可以删除活动的连接,也可以直接操作$DefaultVIServers
。
查看所有虚拟机
Get-VM
获取资源池中所有虚拟机的电源状态
$respool = Get-ResourcePool ResourcePool
Get-VM -Location $respool | Select-Object Name, PowerState > myVMProperties.txt
开启虚拟机
Get-VM VM | Start-VM
关闭操作系统
Stop-VMGuest VM
关闭虚拟机电源
Stop-VM VM
在宿主机间移动虚拟机
Get-VM -Name VM -Location Host01 | Move-VM –Destination Host02
将独立的宿主机加入vCenter
Get-VMHost
Add-VMHost -Name Host -Location (Get-Datacenter DC) -User root -Password pass
新建vSphere Inventory对象
$folder = Get-Folder -NoRecursion | New-Folder -Name Folder
New-Datacenter -Location $folder -Name DC
Get-Datacenter DC | New-Folder -Name Folder1
$folder1 = Get-Folder -Name Folder1
New-Cluster -Location $folder1 -Name Cluster1 -DrsEnabled -DrsAutomationLevel FullyAutomated
$vmhost1 = Add-VMHost -Name 10.23.112.345 -Location (Get-Cluster Cluster1)
$myClusterRootRP = Get-Cluster Cluster1 | Get-ResourcePool -Name Resources
New-ResourcePool -Location $myClusterRootRP -Name MyRP1 -CpuExpandableReservation $true -
CpuReservationMhz 500 -CpuSharesLevel high -MemExpandableReservation $true -MemReservationGB 1 -
MemSharesLevel high
$vmCreationTask = New-VM -Name VM2 -VMHost $vmhost1 -ResourcePool MyRP01 -DiskGB 100 -MemoryGB 2 -
RunAsync
管理虚拟机模板
New-Template -VM VM1 -Name VM1Template -Location (Get-Datacenter DC )
Get-Template VM1Template | Set-Template -ToVM -Name VM3
New-Template -VM VM2 -Name VM2Template -Location (Get-Datacenter DC )
Get-Template VM2Template | Set-Template -ToVM -Name VM4
Set-VM –VM VM4 –ToTemplate –Name “VM4Template”
Get-Template VM2Template | New-Template -Name VM3Template –VMHost $targetVMHost
Set-VM –VM VM4 –ToTemplate –Name “VM4Template”
Get-Template VM2Template | New-Template -Name VM3Template –VMHost $targetVMHost
创建和使用快照
Get-ResourcePool MyRP01 | Get-VM | New-Snapshot -Name InitialSnapshot
$VMs = Get-ResourcePool MyRP01 | Get-VM
foreach( $vm in $VMs ) { Set-VM -VM $vm –Snapshot InitialSnapshot }
PowerCLI 已经是很完善的自动化工具,能胜任大部分管理任务,极大降低了对于VMware自动化维护的难度。