合并来自多个文件的所有内容,找到匹配的字符串并计算每行的数量

Combine all content from several files, find matching strings and get a count of each line

我知道如何获取数据并使用某种模式搜索数据。但这不是我需要的。

Get-ChildItem -recurse -Filter *.xml | Get-Content | Select-String -pattern "something here"  

我正在搜索 100 个 GPO xml 文件,我们正试图删除一遍又一遍执行相同操作的 GPO。我想找到独特的价值并将它们组合成一个快乐的大 gpo 并摆脱所有多余的价值。

我的目标:

1) 从 100 个子文件夹中的所有 *.xml 文件中获取所有信息,并将它们合并到一个文件中。

2) 查找包含相同字符串的所有行并计算该字符串的数量。我需要对合并文件中的所有字符串进行计数。

3) 我的目标是找到唯一的行并将它们保存到文件中,以供进一步使用。

这是使用 Hashtable 的一种快速而简单的方法。由于 Hashtable setter 执行 "update or create",您最终会得到一个不同的列表:

$ht = @{}
Get-ChildItem -recurse -Filter *.xml | Get-Content | %{$ht[$_] = $true}
$ht.Keys

编辑:刚刚看到您也想要计数。你可以这样做:

$ht = @{}
Get-ChildItem -recurse -Filter *.xml | Get-Content | %{$ht[$_] = $ht[$_]+1}
$ht

要导出为 CSV:

$ht.GetEnumerator() | select key, value | Export-Csv D:\output.csv