共用方式為


Out-File

將輸出傳送至檔案。

Syntax

Out-File
   [-FilePath] <string>
   [[-Encoding] <string>]
   [-Append]
   [-Force]
   [-NoClobber]
   [-Width <int>]
   [-NoNewline]
   [-InputObject <psobject>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]
Out-File
   [[-Encoding] <string>]
   -LiteralPath <string>
   [-Append]
   [-Force]
   [-NoClobber]
   [-Width <int>]
   [-NoNewline]
   [-InputObject <psobject>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]

Description

Cmdlet 會將 Out-File 輸出傳送至檔案。 它會隱含地使用PowerShell的格式設定系統來寫入檔案。 檔案會接收與終端機相同的顯示表示法。 這表示除非所有輸入物件都是字串,否則輸出可能不適合以程式設計方式處理。 當您需要指定輸出的參數時,請使用 Out-File 而非重新導向運算符 (>)。 如需重新導向的詳細資訊,請參閱about_Redirection。

範例

範例 1:傳送輸出並建立檔案

此範例示範如何將本機計算機進程清單傳送至檔案。 如果檔案不存在, Out-File 請在指定的路徑中建立檔案。

Get-Process | Out-File -FilePath .\Process.txt
Get-Content -Path .\Process.txt

NPM(K)    PM(M)      WS(M)     CPU(s)      Id  SI ProcessName
 ------    -----      -----     ------      --  -- -----------
     29    22.39      35.40      10.98   42764   9 Application
     53    99.04     113.96       0.00   32664   0 CcmExec
     27    96.62     112.43     113.00   17720   9 Code

Cmdlet Get-Process 會取得本機計算機上執行的進程清單。 Process 物件會向下傳送至 Out-File Cmdlet。 Out-File使用 FilePath 參數,並在名為 Process.txt 的目前目錄中建立檔案。 命令 Get-Content 會從檔案取得內容,並在PowerShell控制台中顯示它。

範例 2:防止覆寫現有的檔案

此範例會防止覆寫現有的檔案。 根據預設,會 Out-File 覆寫現有的檔案。

Get-Process | Out-File -FilePath .\Process.txt -NoClobber

Out-File : The file 'C:\Test\Process.txt' already exists.
At line:1 char:15
+ Get-Process | Out-File -FilePath .\Process.txt -NoClobber
+               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Cmdlet Get-Process 會取得本機計算機上執行的進程清單。 Process 物件會向下傳送至 Out-File Cmdlet。 Out-File使用 FilePath 參數,並嘗試寫入目前目錄中名為 Process.txt 的檔案。 NoClobber 參數可防止覆寫檔案,並顯示檔案已經存在的訊息。

範例 3:以 ASCII 格式將輸出傳送至檔案

此範例示範如何使用特定編碼類型來編碼輸出。

$Procs = Get-Process
Out-File -FilePath .\Process.txt -InputObject $Procs -Encoding ASCII -Width 50

Cmdlet Get-Process 會取得本機計算機上執行的進程清單。 Process 物件會儲存在變數 $Procs中。 Out-File使用 FilePath 參數,並在名為 Process.txt 的目前目錄中建立檔案。 InputObject 參數會將進程對象$Procs傳遞至檔案Process.txtEncoding 參數會將輸出轉換成 ASCII 格式。 Width 參數會將檔案中的每個行限制為 50 個字元,因此可能會截斷某些數據。

範例 4:使用提供者並將輸出傳送至檔案

此範例示範當您不在 FileSystem 提供者磁碟驅動器中時,如何使用 Out-File Cmdlet。 Get-PSProvider使用 Cmdlet 來檢視本機電腦上的提供者。 如需詳細資訊,請參閱 about_Providers

PS> Set-Location -Path Alias:

PS> Get-Location

Path
----
Alias:\

PS> Get-ChildItem | Out-File -FilePath C:\TestDir\AliasNames.txt

PS> Get-Content -Path C:\TestDir\AliasNames.txt

CommandType     Name
-----------     ----
Alias           % -> ForEach-Object
Alias           ? -> Where-Object
Alias           ac -> Add-Content
Alias           cat -> Get-Content

命令Set-Location會使用 Path 參數,將目前的位置設定為登錄提供者 Alias:。 Cmdlet Get-Location 會顯示 的完整路徑 Alias:Get-ChildItem 將物件向下傳送至 Out-File Cmdlet。 Out-File使用 FilePath 參數來指定輸出的完整路徑和檔名 C :\TestDir\AliasNames.txt。 Cmdlet Get-Content 會使用 Path 參數,並在 PowerShell 控制台中顯示檔案的內容。

