Powercli: Auto Vmware Tools Upgrade

Vmware tools upgrade islemleri icin bir script yazdim. Bu script vmware alt yapinizdaki vmware tools upgrade bekleyen sunuculari secerek upgrade islemini gerceklestiriyor. Fakat ilave bir kac adim daha ekleyerek bu isleri otomatiklestirmek gerekebiliyor. Script asadigaki adimlari gerceklestiriyor. Test amacli islem yapmak icin yada kontrollu gitmek icin  (| select -First 1) parametresini ekledim. Bu her calistirmada sadece 1 vm uzerinde islem yapmamizi sagliyor.

2. adimda VmwareUpdate-OM adinda bir snapshot olusturuyoruz.

3. adimda snapshotu cagiriyor. bu sadece test amacli

4. adim bu vm icin vmware console aciyor.

5. adim Vmware tools update islemini baslatiyor.

6. adim desktonuzdaki VmwareToolsUpgradeLog.txt dosyasina islem yapilan sunucu ve islem saatini yaziyor.

7. adim yorum satirinda Get-vm | Get-Snapshot -Name “VmwareUpdate-OM” | Remove-Snapshot -confirm:$false tum islemleri bitirdikten sonra ilgili snapshotlari topluca silebilirsiniz.

 

Ilk islem sunucudaki poweredOn durumdaki sunucular arasinda vmware tools upgrade bekleyenleri listeliyor. Ben ayrica operating system de belirttirm eger siz kullanmak istemiyorsaniz -and dan sonraki bolumu silebilirsiniz. Ornekte Windows 2016 sunuculari da filtreliyor.

 


$localUser = $env:USERNAME
#Importing Powershell Gallery PowerCLI Module

Import-Module -Name VMware.PowerCLI

# Connecting Vcenter Server
Connect-VIServer -Server vcenterip -user your-username -Password password

Clear-Host

$logPath = "C:\Users\$localUser\Desktop\VmwareToolsUpgradeLog.txt"

$vms =  Get-VM | Where-Object {$_.PowerState -eq "PoweredOn" -and $_.ExtensionData.Guest.ToolsVersionStatus -eq "guestToolsNeedUpgrade" -and $_.ExtensionData.Guest.GuestFullName -eq "Microsoft Windows Server 2016 or later (64-bit)"} | select -First 1

foreach($vm in $vms){

$vm | New-Snapshot -Name "VmwareUpdate-OM" -Memory

$vm | Get-Snapshot

$vm | Open-VMConsoleWindow -FullScreen

$vm | Update-Tools -NoReboot

"$vm.name : Vmware Tools Upgraded | $(Get-date)" | Add-Content -Path $logPath


}

#Remove Vm Snapshots
#Get-vm | Get-Snapshot -Name "VmwareUpdate-OM" | Remove-Snapshot -confirm:$false


Disconnect-VIServer -Server * -Force

 

Join the ConversationLeave a reply

Your email address will not be published. Required fields are marked *

Comment*

Name*

Website