如何删除 PowerShell 输出日志中的重复信息
How do I delete duplicate information on the output log in PowerShell
您好,我是 Powershell 领域的新手,目前我正在处理与 IIS 相关的简单任务,我必须在其中检索每个 "information" 事件并将其写入文件。
问题是,它写了很多重复的信息,我希望它只写最近的事件
这是原始输出:
2020 年 5 月 16:49:09 申请信息已启动
过滤 'Information/Warning Levels' 与 IIS
提供商名称: Microsoft-Windows-WAS
创建时间 **:12/05/2020 14:57:20
**编号**:5186
**LevelDisplayName : 信息
创建时间:12/05/2020 10:42:36
编号:5186
LevelDisplayName:信息
创建时间 : 08/05/2020 15:18:07
编号:5186
LevelDisplayName:信息
创建时间:08/05/2020 10:57:38
编号:5186
LevelDisplayName:信息
创建时间 : 07/05/2020 20:20:54
编号:5211
LevelDisplayName:信息
这是 PS 脚本:
Clear-Host
Remove-Item E:\www\EvApp_Info_Logs\Application-info*.txt
$log = "E:\www\EvApp_Info_Logs\Application-info-$(get-date -f yyyy-MM-dd_hh-mm).txt"
$(Get-Date).ToString() + " Application-Info STARTED" | out-file -FilePath $log -Append
"Filtering 'Information/Warning Levels' related to IIS" | out-file -FilePath $log -Append
Get-WinEvent -FilterXml ([xml](Get-Content C:\WEBIIS-content-information.xml))|
fl -GroupBy ProviderName -Property TimeCreated, Id, LevelDisplayName |
Out-File -FilePath $log -Append
$(Get-Date).ToString() + " Application-Info ENDED" | out-file -FilePath $log -Append
如果我在
之后立即使用 "get-unique" cmdlet
"Get-WinEvent -FilterXml ([xml](Get-Content C:\WEBIIS-content-information.xml))|
fl -GroupBy ProviderName -属性 TimeCreated、Id、LevelDisplayName、消息 |获得唯一性
它只写入与每个 ProviderName 相关的最新信息,忽略 EventId 的其余部分。
我想要的是让脚本忽略重复的 EventId,这样输出就可以如下所示:
2020 年 5 月 16:49:09 申请信息已启动
过滤 'Information/Warning Levels' 与 IIS
提供商名称: Microsoft-Windows-WAS
创建时间 **:12/05/2020 14:57:20
**编号**:5186
**LevelDisplayName : 信息
创建时间 : 07/05/2020 20:20:54
编号:5211
LevelDisplayName:信息
再一次,我在这方面真的很陌生,我们将不胜感激。
实际上,fl 需要一个排序列表。此外,我们使用 Sort-Object 按(ProviderName 和)Id 进行分组,以消除其他属性上的重复项。
$list | Sort-Object ProviderName, Id -Unique | fl -GroupBy ProviderName -Property TimeCreated, Id, LevelDisplayName
您好,我是 Powershell 领域的新手,目前我正在处理与 IIS 相关的简单任务,我必须在其中检索每个 "information" 事件并将其写入文件。
问题是,它写了很多重复的信息,我希望它只写最近的事件
这是原始输出:
2020 年 5 月 16:49:09 申请信息已启动
过滤 'Information/Warning Levels' 与 IIS
提供商名称: Microsoft-Windows-WAS
创建时间 **:12/05/2020 14:57:20 **编号**:5186 **LevelDisplayName : 信息
创建时间:12/05/2020 10:42:36 编号:5186 LevelDisplayName:信息
创建时间 : 08/05/2020 15:18:07 编号:5186 LevelDisplayName:信息
创建时间:08/05/2020 10:57:38 编号:5186 LevelDisplayName:信息
创建时间 : 07/05/2020 20:20:54 编号:5211 LevelDisplayName:信息
这是 PS 脚本:
Clear-Host
Remove-Item E:\www\EvApp_Info_Logs\Application-info*.txt
$log = "E:\www\EvApp_Info_Logs\Application-info-$(get-date -f yyyy-MM-dd_hh-mm).txt"
$(Get-Date).ToString() + " Application-Info STARTED" | out-file -FilePath $log -Append
"Filtering 'Information/Warning Levels' related to IIS" | out-file -FilePath $log -Append
Get-WinEvent -FilterXml ([xml](Get-Content C:\WEBIIS-content-information.xml))|
fl -GroupBy ProviderName -Property TimeCreated, Id, LevelDisplayName |
Out-File -FilePath $log -Append
$(Get-Date).ToString() + " Application-Info ENDED" | out-file -FilePath $log -Append
如果我在
之后立即使用 "get-unique" cmdlet"Get-WinEvent -FilterXml ([xml](Get-Content C:\WEBIIS-content-information.xml))| fl -GroupBy ProviderName -属性 TimeCreated、Id、LevelDisplayName、消息 |获得唯一性
它只写入与每个 ProviderName 相关的最新信息,忽略 EventId 的其余部分。
我想要的是让脚本忽略重复的 EventId,这样输出就可以如下所示:
2020 年 5 月 16:49:09 申请信息已启动
过滤 'Information/Warning Levels' 与 IIS
提供商名称: Microsoft-Windows-WAS
创建时间 **:12/05/2020 14:57:20 **编号**:5186 **LevelDisplayName : 信息
创建时间 : 07/05/2020 20:20:54 编号:5211 LevelDisplayName:信息
再一次,我在这方面真的很陌生,我们将不胜感激。
实际上,fl 需要一个排序列表。此外,我们使用 Sort-Object 按(ProviderName 和)Id 进行分组,以消除其他属性上的重复项。
$list | Sort-Object ProviderName, Id -Unique | fl -GroupBy ProviderName -Property TimeCreated, Id, LevelDisplayName