输出将覆盖文件中的上一个条目

时间:2015-06-24 21:12:41

标签: file powershell

如果我摆脱了最后一行Out-File "HDDresults.txt",那么输出会以正确的格式显示在屏幕上,只是所有计算机及其序列号的长列表。如果我尝试输出到文件,则每个计算机条目都会覆盖前一个条目,因此当脚本完成执行时,只有文件中的最后一个条目。如何让文件输出看起来与控制台输出完全相同?

我不知道如何编写脚本。我只是从多个来源复制和粘贴,直到我得到了一些有用的东西。

Import-Module ActiveDirectory
Get-ADComputer -filter * | Foreach-Object { 
   Get-WmiObject Win32_PhysicalMedia -computer $_.name |
   Format-Table __server, Tag, SerialNumber |   
   Out-File "HDDresults.txt"
}

2 个答案:

答案 0 :(得分:1)

您只需设置-Append flag

即可
Out-File "HDDresults.txt" -Append

默认情况下,Out-File会覆盖每次写入操作的文件内容。这将导致它将文本添加到文件的末尾。

答案 1 :(得分:0)

虽然添加-Append参数会使脚本起作用,但我认为更好的解决方法是将Select语句及其后面的所有语句移到ForEach循环之外,以便一旦文件处理完毕,文件就会被写入一次,无需打开文件,写入文件,关闭文件,再次打开,写入文件,再次关闭文件,对于每个系统。

Import-Module ActiveDirectory
Get-ADComputer -filter * | 
   Foreach-Object { Get-WmiObject Win32_PhysicalMedia -computer $_.name } |
   Format-Table __server, Tag, SerialNumber |   
   Out-File "HDDresults.txt"