Use of PowerCLI and invoke-script to get HAL running of Windows VM´s
I was thinking of how to get an report after reading about the converter best practice from Vladan and he also has this blog post about how to change the HAL, but first i want to know what running guests are there that has the wrong HAL running. I have selected to get an report out of the running windows 2003 ( windows 2008 and later has an uniform HAL that is the same for one or more cpu´s).
I have made an little script somewhat alike to Alan Renouf´s to get the HAL of the VM guest running in your environment, the difference in my approach is that i use invoke-script and get the info from inside the VM, as i have a case where the VMs are isolated and i can not get the wmi info from the network, Arnim Van Lieshout has made one blog post about running wmi queries this way.
# Check the HAL in the VM with invoke-VMScript # # Niklas Akerlund / RTS $VMs = Get-VM | Where {$_.Guest.OSFullName -eq "Microsoft Windows Server 2003 Standard (32-bit)" -and $_.PowerState -eq "PoweredOn"} $guestcred = get-Credential $report = @() foreach ($VM in $VMs){ $HAL = Invoke-VMScript "wmic path Win32_PnPEntity WHERE ""DeviceID='ROOT\\ACPI_HAL\\0000'"" GET NAME /VALUE" -VM $VM -GuestCredential $guestcred -scripttype "bat" $HAL = $HAL.Split('=')[1] $data = New-Object PSObject -property @{ VMName=$VM.Name vCPUs=$VM.NumCPU HAL=$HAL.Trim('') } $report +=$data } $report | Export-Csv -path c:\temp\hal4.csv -NoTypeInformation -UseCulture
And the simple report looks like this: