private/_GetVMInfo.ps1
function _GetVMInfo { [cmdletbinding()] Param( [System.Management.Automation.Runspaces.PSSession]$PSSession ) Write-Verbose "[$($PSSession.ComputerName)] - Gathering VM information" $VMInfo = Invoke-Command -Session $PSSession -ScriptBlock { $HVService = Get-Service -DisplayName '*Hyper-V*' | Where-Object {$_.Status -eq 'Running'} $HVProperties = Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Virtual Machine\Guest\Parameters' -Name VirtualMachineName, PhysicalHostNameFullyQualified -ErrorAction SilentlyContinue $VMService = Get-Service -Name VMTools -ErrorAction SilentlyContinue [PSCustomObject]@{ HVIntegrationServicesRunning = if ($HVService) {$true}else {$false} HVHostName = if ($HVProperties) {$HVProperties.PhysicalHostNameFullyQualified}else {$null} HVVMName = if ($HVProperties) {$HVProperties.VirtualMachineName}else {$null} VMWareToolsRunning = if ($VMService) {$true}else {$false} } } [PSCustomObject]@{ PSTypeName = 'PSP.Inventory.VMInfo' ComputerName = $PSSession.ComputerName HVIntegrationServicesRunning = $VMInfo.HVIntegrationServicesRunning HVHostName = $VMInfo.HVHostName HVVMName = $VMInfo.HVVMName VMWareToolsRunning = $VMInfo.VMWareToolsRunning InventoryDate = (Get-Date) } } |