如何使用PowerShell替换CSV或html文件中的多个值?

时间:2011-05-24 14:26:06

标签: html scripting powershell csv windows-scripting

我编写了一个脚本,将文件夹对象列表读入xml文件,显示该文件夹的属性。它还会在以后创建另一个xml文件。创建delta xml文件后,我导入两个xml文件并根据文件夹名称进行比较,以显示已删除或删除的文件夹,并将结果以html格式保存到文件中以供查看。一切都很好,但我想替换结果中的一些值。 compare-object cmd-let让我显示一些属性,但通过put =>告诉我们改变了哪一方面。对于在增量文件中添加的文件夹或对于在增量文件中删除的文件夹的< =。我真的想替换SideIndicator的列名并替换=>或者< =具有更直观的值的值。我玩过使用-Replace {$ _ $ original,$ newvalue}类型方法。我找到了关于Hey Scripting Guy博客和其他一些例子的指导,但似乎没有人做我想要的。解决这个问题的最佳方法是什么?目前我没有存储比较结果,只是格式化和转换为HTML。任何建议表示赞赏。如果需要,我可以发布代码,但它大约有60行,我真的在寻找实现这一目标的最佳方法,而不是有人编写代码。

谢谢!

2 个答案:

答案 0 :(得分:0)

如果您只想在输出显示中替换列名,则可以创建自定义表:

http://gallery.technet.microsoft.com/scriptcenter/ed188912-1a20-4be9-ae4f-8ac46cf2aae4

答案 1 :(得分:0)

这是一种方法,但我最后通过执行以下操作来修改html报告:

(Get-Content $WorkingDirectory\FolderAudit_$UseDateTime.htm) | 
Foreach-Object {$_ -replace "SideIndicator", "Change Status"} |
Set-Content $WorkingDirectory\FolderAudit_$UseDateTime.htm
(Get-Content $WorkingDirectory\FolderAudit_$UseDateTime.htm) |
Foreach-Object {$_ -replace "=>", "New"} |
Set-Content $WorkingDirectory\FolderAudit_$UseDateTime.htm
(Get-Content $WorkingDirectory\FolderAudit_$UseDateTime.htm) | 
Foreach-Object {$_ -replace "<=", "Removed"} |
Set-Content $WorkingDirectory\FolderAudit_$UseDateTime.htm 

它似乎不能很好地作为一个声明取代我正在寻找的三个不同的部分。最终我会玩它并简化它,但现在它可以做我想要的。