如果我摆脱了最后一行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"
}
答案 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"