0

Get-WinEvent Powershell コマンドレットを使用して Windows ログをエクスポートしようとしています。以下は、私が探している時間の精度を取得しますが、これはタイムスタンプしか取得しません。タイムスタンプを、マシン名、イベント ID などを含む他の列に結合する必要があります。

このコードは正確なタイム スタンプを取得します。

  Get-WinEvent -LogName Application -MaxEvents 10 | Select-Object -Expand TimeCreated | ForEach-Object { 
$date = [DateTime]$_
$date.ToString("yyyy-MM-dd HH:mm:ss")}

出力は次のようになります。これは私が望むものです:

2018-12-06 08:52:28 
2018-12-06 08:52:28 
2018-12-06 08:51:32 
2018-12-06 08:51:31 
2018-12-06 08:51:31 
2018-12-06 08:51:31 
2018-12-06 08:51:31
2018-12-06 08:51:31 
2018-12-06 08:51:31 
2018-12-06 08:44:16

しかし、正確な時間と、MachineName、EventID、LevelDisplayName、Message などの両方を出力に含める必要があります。したがって、以下のコマンドでは、「TimeCreated」の代わりに正確な時間を挿入します。

Get-WinEvent -LogName Application -MaxEvents 10 | Select-Object TimeCreated,Machinename,Id,LevelDisplayName,Message,Logname | ft

ありがとう!

4

1 に答える 1

1

TimeCreated の正確な書式設定を行うには、計算されたプロパティを使用します

Get-WinEvent -LogName Application -MaxEvents 10 |
   Select-Object @{n='TimeCreated';e={$_.TimeCreated.ToString("yyyy-MM-dd HH:mm:ss")}},
                 Machinename,Id,LevelDisplayName,Logname,Message|Format-Table -auto

精度を高めるために、秒の端数を含めることもできます(フォーマット文字列に..を
追加します)。,f,fffffff

編集:私はあなたの環境を持っていませんが、書き込みホストは必要ありません。

これにより、フォーマットされた CreatedTime が csv に出力されます。

Get-WinEvent -LogName "Microsoft-Windows-TerminalServices-SessionBroker/Operational" `
             -ComputerName $SessionBroker -MaxEvents 150 | 
  Select-Object @{n='TimeCreated';e={$_.TimeCreated.ToString("yyyy-MM-dd HH:mm:ss")}}, 
                Machinename,Id,LevelDisplayName,Message,LogName,TaskDisplayName | 
    Export-Csv $RDSLogs\SessionBrokerOperational.csv -Append -NoTypeInformation
于 2018-12-06T17:43:50.393 に答える