none
Get-WinEvent で、イベントメッセージ内に「%%」文字列があるとコマンドが失敗する RRS feed

  • 質問

  • お世話になります。
    PowerShellのGet-WinEventについて質問です。

    以下のようにGet-WinEventコマンドを利用してイベントログを取得しようと
    しています。(簡単に期間等でフィルタしています)

    Get-WinEvent -FilterHashtable @{ logname = "Application"; StartTime = ((Get-Date).AddDays(-10)) }

    ほとんどのイベントの情報は正常に取得できますが、イベントのMessageプロパティに「%%」
    の文字列が存在しているイベントがあった場合、以下のエラーが発生します。

    「Get-WinEvent : パラメーター参照 (%1) の説明の文字列が見つかりませんでした。」

    上のようなエラーを回避して正常にイベント情報を取得する方法はないでしょうか。

    環境は以下の通りです。
    OSバージョン:Windows Server 2012 R2
    PSバージョン:4.0

    よろしくお願いします。

    • 編集済み kanetb 2015年3月8日 8:06
    2015年3月8日 8:04

回答

  • チャブーンです。

    この件ですが、率直に言うと直接的な解決は難しいと思います。"The description string for parameter reference (%1) could not be found"というエラーメッセージに注目した場合も、(最初からそのイベントを引かないように)levelでフィルタする、ぐらいの記述しかないようです。

    https://social.technet.microsoft.com/Forums/windowsserver/en-US/c873fd73-f793-4528-bf88-fe3dbea30924/getwinevent-throws-an-error?forum=winserverpowershell

    本当にApplicationログのデータを拾いたい場合、Get-Eventlogコマンドレットも使えますので、そちらで代用はできないでしょうか?またGet-Wineventベースで操作したい場合、wevtutilコマンドで同じようなことができるはずですので、このコマンドをPowerShellに組み込む方法で間接的に解決できるかもしれません。

    • 回答としてマーク kanetb 2015年3月13日 10:00
    2015年3月10日 2:16

すべての返信

  • チャブーンです。

    この件ですが、率直に言うと直接的な解決は難しいと思います。"The description string for parameter reference (%1) could not be found"というエラーメッセージに注目した場合も、(最初からそのイベントを引かないように)levelでフィルタする、ぐらいの記述しかないようです。

    https://social.technet.microsoft.com/Forums/windowsserver/en-US/c873fd73-f793-4528-bf88-fe3dbea30924/getwinevent-throws-an-error?forum=winserverpowershell

    本当にApplicationログのデータを拾いたい場合、Get-Eventlogコマンドレットも使えますので、そちらで代用はできないでしょうか?またGet-Wineventベースで操作したい場合、wevtutilコマンドで同じようなことができるはずですので、このコマンドをPowerShellに組み込む方法で間接的に解決できるかもしれません。

    • 回答としてマーク kanetb 2015年3月13日 10:00
    2015年3月10日 2:16
  • ご回答ありがとうございます。

    情報ありがとうございました。
    他コマンド、フィルタでの代用を検討しようと思います。
    # もし回避方法等わかりましたら、こちらで連携しようと思います。

    以上です。

    2015年3月13日 10:00