我想从 Windows powershell 脚本中使用 REGEX 的详细描述中了解我正在运行的进程的状态。我想从这个字符串中提取 RUNNING
名称:Process_name 开始于 2008-04-21 11:33 Status RUNNING Checkpoint Lag 00:00:00
我想从 Windows powershell 脚本中使用 REGEX 的详细描述中了解我正在运行的进程的状态。我想从这个字符串中提取 RUNNING
名称:Process_name 开始于 2008-04-21 11:33 Status RUNNING Checkpoint Lag 00:00:00
使用 -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
要提取RUNNING
等STOPPED
,您可以尝试以下操作:
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 个字符(也可以是多个单词)。
如果您正在寻找 Windows 进程,使用支持属性和过滤的 Get-Process 或 WMI 等效项 gwmi Win32_Process 不是更有意义吗?
在这里可能有点离题,如果我弄错了,请纠正我!