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