########################### # Set-VMVideoAccLevel.ps1 # # Created by Hugo Peeters # # www.peetersonline.nl # ########################### # Variables $Hive = "LocalMachine" $RefKeyName = 'HARDWARE\DEVICEMAP\VIDEO' $LookupValue = 'Acceleration.Level' $errorActionPreference = "SilentlyContinue" $Writeable = $True $Full = 0 $Off = 5 # Script Add-PSSnapIn VMware.VimAutomation.Core $VC = Connect-VIServer (Read-Host "VC Server") $VMS = Get-VM | Where {$_.PowerState -eq "PoweredOn"} | Sort Name ForEach ($VM in $VMS) { $ServerName = $VM.Guest.HostName $Registry = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey([Microsoft.Win32.RegistryHive]::$Hive, $ServerName) $RefKey = $registry.OpenSubKey($RefKeyName) $RefValues = $RefKey.GetValueNames() | Where {$_ -match "Video"} ForEach ($RefValue in $RefValues) { $LookupKeyName = $RefKey.GetValue($RefValue).TrimStart("\Registry\Machine\") $LookupKey = $Registry.OpenSubKey($LookupKeyName,$Writeable) $Result = $LookupKey.GetValue($LookupValue) If ($Result -eq $Off) { Write-Host "Modifying Hardware Acceleration Level on VM " -NoNewLine Write-Host $VM.Name $LookupKey.SetValue($LookupValue,$Full) } ElseIf ($Result -eq $Full) { Write-Host "Hardware Acceleration is already set to full on VM" -NoNewLine Write-Host $VM.Name } Clear-Variable Result Clear-Variable LookupKeyName Clear-Variable LookupKey } Clear-Variable ServerName Clear-Variable Registry Clear-Variable RefKey Clear-Variable RefValues } Disconnect-VIServer -Confirm:$False