PowerShell 將輸出匯出到文字檔案
PowerShell 是最重要的工具之一,由 CLI(命令列介面)組成。它由可用於自動化功能的指令碼語言和可用於 CI/CD 環境的配置管理框架組成。PowerShell 支援 Windows、Linux 和 macOS 作業系統。
PowerShell 命令將其標準輸出作為命令列介面中的列印行提供。我們可以在 PowerShell 中使用多個命令來獲得不同前景的輸出。
大多數使用者的關鍵要求之一是從 PowerShell 的命令列介面中獲取輸出。那就是將輸出獲取到文字檔案。我們可以使用某些 PowerShell 命令來實現此目的。
在 PowerShell 中將輸出匯出到文字檔案
我們將首先考慮一個通常給出標準輸出的示例命令。我們將在這裡使用的命令是 Compare-Object
。
Compare-Object
是 PowerShell 中的基本命令之一,它使使用者能夠比較兩個檔案。然後程式將輸出在這兩個文件中找到的更改。
此外,它指向通過 Side Indicator
找到唯一行的檔案。此命令通常用於跟蹤檔案在其不同版本中的更改。
用於比較的兩個輸入檔案及其所有內容如下所示。
Compare-Object $(Get-Content .\TestDoc1.txt) $(Get-Content .\TestDoc2.txt)
此命令中使用的兩個檔案具有字母字元的虛擬資料,每個檔案中有幾行是唯一的。上面程式碼的輸出是這樣的。
InputObject SideIndicator
----------- -------------
JJ =>
KK =>
LL =>
MM =>
NN =>
DD <=
EE <=
FF <=
GG <=
我們的主題是討論如何將上述輸出獲取到外部文字檔案。
有幾個命令可以做到這一點。有些被認為是最好和最簡單的。
在 PowerShell 中使用 Out-File
命令將普通命令的輸出匯出到一個文字檔案中
Out-File
是將 PowerShell 命令的輸出傳送到檔案的命令。例如,我們可以使用我們上面選擇的命令,如下所示。
Compare-Object $(Get-Content .\TestDoc1.txt) $(Get-Content .\TestDoc2.txt) | Out-File .\TestDoc3.txt
然後輸出不是寫在 PowerShell 命令列介面中而是直接列印在命令路徑中提供的 out 檔案中。下面的輸出是 TestDoc3
中列印的內容。
InputObject SideIndicator
----------- -------------
JJ =>
KK =>
LL =>
MM =>
NN =>
DD <=
EE <=
FF <=
GG <=
此外,下圖顯示了與輸出檔案相同的輸出。
可以使用其他選項,例如 Start-Transcript
和 Stop-Transcript
。我們可以使用這些來建立在其間執行的每個命令的指令碼。
在開始命令之前,你可以輸入 Start-Transcript
,在你想要編寫指令碼的命令的末尾,你可以輸入 Stop-Transcript
。
但是,這並不是將命令的輸出儲存到單獨的文字檔案的最佳解決方案,因為指令碼程序會記錄 PowerShell 中發生的所有事情。
因此,我們可以得出結論,out-file
是完成相關任務的最佳解決方案。如上所示,成功接收輸出。
Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.