2017-05-09 128 views
0

我發現了一個ping script這很有用,但我寧願將輸出寫入txt或csv,而不是使用Write-Host輸出到PS控制檯。如何輸出腳本到文件?

這樣做的最好方法是什麼?

+2

使用PowerShell 5和'Write-Information'。然後,將信息流重定向到一個文件。 – lit

+1

你打算運行什麼版本的PowerShell? –

+0

你還想要語法高亮嗎?最簡單的解決方案會讓你失望。允許cmdlet /函數生成輸出並允許調用者決定如何處理它或抑制它通常是一個好習慣。有幾個流允許你在這裏很多功能 – Matt

回答

2

您需要將Write-Host更改爲Out-File,或者更好的是Out-Default。使用Out-Default將允許您將輸出傳輸到其他cmdlet,因此可以根據您當前的特定需求,在不同的場合以不同的方式處理輸出。

寫主機繞過PowerShell管道,並有效地從管道中刪除它使用的任何對象,使它們無法分配或由其他cmdlet使用。

參考文獻:
Get-Help Write-Host
Get-Help Out-File
Get-Help Out-Default

+0

閱讀[這裏](http://stackoverflow.com/questions/24453370/how-to-dump-the-foreach-loop-output-into-a-file-in- PowerShell)不應該在循環中使用out-file。 – Heisenberg

+0

@海森堡 - 這是一個反對'Out-File'的好論據,同意;我一直沒有把性能作爲優先考慮事項 - 尤其是當我傾向於「Out-Default」模式時,我將它留給ping腳本的用戶,不管他是希望它轉到文件還是轉到另一個cmdlet或任何地方,在運行時。 –

+0

我似乎無法找到一個很好的例子,說明如何使用Out-Default在我正在使用此Ping腳本執行的上下文中。你知道嗎? – Heisenberg

1

嘗試添加標準輸出到一個數組。然後在最後寫結果。

#Define the array 
$myOutput = @() 

#Do something here" 
$myOutput += $myStdOut 
#Done with something 
$myOutput | out-file -FilePath c:\myOutput.txt -Encoding utf8 -NoClobber 
$cat c:\myOutput.txt 
相關問題