导出 Windows 个具有精确时间的日志
Export Windows Logs with Precise Time
我正在尝试使用 Get-WinEvent Powershell cmdlet 导出 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
谢谢!
要为 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
我正在尝试使用 Get-WinEvent Powershell cmdlet 导出 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
谢谢!
要为 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