Powershell 前景色

Powershell ForeGround Color

为此,我一直在用头撞桌子,但我最接近的结果仍然无法正常工作。我正在努力让它发挥作用。

$test = Get-Service | sort Status | format-wide -Groupby Status -Column 4

$test | % {
  $line = $_.ToString()  <~~ even tried Out-String
  if ($_.status -eq "Running") {
    write-host $line -foregroundcolor red
  } elseif ($_.status -eq "Stopped") {
    write-host $line -foregroundcolor yellow
  } else {
    write-host $line 
  }
}

我正在尝试保留我已有的格式,但我愿意接受建议。根据我的发现,Out-String 不适用于 format-* 选项。请帮忙。

Format-* cmdlet 通常应该是管道中的最后一个命令,并且不应分配给变量。它们旨在用于最终输出,不会在以后进行转换。它们不保留原始对象或其属性。

如果您刚刚删除了 Format-Wide 调用,它将使用以下颜色写入服务:

$test = Get-Service | sort Status

$test | % {
  $line = $_.ToString()  
  if ($_.status -eq "Running") {
    write-host $line -foregroundcolor red
  } elseif ($_.status -eq "Stopped") {
    write-host $line -foregroundcolor yellow
  } else {
    write-host $line 
  }
}