私は、ファイルを読み取り、エラーコードを抽出するPowerShellスクリプトを使用しています。それはすばやくシンプルで、私が望む仕事はしていますが、私はこれを幅広い聴衆と共有するよう求められていますので、もう少し堅牢にする必要があります。文字列のテキストファイルを検索し、結果とCSVファイルの内容を使用して検索を実行するにはどうすればよいですか?
私が持っている問題は、私は私のスクリプトからの出力を取り、私が一覧表示されます最後にユーザーフレンドリーテーブルを取得するようにCSVファイルに対してルックアップするためにそれを使用する必要があるということです。
- (降順に)各エラーが発生したどのように多くの時間をカウント
- エラーコード
- それはこれがライン形式はである
エンドユーザに表示する対応するエラーメッセージソースファイルは、2000行
17-12-2016,10:17:44:487{String=ERROR->(12345678)<inData:{device=printer, formName=blah.frm, eject=FALSE, operation=readForm}><outData:{fields=0, CODE=, field1=}> <outError:{CODE=Error103102, extendedErrorCode=-1, VARS=0}>}
に上向きに通常ありますこれは私の現在のスクリプトです:
$WS = Read-Host "Enter computer name"
$date = Read-host "Enter Date"
# Search pattern for select-string (date always at the beginning of the line and the error code somewhere further in)
$Pattern = $date+".*<outError:{CODE="
# This find the lines in the files that contain the search pattern
$lines = select-string -path "\\$WS\c$\folder\folder\file.dat" -pattern $Pattern
# This is the specific Error code pattern that I'm looking for in each line
$regex = [regex] 'Error\d{1,6}'
$Var = @()
# Loops through each line and extracts Error code
foreach ($line in $lines) { $a = $line -match $regex
# Adds each match to variable
$Var += $matches.Values
}
# Groups and sorts results in to easy to read format
$Var | group | Sort-Object -Property count -descending
そして、これは、それが私を与えた結果である:
Count Name Group
----- ---- -----
24 Error106013 {Error106013, Error106013, Error106013, Error106013...}
14 Error106109 {Error106109, Error106109, Error106109, Error106109...}
12 Error203002 {Error203002, Error203002, Error203002, Error203002...}
私は必要なCSVルックアップするのは簡単ですが、1行に2つの値を入力するだけです。
Code,Error message
私はに取得する必要がどのような次のようなものです:
Count Name Error Message
----- ---- -----
24 Error106013 Error:blah
14 Error106109 Error:blah,blah
12 Error203002 Error:blah,blah,balh
Googleが、私は少なくとも正しい方向に私を指すことができますそこに誰かがあることを望んでいるので、私が失敗しました。
ありがとうございました。私は計算されたプロパティを行うとは思わなかった。 – MattP
ようこそ。選択文字列のパターンを拡張して情報を取得すると、スクリプトを改善できます。これを1行で行うことができ、繰り返し処理を繰り返す必要はありません。 –
私はそれについて考えましたが、.datファイルが1つのドメイン上にあり、アクセスするには管理者特権が必要で、エラーコードcsvは別のドメインにあります。私はパターンを拡張しようとしたときに、私は – MattP