SCOM One-Liners: Get the Host name of your remotely managed device.
Posted by Jeremy D. Pavleck on June 5th, 2008
One of the nice things about SCOM2007 is the ease in which you can monitor and manage non-Windows devices (Even better with the dhjdhdhdhd addon). Being able to add your switches, routers and Unix devices makes for a more complete overview of the health of your system.
There is a downfall though, and that would be that although you can use Get-RemotelyManagedDevice in the Command shell to list the, umm, remotely managed devices, all it will return is the IP address.
Here’s a SCOM command shell one-liner that will use some .Net-Fu to reverse the IP for you, on the fly:
If you want, you can go a step further and add it to your profile (Or more preferably, a SCOM snippet file that I’ll be writing about later.) and pull it up anytime you want.
The Display-NetAgentsByHostName function has one parameter, -short. Run the default ‘long’ way, it will reverse the IP, list the client that is managing it, the management group and the health state.
With the -short switch, it simply outputs health state, host name and IP address.
It’s not perfect, and coult use some formatting, but it works as is, so I leave it up as an exercise to the reader to polish it some more ![]()
Page formatting messing it up? I’ll fix it some day - until then, download Display-NetAgentsByHostName.ps1
{
function LookUp([string]$ip)
{
trap {
"Unable to resolve IP"
continue;
}
([System.Net.Dns]::GetHostByAddress($ip)).HostName
}
Get-RemotelyManagedDevice | ForEach-Object {
If (!$short) {
If ($_.HealthState -eq "Success") {
Write-Host ("IP Address $($_.Name) resolves to ‘$(Lookup($_.Name))’ - Managed by server: $($_.ProxyAgentPrincipalName.Split(’.;’)[0])" +
"in Management group: $($_.ManagementGroup) - Health State: $($_.HealthState)`n") -ForeGroundColor Green
} elseif ($_.HealthState -eq "Warning") {
Write-Host ("IP Address $($_.Name) resolves to ‘$(Lookup($_.Name))’ - Managed by server: $($_.ProxyAgentPrincipalName.Split(’.;’)[0])" +
"in Management group: $($_.ManagementGroup) - Health State: $($_.HealthState)`n") -ForeGroundColor Yellow
} elseif ($_.HealthSTate -eq "Error") {
Write-Host ("IP Address $($_.Name) resolves to ‘$(Lookup($_.Name))’ - Managed by server: $($_.ProxyAgentPrincipalName.Split(’.;’)[0])" +
"in Management group: $($_.ManagementGroup) - Health State: $($_.HealthState)`n") -ForeGroundColor Red
}
} else {
If ($_.HealthState -eq "Success") {
Write-Host "HEALTHY - Host: $(Lookup($_.Name)) - IP: $($_.Name)" -ForeGroundColor Green
} elseif ($_.HealthState -eq "Warning") {
Write-Host "HEALTH WARNING! State: $($_.HealthState) - Host: $(Lookup($_.Name)) - IP: $($_.Name)" -ForeGroundColor Yellow
} elseif ($_.HealthState -eq "Error") {
Write-Host "HEALTH ERROR! State: $($_.HealthState) - Host: $(Lookup($_.Name)) - IP: $($_.Name)" -ForeGroundColor Red
}
}
}
}


