0

我正在尝试找到一种方法,使 Format-Table 以红色输出选定行,以绿色输出其他行。

我试图做的一个例子是输出当前进程和它们正在使用的内存量。我想将逻辑应用于输出,以便使用超过给定内存量的进程将显示为黄色,而其他更高的进程将显示为红色。

我发现的最接近的问题是: Powershell 脚本格式表输出中的颜色词

如何从字符串中提取数字来处理它们?

4

1 回答 1

0

在 Powershell 中,使用非字符串对象通常更容易。但是,在此示例中,您必须使用 write-host cmdlet,因为它是唯一一个向控制台生成彩色输出的 cmdlet。但是 write-host 不会像大多数 cmdlet 那样格式化对象(使用 format.ps1xml 文件),因此要获得预期的格式,您可以将进程对象通过管道传输到字符串外。但是 out-string 包括列标题和每行之前的空行(删除 substring() 调用以了解我的意思)。所以 substring(244,80) 只是获取实际的进程信息有点破解。

gps | % {
  $line = ($_|out-string).substring(244,80)
  if ($_.ws -lt 100MB) {
    write-host $line
  } elseif ($_.ws -lt 150MB) {
    write-host $line -foregroundcolor yellow
  } else {
    write-host $line -foregroundcolor red
  }
}
于 2013-06-25T22:51:37.843 回答