PowerShell 將輸出匯出到文字檔案

Migel Hewage Nimesha 2022年5月16日
PowerShell 將輸出匯出到文字檔案

PowerShell 是最重要的工具之一,由 CLI(命令列介面)組成。它由可用於自動化功能的指令碼語言和可用於 CI/CD 環境的配置管理框架組成。PowerShell 支援 Windows、Linux 和 macOS 作業系統。

PowerShell 命令將其標準輸出作為命令列介面中的列印行提供。我們可以在 PowerShell 中使用多個命令來獲得不同前景的輸出。

大多數使用者的關鍵要求之一是從 PowerShell 的命令列介面中獲取輸出。那就是將輸出獲取到文字檔案。我們可以使用某些 PowerShell 命令來實現此目的。

在 PowerShell 中將輸出匯出到文字檔案

我們將首先考慮一個通常給出標準輸出的示例命令。我們將在這裡使用的命令是 Compare-Object

Compare-Object 是 PowerShell 中的基本命令之一,它使使用者能夠比較兩個檔案。然後程式將輸出在這兩個文件中找到的更改。

此外,它指向通過 Side Indicator 找到唯一行的檔案。此命令通常用於跟蹤檔案在其不同版本中的更改。

用於比較的兩個輸入檔案及其所有內容如下所示。

在 PowerShell 中將輸出匯出到文字檔案

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          <=           

此外,下圖顯示了與輸出檔案相同的輸出。

將輸出匯出到 PowerShell 中的文字檔案 - 2

可以使用其他選項,例如 Start-TranscriptStop-Transcript。我們可以使用這些來建立在其間執行的每個命令的指令碼。

在開始命令之前,你可以輸入 Start-Transcript,在你想要編寫指令碼的命令的末尾,你可以輸入 Stop-Transcript

但是,這並不是將命令的輸出儲存到單獨的文字檔案的最佳解決方案,因為指令碼程序會記錄 PowerShell 中發生的所有事情。

因此,我們可以得出結論,out-file 是完成相關任務的最佳解決方案。如上所示,成功接收輸出。

Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

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.