Powershell 需要添加测试引用位置的完整路径

Powershell 需要添加测试引用位置的完整路径,powershell,text,powershell-3.0,Powershell,Text,Powershell 3.0,到目前为止,我有一个包含2个值的哈希表。现在,下面的代码导出了所有唯一的行,并给出了该行在100个xml文件中被引用的次数。这是一部分 现在,我需要找出哪个子文件夹中有xml文件,该文件在哈希表中有唯一的引用行。这可能吗 $ht = @{} Get-ChildItem -recurse -Filter *.xml | Get-Content | %{$ht[$_] = $ht[$_]+1} $ht # To export to CSV: $ht.GetEnumerator() | select

到目前为止,我有一个包含2个值的哈希表。现在,下面的代码导出了所有唯一的行,并给出了该行在100个xml文件中被引用的次数。这是一部分

现在,我需要找出哪个子文件夹中有xml文件,该文件在哈希表中有唯一的引用行。这可能吗

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

# To export to CSV:
$ht.GetEnumerator() | select key, value | Export-Csv D:\output.csv

要获取输出的文件路径,需要将其指定给第一个管道中的变量

这和你需要的东西相似吗

$ht = @{}
Get-ChildItem -recurse -Filter *.xml | %{$path = $_.FullName; Get-Content $path} | % { $ht[$_] = $ht[$_] + $path + ";"}  
上面的代码将返回“config line”=“count”格式的哈希表

编辑:

如果您需要返回三个元素(找到它的唯一行、计数和路径数组),它会变得更复杂。下面是一段将返回PSObject数组的代码。每个包含XML文件中一个唯一行的信息

$ht = @()
$files = Get-ChildItem -recurse -Filter *.xml
foreach ($file in $files) {
    $path = $file.FullName
    $lines = Get-Content $path
    foreach ($line in $lines) {
        if ($match = $ht | where {$_.line -EQ $line}) {
            $match.count = $match.count + 1
            $match.Paths += $path
        } else {
            $ht += new-object PSObject -Property @{
                Count = 1
                Paths = @(,$path)
                Line = $line }
        }
    }
}

$ht

我相信它可以被缩短和优化,但希望它足以让您开始。

您只需要计数为1的行的位置?实际上是计数超过1的行。因此,您希望累积文件路径列表吗?我希望能够导出计数和xml的位置,所以我以后可以找到它做进一步的调查。。谢谢你的回复。当我运行您的代码时,出现了此错误。无法将值“G:\GPO Backup\{00A82A8A-E303-4241-9C59-49DE137EBA07}\gpreport.xml”转换为类型“System.Int32”。错误:“输入字符串格式不正确。”第1行字符:88+。。。t$path}|%{$ht[$\u]=$ht[$\u]+$path+“;”}如果将$ht定义为数组
$ht=@()
,则会出现该错误。在您的问题中,它被定义为哈希表
$ht=@{}
。根据您对要返回的问题的评论、唯一行、计数以及找到它的所有路径。这可能不会是“一行”。当我在电脑前时,我会编辑我的答案。谢谢你一直以来的帮助。