2台のWindowsマシンのイベントログからイベントを読み取ろうとしています。 1つはWindows 10 Enterprise(完全に動作する)で、もう1つはSmall Business Server 2008です.SBS2008のマシン出力は78文字目で切り捨てられますが、なぜ表示されません。SBS2008のデータ切り捨て
これは、私が実行しているPowerShellコマンドです:
get-eventlog Application -After (Get-Date).AddDays(-10) |
Where-Object {$_.EntryType -like 'Error' -or $_.EntryType -like
'Information'} | Format-Table -Property TimeGenerated, Index,
EventID, EntryType, Source, Message -autosize | Out-String -Width 4000
それは、両方のマシン上でPowerShellの編集ウィンドウ、無切り捨てで罰金を実行します。 私はGetEvents.ps1 -file PowerShellを使用して、コマンドウィンドウでそれを実行した場合、出力は切り捨てです: C:GetEvents.ps1
-file \ BITS> PowerShellの私はこれをやっていることをうまくすることはできません。これは、Javaコードです:
String command = "powershell.exe " + Cmd;
Process powerShellProcess = Runtime.getRuntime().exec(command);
powerShellProcess.getOutputStream().close();
String line;
BufferedReader stdout = new BufferedReader(new InputStreamReader(powerShellProcess.getInputStream()));
while ((line = stdout.readLine()) != null) {
if (line.length() > 0) {
System.out.println(line);
}
}
誰もがログの外のイベントを取得したり、私はそれが改行で分割されることなく、PowerShellスクリプトからの出力を読み込む方法を提案するためのより良い方法を提案することはできますか?これは、私がSBS2008顧客マシンで失敗するのを見つけるためにのみ、私のマシン(W10のマシン)で広範にテストしたので、かなり残念でした! 異なるマシンで使用されているライブラリとJavaのバージョンを確認しましたが、それらは同じです。私は最後の 'While'ブロック内の文字列の解析をいくつか行うので、println文ではなく、入力行は確実に切り捨てられます。
私はその後Get-wineventを使用してみましたが、コマンドにfilterhashtableフラグを設定すると、SBS2008で 'パラメータが正しくありません'と表示されても失敗します(W10では正常です)。 私は理想的には、特定のログファイルからすべてのイベントを取得することができます。なぜなら、特定のイベントIDは(それを保存できるためですが)同じ出力をすべてのWindowsオペレーティングシステムで同じ形式で取得することは事実上不可能です。どんな提案も大歓迎です。
'|フォーマット表| Out-String'と呼ばれる。 "私はケーキのバッターをミックスし、オーブンに入れ、オーブンから取り出してケーキミキサーに戻し、それを得る? " Format-Tableは、コンソールセッションの管理者へのパイプライン終了表示用のもので、他には何も表示されません。それはより良いテーブルを作るためにデータを捨てるでしょう。 Format-TableがJava内に存在しないホスト上にデータを表示するためにデータを分割しようとすると、Out-String -width 4000はすべてそれを再び一緒に戻すことはありません。 – TessellatingHeckler
JSONまたはCSVをJavaで読み込み、そこでフォーマットできますか? – TravisEz13
これはありがたいことですが、それは私には問題が残っていますが、完璧な意味があります。Format-Tableを出すと、完全な文字列を得ることができますが、私にとって重要なEventID列は含まれません。 format-tableを使用せずにその列をインクルードするコマンドを取得するにはどうすればよいですか? –