使用Powershell将结果或文本附加到文本文件

时间:2014-03-26 20:50:05

标签: powershell

我有一组具有属性的对象:ProductName和PartName。集合的内容首先输出到文件:

$colProducts | sort-object ProductName | `
   Select-object ProductName PartName | `
   Format-Table -autosize ProductName, PartName | `
   Out-File myProducts.txt 

到目前为止一切顺利。但是,我无法在结果文件中附加文本消息,如下所示:

Add-Content myProducts.txt "`nParts in more than one Product`n"

我发现附加的文字最后是不可读的。我注意到的一件事是第一个集合到文件的输出是Unicode,第二个代码(add-content)是ASCII格式,如果只是一个新文件。

在此之后,我想继续在同一结果文件中添加以下信息:

$colProducts | Group-object PartName | sort-object PartName | `
   Where-Object {$_.Count -gt 1 } | `
   Select-object ProductName PartName | `
   Format-Table -autosize ProductName, PartName | `
   Out-File myProducts.txt

以上代码将覆盖结果文件。我需要附加到该文件。非常感谢帮助!

更新:很高兴知道-Append选项。添加内容怎么样?在收集Out-File之后,它似乎在文件中添加了一些不可读的字符。

3 个答案:

答案 0 :(得分:13)

我会先尝试:

$colProducts | Group-object PartName | sort-object PartName | `
  Where-Object {$_.Count -gt 1 } | `
  Select-object ProductName PartName | `
  Format-Table -autosize ProductName, PartName | `
  Out-File -Append myProducts.txt

然后查看this以了解您遇到的情况。

基本上,Out-File(和Out-File -Append)默认为您提供Unicode,Add-Content默认提供ASCII。我的建议是坚持同样的命令,你不应该有问题。

当然,help Out-File -Detailed!总是看看powershell的例子,因为它们有很大的帮助,不仅要弄清楚它们的常用用法,还要弄清楚它们。

答案 1 :(得分:4)

另一种选择:

$colProducts | sort-object ProductName | `
   Select-object ProductName PartName | `
   Format-Table -autosize ProductName, PartName | `
   Out-String | Add-Content myProducts.txt 

Add-Content myProducts.txt "`nParts in more than one Product`n"

答案 2 :(得分:2)

尝试:

$colProducts | Group-object PartName | sort-object PartName | `
   Where-Object {$_.Count -gt 1 } | `
   Select-object ProductName PartName | `
   Format-Table -autosize ProductName, PartName | `
   Out-File -Append myProducts.txt