Powershellは文字列を選択し、単語の後


0

私の質問select-stringでVirtualnameを選択する方法はありますか?これらのログは、時間と仮想アカウント名を選択する必要がある場所から取得しています。私

*>   <event seq="453211" time="2019-01-24 11:01:03.639873 -0500" app="hServer 7.45" name="I_SFS_TRANSFER_FILE" desc="Virtual filesystem: transfer file.">
      <session id="44500" service="SSH" remoteAddress="00.00.00:57292" virtualAccount="xxxxxxxx" windowsAccount="Server3\Users"/>
      <channel type="session" id="1"/>
      <sfs moduleName="FlowSfsWin" mountPath="/" code="90000" desc="Transferring file ended.">*

これは私が今まで試したことです。

New-Item "C:\clients.log" -type file -force
$strings = "virtualAccount=","time="
Foreach($string in $strings){
Get-Content 'C:\uploads.log'| 
Select-String $string1 -AllMatches | % { $_.Matches } | % { $_.Value }  |
Add-Content "C:\clients.log"
}

ログファイルごとに1つ以上のvirtualAccountおよびtimeフィールドがありますか?ファイルごとにさらにある場合:情報は1行で表示されますか、または例のように改行が含まれていますか?
ゲルトヤンクレイエフェルド

私はコピーされたより、そのわずか1行があります
ジョンが描いた

期待する結果を示す必要があります。
LotPings

回答:


0

コードが必要なデータを提供した場合、私の推測では、それはあなたが望む順序ではなかったでしょう。私はタイムスタンプとアカウント名を一緒に持ちたいと思います。そして、アカウント名が後に続く別個のタイムスタンプの束ではありません。ログ行から必要な情報を含む$ myInfoオブジェクトを作成する以下の例を作成しました。ソリューションの作成に役立てば幸いです。

正規表現は私のものではないと言わざるを得ません。引用符の間のテキストをキャプチャするのに苦労しました。Googleの支援:https : //stackoverflow.com/questions/13024073/regex-c-sharp-extract-text-within-double-quotes

foreach ($line in Get-Content 'C:\uploads.log') {
    $rslt = $line | Select-String -Pattern 'time=\"([^\"]*)\".*virtualAccount=\"([^\"]*)\"'
    $myinfo = [PSCustomObject]@{
        Time = $rslt.Matches.Groups[1].Value;
        Account = $rslt.Matches.Groups[2].Value
    }
    $myinfo
}

運のエラーなしCannot index into a null array. At line:3 char:5 + [PSCustomObject]@{ + ~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : NullArray Cannot index into a null array. At line:3 char:5 + [PSCustomObject]@{ + ~~~~~~~~~~~~~~~~~~
ジョンは

おそらく、ログのすべての行に検索された文字列が含まれているわけではありません。その場合は、チェックを追加するか、トライキャッチを追加する必要があります
Gert Jan Kraaijeveld

ええ、私はすべてを一行でコピーする必要があります、それは大変な仕事です
ジョンは
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.