5

以下のスクリプトを実行してログ ファイルを取得すると、get-winevent の「メッセージ」フィールドは空白ですが、get-eventlog を実行するとデータが表示されます。理由はありますか?

#has message data 
Get-Eventlog -LogName application -Newest 10

 #date 10 days ago 
$EventStartDate = get-date("10 May 2012") 
$EventEndDate = get-date("11 May 2012") 
$EventLogNames = @("Application", "system")

#critea for winevent 
$EventCritea = @{logname = $EventLogNames; StartTime=$EventStartDate; EndTime=$EventEndDate}

#Retrieves the event log 
$RetreivedEvents = Get-WinEvent -computername localhost -FilterHashtable $EventCritea
$RetreivedEvents | fl id, logname, MachineName, Message, TimeCreated
4

6 に答える 6

8

どのロケールで実行していますか?

基礎となる .NET メソッド (を使用する) が、一部のロケール ( など) でGet-WinEventローカライズされたフィールド ( など) の入力に失敗する.NET バグがあります。Messageen-GB

修正は、次のコマンドに切り替えることen-USです。

$orgCulture = Get-Culture
[System.Threading.Thread]::CurrentThread.CurrentCulture = New-Object "System.Globalization.CultureInfo" "en-US"
# Perform Get-WinEvent
[System.Threading.Thread]::CurrentThread.CurrentCulture = $orgCulture
于 2012-07-09T14:44:57.283 に答える
2

これは、メッセージがプロパティ値に隠されているためだと思います。すべてのメッセージを表示するには、次の式を使用して get-winevent を select ステートメントにパイプします。

@{Label='Messages';Expression={$_.properties.Value}}

ログオン プロセス (セキュリティ ログ内) などの特定のメッセージを表示する場合は、次の式を使用します。

@{Label='Logon Process';Expression={$_.properties.Value[3]}}
于 2014-11-27T09:29:38.220 に答える
0

どの PSHost で実行していますか?

W2k8 にアクセスする Windows 7 で実行されている PS V2.0 で問題が発生しています。Powershell コンソールまたは Powershell ISE 内で実行すると、すべてのデータが取得されます。ただし、実行空間内または PowerGUI (pro) から実行している場合は、Message プロパティを含まない部分的なサブセットのみが返されます。

[編集] リチャードの投稿により、この問題を回避できますが、動作している PS コンソールのカルチャが「en-GB」であり、動作していない PowerGui スクリプト エディターのカルチャが「en-GB」であり、機能するだけであるため、非常に奇妙です。カルチャを「en-US」に変更した場合。

気紛れ

于 2012-07-09T12:19:18.217 に答える
0

過去に get-winevent を試してみたところ、Windows Server 2003 で動作しないことがわかりました。基本的に、PS 環境では get-winevent が 2003 では機能しないとのことでした。当時は PS v1 だった可能性があるため、新しいバージョンの PS で解決されたかどうかはわかりません。現在 2K8 R2 を使用しています。

私の〜の上に

于 2012-05-11T01:18:13.960 に答える