Windows PowerShellスクリプトでREGEXを使用した詳細な説明から、実行中のプロセスのステータスを知りたい。この文字列からRUNNINGを抽出したい
名前:Process_name開始2008-04-2111:33ステータスRUNNING チェックポイントラグ00:00:00
Windows PowerShellスクリプトでREGEXを使用した詳細な説明から、実行中のプロセスのステータスを知りたい。この文字列からRUNNINGを抽出したい
名前:Process_name開始2008-04-2111:33ステータスRUNNING チェックポイントラグ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を使用する方が理にかなっていますか?
ここではマークから外れている可能性があるので、間違っている場合は訂正してください。