如何删除 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