Powershell导入VMware强大的管理工具-PowerCLI
一、PowerCLI介绍
什么是 PowerCLI?
PowerCLI 是一个命令行工具,可以用于自动化vSphere管理,包括网络,存储, 虚拟机以及其他很多功能。PowerCLI包含超过700个命令。
要安装PowerCLI,你至少需要确保你的PowerShell版本不低于5.1。
二、PowerCLI安装
1.PowerShell命令行直接安装,此下载会比较慢,因为要连接外网下载,非常大概率下载失败。
Install-Module VMware.PowerCLI
2.离线安装PowerCLI
下载PowerCLI离线包,点击下载离线模块
打开powershell,查看Powershell环境变量路径,将下载离线包解压到下述其中一个路径即可。
注意:请把模块解压后的文件目录复制到其中一个Powershell环境变量路径,建议复制到如下路径。
PS C:\Windows\system32> $env:PSModulePath -split ";" C:\Users\dengpeng\Documents\WindowsPowerShell\Modules C:\Program Files\WindowsPowerShell\Modules C:\Windows\system32\WindowsPowerShell\v1.0\Modules
#运行命令导入模块 Get-ChildItem -Path xxxxx -Recurse | Unblock-File #查看是否已经导入成功 Get-Module VMware* -ListAvailable #对于Powershell,默认禁止运行脚本,需要开放 set-ExecutionPolicy RemoteSigned #最后别忘了关闭powercli的证书检查,因为通常vCenter都是使用自签名证书,不受信任 Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -Confirm:$false #加载一下VMware.PowerCLI模块
3.PowerCLI几个常见的使用方式
#连接到vCenter Connect-ViServer -Server vcenter_ip-or-esxi_ip -User username -Password some_very_secure_password #查询虚拟机列表,验证是否连接成功 Get-VM #导出关机虚拟机列表 Get-VM | Where-Object {$_.PowerState -eq "PoweredOff"} | Export-Csv -Path c:\users\username\desktop\poweredoff-vms.csv -NoTypeInformation #导出虚拟机列表,仅包含部分信息 Get-VM | Select Name,PowerState,NumCPU,MemoryMB | Export-Csv -Path c:\users\username\desktop\vms.csv -NoTypeInformation #开启虚拟机 Get-VM vmname | Start-VM #关闭虚拟机电源,硬关机 Stop-VM -VM vmname -Confirm:$False #关闭虚拟机,软关机,需要VMTools正常安装并运行 Shutdown-VMGuest -VM vmname -Confirm:$False #重置虚拟机,硬重启 Restart-VM -VM vmname -Confirm:$False #重启虚拟机,软重启,需要VMTools正常安装并运行 Restart-VMGuest -VM vmname -Confirm:$False #vMotion虚拟机到另一个主机 Get-VM -Name vmname -Location esxi01 | Move-VM –Destination esxi02 #新版本vCenter导出虚拟机都是ovf+vmdk+mf+nvram文件了,要是想导出一个ova格式的文件怎么办呢?通过PowerCLI来。以下连接vCenter执行。 #移除cd-rom Get-VM -Name "VMNAME" | Get-CDDrive | Set-CDDrive -NoMedia -confirm:$false #关机,注意,会将虚拟机关机的! Get-VM -Name "VMNAME" | Shutdown-VMGuest -confirm:$false #导出ova Get-VM -Name "VMNAME" | Export-Vapps -Destination "c:\users\username\desktop\vmname.ova" -Type OVA
#给虚拟机打标签 #给单个虚拟机打标签 Get-VM test_vm_name | New-TagAssignment -Tag tag_name #给虚拟机文件夹里面的虚拟机打标签 $vmlist = Get-Folder -Name folder_nam | Get-VM foreach ($vm in $vmlist) { Get-VM $vm | New-TagAssignment -Tag tag_name }
按照csv表格给虚拟机打标签(例如下表:vm-tag.csv)
vmname | vmtag |
vm01 | tag01 |
vm02 | tag02 |
$vms = Import-Csv -Path ~\Desktop\vm-tag.csv foreach ($vm in $vms) { Get-VM $vm.vmname | New-TagAssignment -Tag $vm.tagname }