我想从Windows PowerShell脚本编写中使用REGEX的详细说明了解正在运行的进程的状态。 我想从这个字符串中提取RUNNING
名称:Process_name已开始2008-04-21 11:33状态 RUNNING 检查站滞后00:00:00
答案 0 :(得分: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
答案 1 :(得分:1)
要提取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个字符(也可以是多个单词)。
答案 2 :(得分:0)
如果您正在寻找Windows进程,使用支持属性和过滤的Get-Process或者WMI等效的gwmi Win32_Process是不是更有意义?
如果我弄错的话,可能会离开这里,所以纠正我!