[cmdletbinding()] Param( [string[]]$ComputerName = $env:ComputerName ) foreach($Computer in $ComputerName) { if(Test-Connection -Computer $Computer -Count 1 -quiet) { try { $services = Get-WMIObject -Class Win32_Service -Filter "State='Stopped'" -ComputerName $Computer -EA stop foreach($service in $services) { if(!(($service.exitcode -eq 0) -or ($service.exitcode -eq 1077))) { $Error = Invoke-Expression "net helpmsg $($service.Exitcode)" $Service | select Name, Startmode, State, Exitcode,@{Label="Message";Expression={$Error[1]}} } } } catch { Write-Verbose "Failed to query service status. $_" } } else { Write-Verbose "$Computer : OFFLINE" } }