PowerCLI 入门指南

PowerCLI 入门指南

基本概念

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的命令行。

PowerCLI Inventory Provider

使用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命令

PowerCLI命令默认等待运行结束接受返回结果,如果执行一系列任务而并不想等待每条命令结束,可以使用-RunAsync参数。此时命令只返回任务对象,包含任务的初始状态,此状态不会自动更新,需要使用Get-Task获取任务对象的状态。如果关注运行过程并等待结束,可以使用Wait-Task

命令示例

连接和断开vCenter

在做任何操作之前,首先连接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自动化维护的难度。

你可能感兴趣的:(PowerShell)