プリンターログを読み取り(おそらくget-WMIコマンドレットを使用して)、ログを解析するPowerShellスクリプトを作成するための最初のステップに取り組んでいます。その後、スクリプトを.txtファイルに出力して、プリンターの名前、プリンターが使用された回数のカウンター(可能な場合)、およびログにある特定の情報を取得する予定です。
これを行うために、私は逆方向に作業することにしました。以下は、ログがどのように表示されるかのごく一部です。
10 Document 81, A361058/GPR0000151814_1: owned by A361058 was printed on R3556 via port IP_***.***.***.***. Size in bytes: 53704; pages printed: 2 20130219123105.000000-300
10 Document 80, A361058/GPR0000151802_1: owned by A361058 was printed on R3556 via port IP_***.***.***.***. Size in bytes: 53700; pages printed: 2
逆方向に作業して、最初に解析に集中するだけで、具体的に「/ GRP」、「R3446(通常、これはプリンター名であるためR * *)」を取得し、その方法を示すカウンターを取得できるようにしたいと思います。多くの場合、特定のプリンターがログファイルに表示されます。
最後にPowershellを使用してからしばらく経ちましたが、現時点では、目標を達成するためにこれを作成することができました。
Select-String -Path "C:\Documents and Settings\a411882\My Documents\Scripts\Print Parse Test.txt" -Pattern "/GPR", " R****" -AllMatches -SimpleMatch
コードはエラーを生成しませんが、/GRPとプリンター名をキャプチャしているかどうかを確認するために画面に出力を表示することもできません。現時点では、カウンターについて心配する前に、正しい出力を収集していることを確認しようとしています。誰かが私を助けて、私のコードで何が間違っているのか教えてもらえますか?
ありがとう!
編集:画面にデータが表示されない原因となっていたコードの小さなエラーを修正しました。現時点では、このコードは/ GPRとサーバー名だけを出力するのではなく、2行のテストテキスト全体を出力します。新しい出力は次のとおりです。
My Documents\Scripts\Print Parse Test.txt:1:10 Document 81, A361058/GPR0000151814_1: owned by A361058 was printed on
R3556 via port IP_***.***.***.***. Size in bytes: 53704; pages printed: 2
20130219123105.000000-300
My Documents\Scripts\Print Parse Test.txt:2:10 Document 80, A361058/GPR0000151802_1: owned by A361058 was printed on
R3556 via port IP_***.***.***.***. Size in bytes: 53700; pages printed: 2
最終的には次のようになってみてください。
/GPR, R****, count: ## (although for now I'm less concerned about the counter)