This script is used for our health check and forensic engagements.  Is lists the servers in the farm as well as the services on each server.  Its amazing how often we find farms have fewer member servers than the admins originally installed.

$farm = Get-SPFarm
foreach ($svr in $farm.Servers) {
    Write-Host($svr.DisplayName)
    Write-Host("-----------------------------")
    foreach ($svc in $svr.ServiceInstances) {
        Write-Host($svc.TypeName)
    }
    Write-Host("");
}