1

Windows PowerShellスクリプトでREGEXを使用した詳細な説明から、実行中のプロセスのステータスを知りたい。この文字列からRUNNINGを抽出したい

名前:Process_name開始2008-04-2111:33ステータスRUNNING チェックポイントラグ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

抽出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文字である限り、「ステータス」と「チェックポイント」の間のすべてを抽出します(複数の単語でもかまいません)。

于 2013-02-07T13:35:12.380 に答える
0

Windowsプロセスを探している場合は、プロパティとフィルタリングをサポートするGet-Process、または同等のWMIであるgwmi Win32_Processを使用する方が理にかなっていますか?

ここではマークから外れている可能性があるので、間違っている場合は訂正してください。

于 2013-02-07T22:18:12.000 に答える