VMwarePowercli常用脚本.docx
- 文档编号:5096067
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:38
- 大小:29.95KB
VMwarePowercli常用脚本.docx
《VMwarePowercli常用脚本.docx》由会员分享,可在线阅读,更多相关《VMwarePowercli常用脚本.docx(38页珍藏版)》请在冰豆网上搜索。
VMwarePowercli常用脚本
VMwarePowercli常用脚本
市XXX
2016年12月
1.1修改ESXI主机的root密码5
1.2将本地文件传输到VM5
1.3修改虚拟机硬件版本5
1.4查看虚拟机快照6
1.5更改虚拟机网卡6
1.6批量开关虚拟机6
1.7批量模板化创建虚拟机6
1.8删除告警7
1.9更新vCenter上的集群8
1.10将主机添加进vCenter11
1.11为主机添加及配置iSCSI端口11
1.12添加及配置ESXI主机13
1.13创建VMFSdatastore19
1.14检索ESXI的网络信息21
1.15修改虚拟机绑定的端口组25
1.16创建新的vDS27
1.17创建新的分布式交换机端口组27
1.18查看分布式交换机绑定的主机27
1.19添加主机到分布式交换机28
1.20配置分布式交换机端口组VLAN28
1.21创建新的虚拟机28
1.22为虚拟机添加VMXNET3网卡29
1.23为虚拟机添加磁盘29
1.24通过模板部署虚拟机29
1.25通过模板及自定义规部署虚拟机29
1.26通过模板及自定义规部署虚拟机,并检查是否有足够的可用空间30
1.27重新注册虚拟机31
1.28导入虚拟机信息表32
1.29批量创建虚拟机32
1.30更改虚拟机默认网关33
1.31批量修改虚拟机IP信息33
1.32Windows静默安装vmtools34
1.33Linux静默安装vmtools35
1.34批量安装vmtools37
1.35更新vmtools38
1.36将虚拟机转换成模板38
1.37将虚拟机克隆成模板38
1.38通过自定义规为Windows绑定静态的IP地址38
1.39更新虚拟机硬件版本39
1.40关机更改虚拟机存和vCPU39
1.41通过磁盘拷贝的方式将磁盘从厚模式转换成瘦模式43
1.42将一个数据存储上的所有虚拟机迁移到另一个数据存储46
1.43查找创建时间超过两个星期的快照及创建者49
1.1修改ESXI主机的root密码
$strOldRootPassword="vmware1!
"
$strNewRootPassword="vmware2!
"
$arrHostsWithErrors=()
Get-VMHost|ForEach-Object{
$ConnectVIServer=Connect-VIServer-Server$_.Name-Userroot-Password$strOldRootPassword
$VMHostAccount=$null
$VMHostAccount=Set-VMHostAccount-Server$_.Name-UserAccount(Get-VMHostAccount-Server$_.Name-Userroot)-Password$strNewRootPassword
if(($VMHostAccount-eq$null)-or($VMHostAccount.GetType().Name-ne"HostUserAccountImpl")){$arrHostsWithErrors+=$_.Name}
Disconnect-VIServer-Server$_.Name-Confirm:
$false
}
1.2将本地文件传输到VM
$vm=Get-VM -Name vmname
Get-Item "C:
\Temp\*.*" | Copy-VMGuestFile -Destination -"C:
\Temp\" -VM $vm -LocalToGuest -HostUser root -HostPassword password -GuestUser administrator -GuestPassword guestpassword
1.3修改虚拟机硬件版本
Set-VM -VM vm01 -version v9 -confirm:
$false
1.4查看虚拟机快照
Get-VM | Get-Snapshot #显示快照列表
Get-VM | Get-Snapshot | format-list #详细显示快照信息
1.5更改虚拟机网卡
Get-VM vmname | Get-NetworkAdapter | Where {$_.Type -eq "E1000"} | Set-NetworkAdapter -Type vmxnet3
1.6批量开关虚拟机
$scope=1..50
$namestart="vm"
#打开50台虚拟机(从vm1到vm50)
foreach($vin$scope){
$name=$namestart+$v
Get-VM-Name$name|Start-VM-Confirmfalse
}
1.7批量模板化创建虚拟机
New-vm-vmhost-NameSVR02-TemplateWIN2008R2_Template-Datastoredatastore1-OSCustomizationspecWIN2008R2_Template
命令中参数说明:
-vmhost:
VM生成的目标ESXi主机;-Name:
生成的VM的名字;
-Template:
用于生成VM的模板主机;
-Datastore:
生成的虚拟机的存放数据存储;
-OSCustomizationspec:
定制化部署VM的prep目录
1.8删除告警
functionRemove-Alarm{
<#
.SYNOPSIS
Removesoneormorealarms
.DESCRIPTION
Thefunctionwillremoveallthealarmswhose
namematches.
.NOTES
Source:
AutomatingvSphereAdministration
Authors:
LucDekens,ArnimvanLieshout,JonathanMedd,
AlanRenouf,GlennSizemore
.EXAMPLE
PS>Remove-Alarm-Name"Book:
MyAlarm"
.EXAMPLE
PS>Remove-Alarm-Name"Book:
*"
#>
param(
[string]$Name
)
process{
$alarmMgr=Get-ViewAlarmManager
$alarmMgr.GetAlarm($null)|%{
$alarm=Get-View$_
if($alarm.Info.Name-like$Name){
$alarm.RemoveAlarm()
}
}
}
}
1.9更新vCenter上的集群
functionUpdate-vCenterCluster{
<#
.SYNOPSIS
PatchaclusterthatcontainsvCenterorVUMVMs.
.DESCRIPTION
PatchaclusterthatcontainsvCenterorVUMVMs.
.NOTES
Authors:
LucDekens&JonathanMedd
.PARAMETERClusterName
Nameofclustertopatch
.PARAMETERBaselineName
Nameofbaselinetouseforpatching
.EXAMPLE
Update-vCenterCluster-ClusterNameCluster01-BaselineName'ESXi4.0U2-Current'
#>
[CmdletBinding()]
Param(
[parameter(Mandatory=$True
HelpMessage='Nameofclustertopatch'
)]
[String]
$ClusterName
[parameter(Mandatory=$True
HelpMessage='Nameofbaselinetouseforpatching'
)]
[String]
$BaselineName
)
$baseline=Get-Baseline-Name$BaselineName
#FindVUMserver
$extMgr=Get-ViewExtensionManager
$vumExt=$extMgr.ExtensionList|where{$_.Key-eq".vmware.vcIntegrity"}
$vumURL=($vumExt.Server|where{$_.Type-eq"SOAP"}).Url
$vumSrv=($vumUrl.Split("/")[2]).Split(":
")[0]
$vumSrvShort=$vumSrv.Split(".")[0]
$vumVM=Get-VM-Name$vumSrvShort
#FindVCserver
$vcSrvShort=$extMgr.Client.ServiceUrl.Split("/")[2].Split(".")[0]
$vcVM=Get-VM-Name$vcSrvShort
#Patchtheclusternodes
$hostTab={}
Get-Cluster-Name$ClusterName|Get-VMHost|%{
$hostTab[$_.Name]=$_
}
$hostTab.Values|%{
$vm=$null
if($_.Name-eq$vumVM.Host.Name){
$vm=$vumVM
}
if($_.Name-eq$vcVM.Host.Name){
$vm=$vcVM
}
if($vm){
$oldNode=$_
$newNode=$hostTab.Keys|where{$_-ne$oldNode.Name}|Select-First1
$vumVM=$vumVM|Move-VM-Destination$newNode-Confirm:
$false
}
Remediate-Inventory-Entity$_-Baseline$baseline
}
}
1.10将主机添加进vCenter
#AddourhosttovCenter,andimmediatelyenablelockdownmode!
$VMhost=Add-VMHost-NamevSphere03.vSphere.local`
-Userroot`
-Passwordpa22word`
-Location(Get-Datacenter)`
-Force|
Set-VMHostLockdown–Enable
1.11为主机添加及配置iSCSI端口
#AddiSCSIVMkernelvNIC
$vSwitch=Get-VirtualSwitch-VMHost$VMHost-Name'vSwitch0'
#wehavetofirstcreateaportgrouptobindourvNICto.
$vPG=New-VirtualPortGroup-NameiSCSI`
-VirtualSwitch$vSwitch`
-VLanId55
#CreateournewvNICintheiSCSIPGwejustcreated
$vNIC=New-VMHostNetworkAdapter-VMHost$VMHost`
-PortGroupiSCSI`
-VirtualSwitch$vSwitch`
-IP10.10.55.3`
-SubnetMask255.255.255.0
#EnablethesoftwareISCSIadapterifnotalreadyenabled.
$VMHostStorage=Get-VMHostStorage-VMHost$VMhost|
Set-VMHostStorage-SoftwareIScsiEnabled$True
#sleepwhileiSCSIstartsup
Start-Sleep-Seconds30
#BydefaultvSpherewillsettheTargetNodenameto
#iqn.1998-01..vmware:
#followingcmdwillremoveeverythingafterthehostname,set
#Chapauth,andaddasendTarget.
#
#Exampleiqn.1998-01..vmware:
esx01-165435becomes
#iqn.1998-01..vmware:
esx01
#
#Notethatifyourhostnamehasdashesinit,you抣l
#needtochangetheregexbelow.
$pattern="iqn.1998-01..vmware\:
\w*"
Get-VMHostHba-VMHost$VMHost-TypeIScsi|
Where-Object{$_.IScsiName-match$pattern}|
Set-VMHostHba-IScsiName$Matches[0]|
Set-VMHostHba-ChapName'vmware'`
-ChapPassword'password'`
-ChapType"Required"|
New-IScsiHbaTarget-Address'192.168.1.1'-Port"3260"|
Out-Null
1.12添加及配置ESXI主机
FunctionConfigureVMHost
{
<#
.SYNOPSIS
Get-AdminstandardvSpherePostconfigurationscript
Shouldonlyberanagainstafresthost.
.DESCRIPTION
Get-AdminstandardvSpherePostconfigurationscript
Shouldonlyberanagainstafresthost.
.PARAMETERIPAddress
IPAddressofthehosttoconfigure
.PARAMETERCluster
Nameoftheclustertoaddourhostto.
.PARAMETERUser
Usertologinasdefaultisroot
.PARAMETERPassword
Passwordtologinwithifneeded
.EXAMPLE
ConfigureVMHost-IPAddress10.10.1.40`
-ClusterDC04_PROD_06
#>
[cmdletbinding()]
Param(
[Parameter(
Mandatory=$true
ValueFromPipelineByPropertyname=$true
)]
[String]
$IPAddress
[Parameter(
Mandatory=$true
ValueFromPipelineByPropertyName=$True
)]
[String]
$Cluster
[Parameter(
ValueFromPipelineByPropertyName=$True
)]
[string]
$User='root'
[Parameter(
ValueFromPipelineByPropertyName=$True
)]
[string]
$password
)
#whilestaticenoughtonotbeparameterizedwe'llstill
#defineouradvancediSCSIconfigurationupfrontthereby
#simplifyinganyfuturemodifications.
$ChapName='vmware'
$ChapPassword='password'
$ChapType='Required'
$IScsiHbaTargetAddress='10.10.11.200','10.10.11.201'
$IScsiHbaTargetPort='3260'
#we'llusethelastoctetoftheIPAddressastheIDfor
#thehost.
$ESXID=$IPaddress.split(".")[3]
#Gettheactualclusterobjectforourtargetedcluster.
$ClusterImpl=Get-Cluster-Name$Cluster
#Gettheparentfolderourclusterresidesin.
$Folder=`
Get-VIObjectByVIView$ClusterImpl.ExtensionData.Parent
Write-Verbose"Adding$($IPAddress)tovCenter"
#AddourhosttovCenter,andimmediatelyenable
#lockdownmode!
$VMHost=Add-VMHost-Name$IPAddress`
-User$user`
-Password$Password`
-Location$Folder`
-Force`
-EA'STOP'|
Set-VMHostLockdown-Enable
#EnterMaintenancemode
$VMHost=Set-VMHost-State'Maintenance'-VMHost$VMHost|
Move-VMHost-Destination$Cluster
#$VMHost=Get-VMHost-Name$IPAddress
#GettheHostprofileattachedtothatcluster
$Hostprofile=Get-VMHostProfile-Entity$Cluster
#attachprofiletoournewhost
Apply-VMHostProfile-Entity$VMHost`
-Profile$HostProfile`
-AssociateOnly`
-Confirm:
$false|
Out-Null
#Applyourhostprofiletogatheranyrequiredvalues
$AdditionConfiguration=`
Apply-VMHostProfile-Entity$VMHost`
-Profile$HostProfile`
-ApplyOnly`
-Confirm:
$false
#Ifwehaveahashtablethenthereareadditionalconfig
#Itemsthatneedtobedefined.Loopthroughandattempt
#tofillthemin,promptingifwecomeacrosssomething
#we'renotpreparedfor.
if($AdditionConfiguration.gettype().name-eq'Hashtable')
{
#Createanewhashtabletoholdourinformation
$Var={}
#Loopthroughthecollection
switch($AdditionConfiguration.GetEnumerator())
{
{$_.name-like'*iSCSI*.address'}{
$var+={$_.Name=$('10.10.10.{0}'-f$ESXID)}}
{$_.name-like'*iSCSI*.subnetmask'}{
$var+={$_.Name='255.255.255.0'}}
{$_.name-like'*vMotion*.address'}{
$var+={$_.Name=$('10.10.11.{0}'-f$ESXID)}}
{$_.name-like'*vMotion*.subnetmask'}{
$var+={$_.Name='255.255.255.0'}}
Default{
$value=Read-Host`
"Pleaseprovideavaluefor$($_.Name)"
$var+={$_.Name=$value}
}
}
#Appl
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VMwarePowercli 常用 脚本