Export-CSV
將 Microsoft .NET Framework 物件轉換成一連串以逗號分隔值 (CSV) 且長度可變的字串,並將該字串儲存到 CSV 檔案。
語法
Export-CSV [[-Delimiter] <char>] [-Path] <string> -InputObject <psobject> [-Encoding <string>] [-Force] [-NoClobber] [-NoTypeInformation] [-Confirm] [-WhatIf] [<CommonParameters>]
Export-CSV [-UseCulture] [-Path] <string> -InputObject <psobject> [-Encoding <string>] [-Force] [-NoClobber] [-NoTypeInformation] [-Confirm] [-WhatIf] [<CommonParameters>]
描述
Export-CSV Cmdlet 會建立長度可變的 CSV 檔案,代表您所送出的物件。
然後您可以使用 Import-CSV Cmdlet,從該檔案中的 CSV 字串重新建立物件。產生的物件為原始物件的 CSV 版本,是由屬性值的字串表示所組成,而且沒有任何方法。
您也可以使用 ConvertTo-CSV 和 ConvertFrom-CSV Cmdlet,將 .NET Framework 物件轉換成 CSV 字串 (反之亦然)。Export-CSV 除了將 CSV 字串儲存到檔案中以外,與 ConvertTo-CSV 都相同。
您可以使用 Export-CSV Cmdlet 的參數指定逗號以外的分隔符號,或是指示 Export-CSV 使用目前文化特性的預設分隔符號。
當您送出多個物件給 Export-CSV 時,Export-CSV 會依照所送出之第一個物件的屬性來組織檔案。如果其他物件沒有其中一個指定的屬性,該物件的屬性值則為 null,以兩個連續的逗號代表。如果其他物件有額外的屬性,則不會在檔案中包含額外的屬性值。
如需詳細資訊,請參閱 Export-CSV 和 Notes 區段。
參數
-Delimiter <char>
指定分隔屬性值的分隔符號。預設為逗號 (,)。請輸入字元,例如分號 (:)。若要指定分號 (;),請將其置於引號內。
必要? |
false |
位置? |
2 |
預設值 |
, (逗號) |
接受管線輸入? |
false |
接受萬用字元? |
false |
-Encoding <string>
指定 CSV 匯出檔的編碼。有效的值包括 Unicode、UTF7、UTF8、ASCII、UTF32、BigEndianUnicode、Default 和 OEM。預設為 ASCII。
必要? |
false |
位置? |
named |
預設值 |
ASCII |
接受管線輸入? |
false |
接受萬用字元? |
false |
-Force
毫無預警地覆寫路徑中指定的檔案。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
false |
-InputObject <psobject>
指定要匯出成 CSV 字串的物件。請輸入包含物件的變數,或輸入可取得物件的命令或運算式。您也可經由管道將物件輸出至 Export-CSV。
必要? |
true |
位置? |
named |
預設值 |
|
接受管線輸入? |
true (ByValue, ByPropertyName) |
接受萬用字元? |
false |
-NoClobber
不覆寫 (取代) 現有檔案的內容。根據預設,如果有檔案現存於指定的路徑,Export-CSV 將覆寫該檔案而不顯示警告。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
false |
-NoTypeInformation
省略 CSV 檔案的型別資訊標頭。根據預設,CSV 檔案的第一行會包含 "#TYPE ",後面接著 .NET Framework 物件型別的完整名稱。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
false |
-Path <string>
指定 CSV 輸出檔的路徑。此參數為必要項。
必要? |
true |
位置? |
1 |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
false |
-UseCulture
使用目前文化特性的清單分隔符號做為項目分隔符號。預設為逗號 (,)。
此參數針對發佈給全球使用者的指令碼很有用。若要尋找文化特性的清單分隔符號,請使用下列命令:(Get-Culture).TextInfo.ListSeparator。
必要? |
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 您可經由管道將任何 .NET Framework 物件輸出至 Export-CSV。 |
輸出 |
System.String CSV 清單會傳送至 Path 參數所指定的檔案。 |
附註
Export-CSV Cmdlet 會將您所送出的物件轉換成一連串長度可變的 CSV 字串,並將它們儲存到指定的文字檔。您可以使用 Export-CSV 將物件儲存到 CSV 檔案,然後使用 Import-CSV Cmdlet 從該 CSV 檔案中的文字建立物件。
在 CSV 檔案中,每個物件都會由逗號分隔物件屬性值的清單來代表。屬性值會轉換成字串 (利用物件的 ToString() 方法),所以一般由屬性值的名稱來代表。Export-CSV 並不會匯出物件的方法。
匯出檔的格式如下:
-- CSV 檔案的第一行包含 '#TYPE ' 字串,後面接著 .NET Framework 物件型別的完整名稱,例如 #TYPE System.Diagnostics.Process。若要隱藏這一行,請使用 NoTypeInformation 參數。
-- CSV 檔案的第二行代表欄標頭,而且包含逗號分隔第一個物件所有屬性名稱的清單。
-- CSV 檔案的其他行包含逗號分隔每個物件屬性值的清單。
範例 1
C:\PS>get-process wmiprvse | select-object basePriority,ID,SessionID,WorkingSet | export-csv -path data.csv
描述
-----------
這個命令選取 wmiprvse 處理序的幾個屬性,並將它們匯出至名為 data.csv 的 CSV 格式檔案。
範例 2
C:\PS>get-process | export-csv processes.csv
C:\PS> get-process | export-csv processes.csv
# In processes.csv
#TYPE System.Diagnostics.Process
__NounName,Name,Handles,VM,WS,PM,NPM,Path,Company,CPU,FileVersion,...
Process,powershell,626,201666560,76058624,61943808,11960,C:\WINDOWS...
Process,powershell,257,151920640,38322176,37052416,7836,C:\WINDOWS\...
描述
-----------
這個命令會將那些代表電腦上處理序的物件匯出到目前目錄中的 Processes.csv 檔案,因為沒有指定分隔符號,該檔案中的欄位用逗號 (,) 分隔。
範例 3
C:\PS>get-process | export-csv processes.csv -Delimiter ";"
# In processes.csv
#TYPE System.Diagnostics.Process
__NounName;Name;Handles;VM;WS;PM;NPM;Path;Company;CPU;FileVersion;...
Process;powershell;626;201666560;76058624;61943808;11960;C:\WINDOWS...
Process;powershell;257;151920640;38322176;37052416;7836;C:\WINDOWS\...
描述
-----------
這個命令會將那些代表電腦上處理序的物件匯出到目前目錄中的 Processes.csv 檔案,並使用 Delimiter 參數指定分號 (;)。因此,該檔案中的欄位之間是以分號分隔。
範例 4
C:\PS>get-process | export-csv processes.csv -UseCulture
描述
-----------
這個命令會將那些代表電腦上處理序的物件匯出到目前目錄中的 Processes.csv 檔案,並使用 UseCulture 參數指示 Export-CSV 使用目前文化特性的 ListSeparator 屬性所指定的分隔符號。
範例 5
C:\PS>get-process | export-csv processes.csv -NoTypeInformation
C:\PS> get-process | export-csv processes.csv -NoTypeInformation
# In processes.csv
__NounName,Name,Handles,VM,WS,PM,NPM,Path,Company,CPU,FileVersion,...
Process,powershell,626,201666560,76058624,61943808,11960,C:\WINDOWS...
Process,powershell,257,151920640,38322176,37052416,7836,C:\WINDOWS\...
描述
-----------
這個命令會將那些代表電腦上處理序的物件匯出到目前目錄中的 Processes.csv 檔案,並使用 NoTypeInformation 參數隱藏該檔案中的型別資訊。