Reyolin Felix
Reyolin Felix

Reputation: 3

Basic Output Redirection

I searched and put together a PowerShell script to check if a windows service (SNARE) is running or not in a list of servers. At the moment, the script prints "Snare is running" if it doesn't error and "Not installed/Powered off" if it meets an error. What I am also looking for is if the script doesn't end up in error, can I somehow take the output of Status (example below) and print "Snare is stopped"?

Status   Name               DisplayName
------   ----               -----------
Stopped  SNARE              SNARE
#Powershell
$serverList = gc Final.txt
$collection = $()
foreach ($server in $serverList) {
  $status = @{
    "ServerName" = $server
    "TimeStamp" = (Get-Date -f s)
  }
  if (Get-Service -Name SNARE -ComputerName $server -EA SilentlyContinue) {
    $status["Results"] = "Snare is running"
  } else {
    $status["Results"] = "Not installed/Powered off"
  }
  New-Object -TypeName PSObject -Property $status -OutVariable serverStatus
}

Upvotes: 0

Views: 31

Answers (1)

Mathias R. Jessen
Mathias R. Jessen

Reputation: 174485

Assign the output from Get-Service to a variable, and grab the Status property from that:

if (($snare = Get-Service -Name SNARE -ComputerName $server -EA SilentlyContinue))
{
    $status["Results"] = "Snare is running"
    $status["Status"]  = $snare.Status
}
else
{
    $status["Results"] = "Not installed/Powered off"
    $status["Status"]  = "Unknown"
}

Upvotes: 1

Related Questions