WordPress.com



Function Convert-TemplateToVM($template){Write-Host "Converting" $vm -ForegroundColor YellowSet-Template $template -ToVM -RunAsync | out-null}Function PowerOn-VM($vm){Start-VM -VM $vm -Confirm:$false -RunAsyncdo {$vmview = get-VM $vm | Get-View$status = $vmview.Guest.ToolsStatusWrite-Host $vm is starting! -ForegroundColor Yellowsleep 5}until(($status -match "toolsOld") -or ($status -match "toolsOk"))if ($status -match "Ok"){$Startup = "Ok"}elseif($status -match "toolsOld"){$Startup = "ToolsOld"}else{$Startup = "Not Ready"}return $Startup}Function Check-ToolsStatus($vm){$vmview = get-VM $vm | Get-View$status = $vmview.Guest.ToolsStatusif ($status -match "toolsOld"){$vmTools = "Old"}elseif($status -match "toolsNotRunning"){$vmTools = "Not Running"}else{$vmTools = "Ok"}return $vmTools}Function Check-VMHardwareVersion($vm){$vmView = get-VM $vm | Get-View$vmVersion = $vmView.Config.Version$v4 = "vmx-04"$v7 = "vmx-07"if ($vmVersion -eq $v4){$vmHardware = "Old"}elseif($vmVersion -eq $v7){$vmHardware = "Ok"}else{Write-Host "Error!!" -ForegroundColor Red$vmHardware = "Error"}return $vmHardware}Function PowerOff-VM($vm){sleep 20Shutdown-VMGuest -VM $vm -Confirm:$falsedo {$vmview = Get-VM $vm | Get-View$status = $vmview.Guest.ToolsStatusWrite-Host $vm is stopping! -ForegroundColor Yellowsleep 5}until($status -match "toolsNotRunning") if ($status -match "toolsNotRunning"){$Shutdown = "Ok"}else{$Shutdown = "Not Ready"}return $Shutdown}Function ConvertTo-Template($vm){Write-Host "Converting" $vm -ForegroundColor Yellow$vmview = Get-VM $vm | Get-View$vmview.MarkAsTemplate() | Out-Null}Function Upgrade-VMHardware($vm){$vmview = Get-VM $vm | Get-View$vmVersion = $vmView.Config.Version$v4 = "vmx-04"$v7 = "vmx-07"if ($vmVersion -eq $v4){Write-Host "Version 4 detected" -ForegroundColor Red# Update HardwareWrite-Host "Upgrading Hardware on" $vm -ForegroundColor YellowGet-View ($vmView.UpgradeVM_Task($v7)) | Out-Null}}$vCenter = Read-Host "Enter your vCenter servername"Connect-VIServer $vCenter$tmpfile = "$env:temp\tmpfile.csv"$templates = Get-Template -Name * | Export-Csv -NoTypeInformation $tmpfile$csv = Import-CSV $tmpfileforeach($item in $csv){$template = $item.Name#Convert Template back to VMConvert-TemplateToVM $template}foreach($item in $csv){$vm = $item.Name$vmHardware = Check-VMHardwareVersion $vmif ($vmHardware -eq "Ok"){Write-Host $vm "is up to date" -ForegroundColor GreenConvertTo-Template $vm}else{Write-Host "Hardware is old" -ForegroundColor Redif(PowerOn-VM $vm -eq "Ok"){Write-Host "PowerOn Complete" -ForegroundColor Greensleep 10$vmToolsStatus = Check-ToolsStatus $vmif($vmToolsStatus -eq "Old"){Write-Host "The VMware Tools are old" -ForegroundColor RedSleep 20 Get-VMGuest $vm | Update-ToolsSleep 120Write-Host "VMware Tools are installed on:" $vm -ForegroundColor Cyan$vmToolsStatus = Check-ToolsStatus $vmif($vmToolsStatus -eq "Ok"){$PowerOffVM = PowerOff-VM $vmif($PowerOffVM -eq "Ok"){Write-Host $vm "is down" -ForegroundColor YellowUpgrade-VMHardware $vmConvertTo-Template $vmWrite-Host $vm "is up to date" -ForegroundColor Green}}}else{$PowerOffVM = PowerOff-VM $vmif($PowerOffVM -eq "Ok"){Upgrade-VMHardware $vmConvertTo-Template $vmWrite-Host $vm "is up to date" -ForegroundColor Green}}}}}Remove-Item $tmpfile -Confirm:$falseDisconnect-VIServer -Confirm:$false ................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download