範例 5:設定整個範圍的檔案輸出寬度

這個範例會使用 $PSDefaultParameterValues 將 和 重新導向操作者的所有>>>調用Out-File參數設定Width為 2000。 這可確保在目前範圍內將格式化數據輸出到檔案的任何地方,PowerShell 會使用 2000 的線條寬度,而不是 PowerShell 主機控制台寬度所決定的線條寬度。

function DemoDefaultOutFileWidth() {
    try {
        $PSDefaultParameterValues['out-file:width'] = 2000

        $logFile = "$pwd\logfile.txt"

        Get-ChildItem Env:\ > $logFile

        Get-Service -ErrorAction Ignore |
            Format-Table -AutoSize |
            Out-File $logFile -Append

        Get-Process | Format-Table Id,SI,Name,Path,MainWindowTitle >> $logFile
    }
    finally {
        $PSDefaultParameterValues.Remove('out-file:width')
    }
}

DemoDefaultOutFileWidth

如需 的詳細資訊 $PSDefaultParameterValues,請參閱 about_Preference_Variables

參數

-Append

將輸出新增至現有檔案的結尾。 如果未指定編碼,Cmdlet 會使用預設編碼。 該編碼可能不符合目標檔案的編碼方式。 這與重新導向運算子 (>>) 的行為相同。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Confirm

執行 Cmdlet 之前先提示您確認。

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Encoding

指定目標檔案的編碼類型。 預設值是 unicode

此參數可接受的值如下:

  • ascii 使用 ASCII (7 位) 字元集。
  • bigendianunicode 使用UTF-16搭配 big-endian 位元組順序。
  • default 使用對應至系統使用中代碼頁 (通常是 ANSI) 的編碼方式。
  • oem 使用對應至系統目前 OEM 代碼頁的編碼方式。
  • stringunicode相同。
  • unicode 使用UTF-16搭配位元組順序。
  • unknownunicode相同。
  • utf7 使用UTF-7。
  • utf8 使用UTF-8。
  • utf32 使用UTF-32搭配位元組順序。
Type:String
Accepted values:ASCII, BigEndianUnicode, Default, OEM, String, Unicode, Unknown, UTF7, UTF8, UTF32
Position:1
Default value:Unicode
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-FilePath

指定輸出檔案的路徑。

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Force

覆寫唯讀屬性,並覆寫現有的唯讀檔案。 Force 參數不會覆寫安全性限制。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

指定要寫入檔案的物件。 輸入包含 物件的變數,或輸入取得物件的命令或表達式。

Type:PSObject
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-LiteralPath

指定輸出檔案的路徑。 LiteralPath 參數的型別完全一樣使用。 不接受通配符。 如果路徑包含逸出字元,請以單引弧括住它。 單引號會告知PowerShell不要將任何字元解譯為逸出序列。 如需詳細資訊,請參閱 about_Quoting_Rules

Type:String
Aliases:PSPath
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-NoClobber

NoClobber 可防止覆寫現有的檔案,並顯示檔案已經存在的訊息。 根據預設,如果檔案存在於指定的路徑中, Out-File 則會覆寫檔案而不發出警告。

Type:SwitchParameter
Aliases:NoOverwrite
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-NoNewline

指定寫入檔案的內容不會以換行符結尾。 輸入物件的字串表示會串連以形成輸出。 輸出字串之間不會插入空格或換行符。 最後一個輸出字串之後不會新增任何換行符。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

顯示執行 Cmdlet 後會發生的情況。 Cmdlet 未執行。

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Width

指定每個輸出列中的字元數上限。 任何其他字元都會被截斷,不會包裝。 如果未使用此參數,則寬度取決於主機的特性。 PowerShell 控制台的預設值為 80 個字元。 如果您想要控制 所有調用Out-File的寬度,以及重新導向運算符 (>>>),請使用 Out-File之前設定$PSDefaultParameterValues['out-file:width'] = 2000

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

輸入

PSObject

您可以使用管線將任何物件傳送至此 Cmdlet。

輸出

None

此 Cmdlet 不會傳回任何輸出。

備註

輸入物件會在終端機中自動格式化,但您可以使用 Format-* Cmdlet 來明確控制輸出到檔案的格式。 例如,Get-Date | Format-List | Out-File out.txt

若要將 PowerShell 命令的輸出傳送至 Out-File Cmdlet,請使用管線。 或者,您可以將資料儲存在變數中,並使用 InputObject 參數將數據傳遞至 Out-File Cmdlet。

Out-File 會將資料儲存至檔案,但不會產生管線的任何輸出物件。