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



如果我去掉最后一行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"
}

您只需设置-Append标志:

Out-File "HDDresults.txt" -Append

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

虽然添加-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"

相关内容

  • 没有找到相关文章

最新更新