閱讀英文

共用方式為


Out-File

將輸出傳送到檔案。

語法

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

描述

Out-File Cmdlet 會將輸出傳送到檔案。當您需要使用參數時,可以使用這個 cmdlet 來代替重新導向運算子 (>)。

參數

-Append

將輸出附加至現有檔案結尾,而非取代檔案內容。

必要?

false

位置?

named

預設值

接受管線輸入?

false

接受萬用字元?

false

-Encoding <string>

指定檔案所使用的字元編碼類型。有效值包括 "Unicode"、"UTF7"、"UTF8"、"UTF32"、"ASCII"、"BigEndianUnicode"、"Default" 和 "OEM"。預設值為 "Unicode"。

"Default" 使用系統目前的 ANSI 字碼頁編碼。

"OEM" 使用作業系統目前的原始設備製造商字碼頁識別元。

必要?

false

位置?

2

預設值

接受管線輸入?

false

接受萬用字元?

false

-FilePath <string>

指定輸出檔的路徑。

必要?

true

位置?

1

預設值

接受管線輸入?

false

接受萬用字元?

false

-Force

允許此 Cmdlet 覆寫現有的唯讀檔案。即便使用 Force 參數,此 Cmdlet 也無法覆寫安全性限制。

必要?

false

位置?

named

預設值

接受管線輸入?

false

接受萬用字元?

false

-InputObject <psobject>

指定要寫入檔案的物件。請輸入包含物件的變數,或輸入可取得物件的命令或運算式。

必要?

false

位置?

named

預設值

接受管線輸入?

true (ByValue)

接受萬用字元?

false

-NoClobber

不覆寫 (取代) 現有檔案的內容。根據預設,如果檔案已在指定的路徑中,Out-File 會毫無預警地覆寫該檔案。若同時使用 Append 和 NoClobber,輸出會附加到現有的檔案。

必要?

false

位置?

named

預設值

接受管線輸入?

false

接受萬用字元?

false

-Width <int>

指定輸出的每一行字元數。任何多餘的字元都會被截斷,而非自動換行。如果省略此參數,則由主機的特性決定寬度。Windows PowerShell 主控台的預設值為 80 個字元。

必要?

false

位置?

named

預設值

接受管線輸入?

false

接受萬用字元?

false

-Confirm

在執行命令前先提示確認。

必要?

false

位置?

named

預設值

接受管線輸入?

false

接受萬用字元?

false

-WhatIf

說明執行命令時將會發生何種情況,但不會實際執行命令。

必要?

false

位置?

named

預設值

接受管線輸入?

false

接受萬用字元?

false

<CommonParameters>

這個 Cmdlet 支援一般參數:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。如需詳細資訊,請參閱 about_Commonparameters.

輸入和輸出

輸入型別是可經由管道輸出至 Cmdlet 的物件型別。傳回型別則是 Cmdlet 所傳回的物件型別。

輸入

System.Management.Automation.PSObject

您可經由管道將任何物件輸出至 Out-File。

輸出

Out-File 不會產生任何輸出。

附註

Out cmdlet 不會將物件格式化,而是單僅轉譯物件再傳送到指定的顯示目的地。若將尚未格式化的物件傳送給 Out cmdlet,cmdlet 便會在轉譯前先將物件傳送給格式化 cmdlet。

Out cmdlet 沒有名稱參數或檔案路徑參數。若要傳送資料給包含 Out 動詞的 Cmdlet (Out Cmdlet),請使用管線運算子 (|) 將 Windows PowerShell 命令的輸出傳送給此 Cmdlet。您也可以將資料儲存至變數,再使用 InputObject 參數將資料傳遞給 cmdlet。如需說明,請參閱範例。

Out-File 會傳送資料,但是不會發出任何輸出物件。如果您經由管道將 Out-File 的輸出輸出至 Get-Member,Get-Member 就會報告尚未指定物件的狀況。

範例 1

C:\PS>get-process | out-file -filepath C:\Test1\process.txt

描述
-----------
這個命令將電腦中處理序的清單傳送給 Process.txt 檔案。如果檔案不存在,Out-File 會自行建立。因為 FilePath 參數的名稱為選擇性,您可以省略它,並提交相等的命令 "get-process | outfile C:\Test1\process.txt"。





範例 2

C:\PS>get-process | out-file C:\Test1\process.txt -noclobber

Out-File : File C:\Test1\process.txt already exists and NoClobber was specified.
At line:1 char:23
+ get-process | out-file  <<<< process.txt -noclobber

描述
-----------
這個命令也會將處理序的清單傳送給 Process.txt 檔案,但是使用了 NoClobber 參數,以避免現有的檔案遭到覆寫。此命令的輸出會顯示錯誤訊息,而此訊息即是在使用 NoClobber 時檔案已存在的情況下所出現的。





範例 3

C:\PS>$a = get-process

C:\PS> out-file -filepath C:\Test1\process.txt -inputobject $a -encoding ASCII -width 50

描述
-----------
這些命令將電腦中處理序的清單傳送給 Process.txt 檔案。文字經過 ASCII 格式編碼,因此可由 Findstr 和 Grep 這類搜尋程式讀取。根據預設,Out-File 會使用 Unicode 格式。

第一個命令取得處理序的清單,再將它們儲存在 $a 變數中。第二個命令使用 Out-File Cmdlet,將清單傳送給 Process.txt 檔案。

此命令使用 InputObject 參數指定輸入位於 $a 變數中。它使用 Encoding 參數,將輸出轉換為 ASCII 格式。它使用 Width 參數,將檔案的每一行限制為 50 個字元。因為輸出的各行都會在到達 50 個字元時被截斷,所以會略掉處理序表格的最右欄。





範例 4

C:\PS>set-location hklm:\software

c:\PS>get-acl mycompany\mykey | out-file -filepath c:\ps\acl.txt

c:\PS>get-acl mycompany\mykey | out-file -filepath filesystem::acl.txt

描述
-----------
這些命令顯示如何在 FileSystem 磁碟機以外的位置使用 Out-File Cmdlet。

第一個命令將目前位置設定為 HKLM:\Software 登錄機碼。

第二和第三個命令的作用相同。它們都是使用 Get-Acl Cmdlet 來取得 MyKey 登錄子機碼 (HKLM\Software\MyCompany\MyKey) 的安全性描述元。管線運算子會將結果傳遞給 Out-File Cmdlet,後者再將它傳送至 Acl.txt 檔案。

因為 Windows PowerShell 登錄提供者不支援 Out-File,所以您必須在 FilePath 參數值中指定檔案系統磁碟機名稱 (例如 "c:") 或是提供者名稱 (後面接著兩個冒號),例如 "FileSystem::"。第二和第三個命令示範了這些方法。





請參閱

概念

Out-String
Out-Null
Out-Host
Out-Printer
Out-Default
Tee-Object