使用 PowerShell 將輸出匯出到檔案
多種指令碼語言具有可讓你將資料匯出到檔案的功能或方法。即使在早期的 MS-DOS 時代,傳統的重定向運算子 (>
) 也可以方便地做到這一點。
本文將討論如何將輸出資料匯出到檔案、將資料新增到現有檔案以及使用 PowerShell 操作輸出。
PowerShell 中的 Out-File
命令簡介
假設你有一個指令碼,它返回你計算機上所有 Windows 服務的列表。當我們執行 Get-Service
時,你將收到你可能期望在控制檯上的所有物件。
但也許我們想將該輸出儲存到文字檔案中。Out-File
命令是一個很好的方法。
我們可以通過管道運算子管道幾乎任何東西來使用 Out-File
。下面,我們可以看到指令碼將 Get-Service
的輸出傳送到 cmdlet,它建立了一個名為 Services.txt
的文字檔案,其中包含在控制檯上的相同顯示。
示例程式碼:
Get-Service | Out-File -FilePath C:\PS\Services.txt
Get-Content C:\PS\Services.txt
輸出:
Status Name DisplayName
Stopped AJRouter AllJoyn Router Service
Stopped ALG Application Layer Gateway Service
<SNIP>
使用 -append
引數附加到 PowerShell 中的檔案
預設情況下,Out-File
命令會覆蓋通過 -FilePath
引數提供的文字檔案中的任何內容。但是,我們可以使用 -Append
引數覆蓋此行為。
也許我們正在將控制檯輸出累積到一個檔案中,並希望將文字附加到檔案而不是覆蓋。 -Append
引數是你最好的朋友。
如果我們不使用 Out-File -Append
引數,C:\PS\File.txt
內容將被覆蓋。但是,只要我們新增 -Append
引數,它就會將輸出附加到末尾。
示例程式碼:
'firststring' | Out-File -FilePath C:\PS\File.txt
Get-Content -Path C:\PS\File.txt
'secondstring' | Out-File -FilePath C:\PS\File.txt -Append
Get-Content C:\PS\File.txt
輸出:
firststring
firststring
secondstring
在 PowerShell 中更改輸出資料
預設情況下,此 cmdlet 將嘗試複製控制檯上顯示的內容,但有一些方法可以對其進行操作。例如,cmdlet 有一個 -NoNewLine
引數,用於刪除所有換行符。
示例程式碼:
Get-Service | Out-File -FilePath C:\PS\Services.txt -NoNewline
Get-Content C:\PS\Services.txt
輸出:
Status Name DisplayName
------ ---- -----------
Stopped AJRouter AllJoyn Router Service
Stopped ALG Application La
或者,我們可以使用 -Width
引數以特定字元數截斷每一行的文字。
示例程式碼:
Get-Service | Out-File -FilePath C:\PS\Services.txt -Width 30
Get-Content C:\PS\Services.txt
輸出:
Status Name DisplayName
------ ----- -----------
Stopped AJRouter Al
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn