1

我想从 Windows powershell 脚本中使用 REGEX 的详细描述中了解我正在运行的进程的状态。我想从这个字符串中提取 RUNNING

名称:Process_name 开始于 2008-04-21 11:33 Status RUNNING Checkpoint Lag 00:00:00

4

3 回答 3

3

使用 -replace

$text = 'Name: Process_name Started 2008-04-21 11:33 Status RUNNING Checkpoint Lag 00:00:00'
$text -replace '.+\sStatus\s(\S+)\sCheckpoint.+','$1'
RUNNING
于 2013-02-07T13:49:02.013 回答
1

要提取RUNNINGSTOPPED,您可以尝试以下操作:

PS > $s = "Name: Process_name Started 2008-04-21 11:33 Status RUNNING Checkpoint Lag 00:00:00", "Name: Process2_name Started 2008-04-21 11:33 Status STOPPED Checkpoint Lag 00:00:00"

PS > $s | % { if ($_ -match "Status (.+) Checkpoint") { 
    #Return match from group 1
    $Matches[1] 
    }
}

RUNNING
STOPPED

如果您正在阅读日志文件,则可以将其内容直接发送到测试,如下所示:

PS > Get-Content mylog.txt | % { if ($_ -match "Status (.+) Checkpoint") { 
    #Return match from group 1
    $Matches[1] 
    }
}

这是提取“状态”和“检查点”之间的所有内容,只要它至少是 1 个字符(也可以是多个单词)。

于 2013-02-07T13:35:12.380 回答
0

如果您正在寻找 Windows 进程,使用支持属性和过滤的 Get-Process 或 WMI 等效项 gwmi Win32_Process 不是更有意义吗?

在这里可能有点离题,如果我弄错了,请纠正我!

于 2013-02-07T22:18:12.000 回答