【发布时间】:2015-05-15 17:11:53
【问题描述】:
下面的脚本不会在我的 CSV 文件中生成相关文件的路径。相反,它给了我 System.Object []。请告知我在这里做错了什么。
我的目标是清理多余的 GPO。我需要从 GPO 备份中搜索 xml 文件并对其进行分析。如果我在两个或多个 GPO 中找到相同的自定义字符串,路径将显示哪个文件夹包含冗余字符串,并且可以组合 GPO 或一起删除一个。有道理..我希望?
这是我得到的结果:第一行是计数,第三行是该行的值,第二行是 System.Object 应该显示路径,如
c:\gpobackup\00A72CC5-7935-4F97-A40B-68DE0ED927BF
1 System.Object[] 标识符 xmlns="http://www.microsoft.com/GroupPolicy/Types">{548FF13C-4CDD-43C7-8C59-D19087424B16}
5 System.Object[] 域 xmlns="http://www.microsoft.com/GroupPolicy/Types">corp.domain.net
5 System.Object[]
1 System.Object[] 名称>Exchange 移动 - SNY SPA - 启用 PST 归档
5 System.Object[] IncludeComments>true
$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
$ht.GetEnumerator() | select Count, Paths, Line | Export-Csv c:\temp\NLG_GPO_Sort.csv
【问题讨论】:
-
您的脚本并没有真正利用 PowerShell 的管道行为。剧本的最终目标是什么?我们或许可以重新设计它以提高工作效率。
-
@Bill 我的目标是清理多余的 GPO。我需要从 GPO 备份中搜索 xml 文件并对其进行分析。如果我在两个或多个 GPO 中找到相同的自定义字符串,路径将显示哪个文件夹包含冗余字符串,并且可以组合 GPO 或一起删除一个。有道理..我希望?
-
如果您可以发布示例文件内容以及您期望的输出,这将有所帮助。
-
@Bill_Stewart 我添加了示例
标签: powershell csv