環境:windows10
安裝方式:在線、離線
PowerCLI Version:v12.0.0
1、PowerCLI在線安裝
快捷鍵win+q搜索PowerShell,以管理員身份打開,輸入
#查找模塊
Find-Module -Name VMware.PowerCLI
#安裝模塊
Install-Module -Name VMware.PowerCLI -Scope CurrentUser
如果您希望它可供計算機的所有用戶使用,則您的PowerShell會話必須以管理員身份運行,並且將通過將Scope參數更改為AllUsers,為所有用戶自動安裝PowerCLI。
2、PowerCLI離線安裝
2.1 下載離線zip:https://code.vmware.com/web/dp/tool/vmware-powercli/
2.2 解壓到ps模塊目錄下
C:\Windows\System32\WindowsPowerShell\v1.0\Modules
2.3 打開PowerShell導入模塊
Import-Module VMware.PowerCLI
2.4 導入報錯
如果導入報錯:Import-Module : 無法加載文件 C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules\VMware.VimAutomation.Sdk\VMware.VimAutomation.Sdk.psm1,因為在此系統上禁止運行腳本。有關詳細信息,請參閱 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。
可能是Win10新版本中PowerShell的Execution Policies為Undefined,較嚴格,修改一下就好。
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Import-Module VMware.PowerCLI
3、關閉PowerCLI提示
預操作:以下兩條執行一次以后就不用了,不然老出提示。
#關閉CEIP( Customer Experience Improvement Program 客戶體驗改進計划)
Set-PowerCLIConfiguration -Scope User -ParticipateInCEIP $false
#忽略證書驗證
Set-PowerCLIConfiguration -InvalidCertificateAction Ignore
連接Vcenter:
Connect-VIServer -Protocol https -User 'administrator@vsphere.local' -Password 'yourpass' -Server 192.168.x.x
獲取主機:Get-VMHost
獲取虛擬機:Get-VM
4、准備PowerCLI腳本及表格
4.1 windows創建一個目錄test,點擊進入,創建文件esxi_batchinstall_virtual.ps1,把腳本內容拷貝進去,腳本如下:
#Author:Robin
#version:v0.1
#env:stage
$vms = Import-CSV .\DeployVM.csv
$templatenic = 'ifcfg-eth0'
$templateuser = 'root'
$templatepass = 'robinpassword'
Connect-VIServer -Protocol https -User 'administrator' -Password 'robinpassword' -Server 10.10.10.10
foreach ($vm in $vms){
$Template = Get-Template $vm.Template
$VMHost = Get-VMHost $vm.PhysicalHost
$Datastore = Get-Datastore $vm.Datastore
#新建虛擬機
New-VM -Name $vm.Name -Template $Template -VMHost $VMHost -Datastore $Datastore -RunAsync -Location $vm.Esxidir
Start-Sleep -s 60
Get-VM $vm.Name| Start-VM
Start-Sleep -s 60
$sss='hostnamectl set-hostname '+$vm.Hostname+' && sed -i "/^IPADDR/c\IPADDR='+$vm.Ipaddr+'" /etc/sysconfig/network-scripts/'+$templatenic+' && sed -i "/^NETMASK/c\NETMASK='+$vm.Netmask+'" /etc/sysconfig/network-scripts/'+$templatenic+' && sed -i "/^GATEWAY/c\GATEWAY='+$vm.Gateway+'" /etc/sysconfig/network-scripts/'+$templatenic+' && cat /etc/sysconfig/network-scripts/'+$templatenic+' && /etc/init.d/network restart'
#修改並重啟網卡
Get-VM $vm.Name | Invoke-VMScript -ScriptText $sss -GuestUser $templateuser -GuestPassword $templatepass
}
4.2 在腳本當前目錄創建DeployVM.csv
創建的DeployVM.csv,內容有下
Name:vmware vcenter平台顯示的虛擬機名稱
Template:vmware vcenter的存在的模板名稱
PhysicaHost:vmware esxi宿主機IP地址,或者資源池
Datastore:vmware esxi存儲名稱
Ipaddr:新創建虛擬機的IP
Netmask:新創建虛擬機的子網掩碼
Gateway:新創建虛擬機的網關
Hostname:新創建虛擬機的主機名
Esxidir:vmware vcenter里面的目錄,即
4.3 執行腳本
當前位置按shift鍵同時右鍵點擊空白處,選擇打開PowerShell