Powershell 需要添加测试引用位置的完整路径
到目前为止,我有一个包含2个值的哈希表。现在,下面的代码导出了所有唯一的行,并给出了该行在100个xml文件中被引用的次数。这是一部分 现在,我需要找出哪个子文件夹中有xml文件,该文件在哈希表中有唯一的引用行。这可能吗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
$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=@{}
。根据您对要返回的问题的评论、唯一行、计数以及找到它的所有路径。这可能不会是“一行”。当我在电脑前时,我会编辑我的答案。谢谢你一直以来的帮助。