Export-Csv
將物件轉換成一系列的字元分隔值 (CSV) 字串,並將字串儲存至檔案。
語法
Delimiter (預設值)
Export-Csv
[[-Path] <String>]
[[-Delimiter] <Char>]
-InputObject <PSObject>
[-LiteralPath <String>]
[-Force]
[-NoClobber]
[-Encoding <Encoding>]
[-Append]
[-IncludeTypeInformation]
[-NoTypeInformation]
[-QuoteFields <String[]>]
[-UseQuotes <QuoteKind>]
[-NoHeader]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
UseCulture
Export-Csv
[[-Path] <String>]
-InputObject <PSObject>
[-LiteralPath <String>]
[-Force]
[-NoClobber]
[-Encoding <Encoding>]
[-Append]
[-UseCulture]
[-IncludeTypeInformation]
[-NoTypeInformation]
[-QuoteFields <String[]>]
[-UseQuotes <QuoteKind>]
[-NoHeader]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
Export-Csv Cmdlet 會建立您所提交物件的 CSV 檔案。 每個物件都是一個數據列,其中包含物件屬性值的字元分隔清單。 您可以使用 Export-Csv Cmdlet 來建立電子錶格,並與接受 CSV 檔案作為輸入的程式共享數據。
請勿在將對象傳送至 Export-Csv Cmdlet 之前格式化物件。 如果 Export-Csv 收到格式化的物件,CSV 檔案會包含格式屬性,而不是物件屬性。 若要只匯出對象的選取屬性,請使用 Select-Object Cmdlet。
範例
範例 1:將進程屬性匯出至 CSV 檔案
此範例會選取具有特定屬性 Process 物件,並將對象匯出至 CSV 檔案。
Get-Process -Name WmiPrvSE |
Select-Object -Property BasePriority, Id, SessionId, WorkingSet |
Export-Csv -Path .\WmiData.csv -NoTypeInformation
Import-Csv -Path .\WmiData.csv
BasePriority Id SessionId WorkingSet
------------ -- --------- ----------
8 976 0 20267008
8 2292 0 36786176
8 3816 0 30351360
8 8604 0 15011840
8 10008 0 8830976
8 11764 0 14237696
8 54632 0 9502720
Get-Process Cmdlet 會取得 Process 物件。
Name 參數會篩選輸出,只包含 WmiPrvSE 進程物件。 進程物件會向下傳送至 Select-Object Cmdlet。
Select-Object 會使用 Property 參數來選取進程物件屬性的子集。 進程物件會向下傳送至 Export-Csv Cmdlet。
Export-Csv 會將進程物件轉換成一系列 CSV 字串。
Path 參數會指定 WmiData.csv 檔案儲存在目前目錄中。
NoTypeInformation 參數會從 CSV 輸出中移除 #TYPE 資訊標頭,而且 PowerShell 6 中不需要。
Import-Csv Cmdlet 會使用 Path 參數來顯示位於目前目錄中的檔案。
範例 2:將進程匯出至逗號分隔的檔案
這個範例會取得 Process 物件,並將對象匯出至 CSV 檔案。
Get-Process | Export-Csv -Path .\Processes.csv -NoTypeInformation
Get-Content -Path .\Processes.csv
"Name","SI","Handles","VM","WS","PM","NPM","Path","Parent","Company","CPU","FileVersion", ...
"ApplicationFrameHost","4","511","2203597099008","35364864","21979136","30048", ...
Get-Process Cmdlet 會取得 Process 物件。 進程物件會向下傳送至 Export-Csv Cmdlet。
Export-Csv 會將進程物件轉換成一系列 CSV 字串。
Path 參數會指定 Processes.csv 檔案儲存在目前目錄中。
NoTypeInformation 參數會從 CSV 輸出中移除 #TYPE 資訊標頭,而且 PowerShell 6 中不需要。
Get-Content Cmdlet 會使用 Path 參數來顯示位於目前目錄中的檔案。
範例 3:將進程匯出至以分號分隔的檔案
本範例會取得 Process 物件,並將對象匯出至具有分號分隔符的檔案。
Get-Process | Export-Csv -Path .\Processes.csv -Delimiter ';' -NoTypeInformation
Get-Content -Path .\Processes.csv
"Name";"SI";"Handles";"VM";"WS";"PM";"NPM";"Path";"Parent";"Company";"CPU";"FileVersion"; ...
"ApplicationFrameHost";"4";"509";"2203595321344";"34807808";"21770240";"29504"; ...
Get-Process Cmdlet 會取得 Process 物件。 進程物件會向下傳送至 Export-Csv Cmdlet。
Export-Csv 會將進程物件轉換成一系列 CSV 字串。
Path 參數會指定 Processes.csv 檔案儲存在目前目錄中。
Delimiter 參數會指定分號來分隔字串值。
NoTypeInformation 參數會從 CSV 輸出中移除 #TYPE 資訊標頭,而且 PowerShell 6 中不需要。
Get-Content Cmdlet 會使用 Path 參數來顯示位於目前目錄中的檔案。
範例 4:使用目前文化特性的清單分隔符匯出進程
這個範例會取得 Process 物件,並將對象匯出至檔案。 分隔符是目前文化特性的清單分隔符。
(Get-Culture).TextInfo.ListSeparator
Get-Process | Export-Csv -Path .\Processes.csv -UseCulture -NoTypeInformation
Get-Content -Path .\Processes.csv
"Name","SI","Handles","VM","WS","PM","NPM","Path","Parent","Company","CPU","FileVersion", ...
"ApplicationFrameHost","4","511","2203597099008","35364864","21979136","30048", ...
Get-Culture Cmdlet 會使用 TextInfo 巢狀屬性 和 ListSeparator,並顯示目前文化特性的預設清單分隔符。
Get-Process Cmdlet 會取得 Process 物件。 進程物件會向下傳送至 Export-Csv Cmdlet。
Export-Csv 會將進程物件轉換成一系列 CSV 字串。
Path 參數會指定 Processes.csv 檔案儲存在目前目錄中。
UseCulture 參數會使用目前文化特性的預設清單分隔符作為分隔符。
NoTypeInformation 參數會從 CSV 輸出中移除 #TYPE 資訊標頭,而且 PowerShell 6 中不需要。
Get-Content Cmdlet 會使用 Path 參數來顯示位於目前目錄中的檔案。
範例 5:導出具有類型資訊的處理程式
此範例說明如何在 CSV 檔案中包含 #TYPE 標頭資訊。 #TYPE 標頭是PowerShell 6.0之前版本的預設。
Get-Process | Export-Csv -Path .\Processes.csv -IncludeTypeInformation
Get-Content -Path .\Processes.csv
#TYPE System.Diagnostics.Process
"Name","SI","Handles","VM","WS","PM","NPM","Path","Company","CPU","FileVersion", ...
"ApplicationFrameHost","4","507","2203595001856","35139584","20934656","29504", ...
Get-Process Cmdlet 會取得 Process 物件。 進程物件會向下傳送至 Export-Csv Cmdlet。
Export-Csv 會將進程物件轉換成一系列 CSV 字串。
Path 參數會指定 Processes.csv 檔案儲存在目前目錄中。
IncludeTypeInformation 在 CSV 輸出中包含 #TYPE 資訊標頭。
Get-Content Cmdlet 會使用 Path 參數來顯示位於目前目錄中的檔案。
範例 6:將物件匯出並附加至 CSV 檔案
此範例說明如何將對象匯出至 CSV 檔案,並使用 Append 參數將物件新增至現有的檔案。
$AppService = (Get-Service -DisplayName *Application* |
Select-Object -Property DisplayName, Status)
$AppService | Export-Csv -Path .\Services.Csv -NoTypeInformation
Get-Content -Path .\Services.Csv
$WinService = (Get-Service -DisplayName *Windows* |
Select-Object -Property DisplayName, Status)
$WinService | Export-Csv -Path .\Services.csv -NoTypeInformation -Append
Get-Content -Path .\Services.Csv
"DisplayName","Status"
"Application Layer Gateway Service","Stopped"
"Application Identity","Running"
"Windows Audio Endpoint Builder","Running"
"Windows Audio","Running"
"Windows Event Log","Running"
Get-Service Cmdlet 會取得服務物件。
DisplayName 參數會傳回包含 Application 一字的服務。 服務物件會向下傳送至 Select-Object Cmdlet。
Select-Object 會使用 Property 參數來指定 DisplayName 和 Status 属性。
$AppService 變數會儲存物件。
$AppService 物件會從管線向下傳送至 Export-Csv Cmdlet。
Export-Csv 會將服務對象轉換成一系列 CSV 字串。
Path 參數會指定 Services.csv 檔案儲存在目前目錄中。
NoTypeInformation 參數會從 CSV 輸出中移除 #TYPE 資訊標頭,而且 PowerShell 6 中不需要。
Get-Content Cmdlet 會使用 Path 參數來顯示位於目前目錄中的檔案。
包含 Windows 字組的服務會重複 Get-Service 和 Select-Object Cmdlet。
$WinService 變數會儲存服務物件。
Export-Csv Cmdlet 會使用 Append 參數來指定將 $WinService 物件新增至現有的 Services.csv 檔案。
Get-Content Cmdlet 會重複顯示包含附加資料的更新檔案。
範例 7:在管線內格式化 Cmdlet 會建立非預期的結果
此範例示範為何在管線內不要使用格式 Cmdlet 很重要。 收到非預期的輸出時,請針對管線語法進行疑難解答。
Get-Date | Select-Object -Property DateTime, Day, DayOfWeek, DayOfYear |
Export-Csv -Path .\DateTime.csv -NoTypeInformation
Get-Content -Path .\DateTime.csv
"DateTime","Day","DayOfWeek","DayOfYear"
"Wednesday, January 2, 2019 14:59:34","2","Wednesday","2"
Get-Date | Format-Table -Property DateTime, Day, DayOfWeek, DayOfYear |
Export-Csv -Path .\FTDateTime.csv -NoTypeInformation
Get-Content -Path .\FTDateTime.csv
"ClassId2e4f51ef21dd47e99d3c952918aff9cd","pageHeaderEntry","pageFooterEntry","autosizeInfo", ...
"033ecb2bc07a4d43b5ef94ed5a35d280",,,,"Microsoft.PowerShell.Commands.Internal.Format. ...
"9e210fe47d09416682b841769c78b8a3",,,,,
"27c87ef9bbda4f709f6b4002fa4af63c",,,,,
"4ec4f0187cb04f4cb6973460dfe252df",,,,,
"cf522b78d86c486691226b40aa69e95c",,,,,
Get-Date Cmdlet 會取得 DateTime 物件。 物件會向下傳送至 Select-Object Cmdlet。
Select-Object 使用 Property 參數來選取物件屬性的子集。 物件會向下傳送至 Export-Csv Cmdlet。
Export-Csv 將 物件轉換成 CSV 格式。
Path 參數會指定 DateTime.csv 檔案儲存在目前目錄中。
NoTypeInformation 參數會從 CSV 輸出中移除 #TYPE 資訊標頭,而且 PowerShell 6 中不需要。
Get-Content Cmdlet 會使用 Path 參數來顯示位於目前目錄中的 CSV 檔案。
當管線內使用 Format-Table Cmdlet 來選取收到非預期結果的屬性時。
Format-Table 會將數據表格式物件向下傳送至 Export-Csv Cmdlet,而不是 DateTime 物件。
Export-Csv 會將數據表格式物件轉換成一系列 CSV 字串。
Get-Content Cmdlet 會顯示 CSV 檔案,其中包含資料表格式物件。
範例 8:使用 Force 參數覆寫唯讀檔案
此範例會建立空的唯讀檔案,並使用 Force 參數來更新檔案。
New-Item -Path .\ReadOnly.csv -ItemType File
Set-ItemProperty -Path .\ReadOnly.csv -Name IsReadOnly -Value $true
Get-Process | Export-Csv -Path .\ReadOnly.csv -NoTypeInformation
Export-Csv : Access to the path 'C:\ReadOnly.csv' is denied.
At line:1 char:15
+ Get-Process | Export-Csv -Path .\ReadOnly.csv -NoTypeInformation
+ ~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OpenError: (:) [Export-Csv], UnauthorizedAccessException
+ FullyQualifiedErrorId : FileOpenFailure,Microsoft.PowerShell.Commands.ExportCsvCommand
Get-Process | Export-Csv -Path .\ReadOnly.csv -NoTypeInformation -Force
Get-Content -Path .\ReadOnly.csv
"Name";"SI";"Handles";"VM";"WS";"PM";"NPM";"Path";"Parent";"Company";"CPU";"FileVersion"; ...
"ApplicationFrameHost";"4";"509";"2203595321344";"34807808";"21770240";"29504"; ...
New-Item Cmdlet 會使用 Path 和 ItemType 參數,在當前目錄中建立 ReadOnly.csv 檔案。
Set-ItemProperty Cmdlet 會使用 Name 和 Value 參數,將檔案的 IsReadOnly 屬性變更為 true。
Get-Process Cmdlet 會取得 Process 物件。 進程物件會向下傳送至 Export-Csv Cmdlet。
Export-Csv 會將進程物件轉換成一系列 CSV 字串。
Path 參數會指定 ReadOnly.csv 檔案儲存在目前目錄中。
NoTypeInformation 參數會從 CSV 輸出中移除 #TYPE 資訊標頭,而且 PowerShell 6 中不需要。 輸出顯示檔案未寫入,因為存取遭到拒絕。
Force 參數會新增至 Export-Csv Cmdlet,以強制匯出寫入檔案。
Get-Content Cmdlet 會使用 Path 參數來顯示位於目前目錄中的檔案。
範例 9:搭配 Append 使用 Force 參數
此範例示範如何使用 Force 和 Append 參數。 結合這些參數時,可以將不相符的物件屬性寫入 CSV 檔案。
$Content = [pscustomobject]@{Name = 'PowerShell'; Version = '7.0'}
$Content | Export-Csv -Path .\ParmFile.csv -NoTypeInformation
$AdditionalContent = [pscustomobject]@{Name = 'Windows PowerShell'; Edition = 'Desktop'}
$AdditionalContent | Export-Csv -Path .\ParmFile.csv -NoTypeInformation -Append
Export-Csv : Cannot append CSV content to the following file: ParmFile.csv.
The appended object does not have a property that corresponds to the following column:
Version. To continue with mismatched properties, add the -Force parameter, and then retry
the command.
At line:1 char:22
+ $AdditionalContent | Export-Csv -Path .\ParmFile.csv -NoTypeInformation -Append
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidData: (Version:String) [Export-Csv], InvalidOperationException
+ FullyQualifiedErrorId : CannotAppendCsvWithMismatchedPropertyNames,Microsoft.PowerShell. ...
$AdditionalContent | Export-Csv -Path .\ParmFile.csv -NoTypeInformation -Append -Force
Import-Csv -Path .\ParmFile.csv
Name Version
---- -------
PowerShell 7.0
Windows PowerShell
表達式會使用 Name 和 Version 屬性,建立 PSCustomObject。 這些值會儲存在 $Content 變數中。
$Content 變數會向下傳送至 Export-Csv Cmdlet。
Export-Csv 會使用 Path 參數,並將 ParmFile.csv 檔案儲存在目前目錄中。
NoTypeInformation 參數會從 CSV 輸出中移除 #TYPE 資訊標頭,而且 PowerShell 6 中不需要。
另一個表達式會使用 Name 和 Edition 屬性來建立 PSCustomObject。 這些值會儲存在 $AdditionalContent 變數中。
$AdditionalContent 變數會向下傳送至 Export-Csv Cmdlet。
Append 參數可用來將數據新增至檔案。 附加失敗,因為 Version 與 Edition之間有屬性名稱不符。
Export-Csv Cmdlet Force 參數是用來強制匯出寫入檔案。 會捨棄 Edition 屬性。
Import-Csv Cmdlet 會使用 Path 參數來顯示位於目前目錄中的檔案。
範例 10:匯出至 CSV,其中包含兩個數據行左右的引號
本範例會將 DateTime 物件轉換成 CSV 字串。
Get-Date | Export-Csv -QuoteFields "DateTime","Date" -Path .\FTDateTime.csv
Get-Content -Path .\FTDateTime.csv
DisplayHint,"DateTime","Date",Day,DayOfWeek,DayOfYear,Hour,Kind,Millisecond,Minute,Month,Second,Ticks,TimeOfDay,Year
DateTime,"Thursday, August 22, 2019 11:27:34 AM","8/22/2019 12:00:00 AM",22,Thursday,234,11,Local,569,27,8,34,637020700545699784,11:27:34.5699784,2019
範例 11:僅在需要時導出為具有引號的 CSV
本範例會將 DateTime 物件轉換成 CSV 字串。
Get-Date | Export-Csv -UseQuotes AsNeeded -Path .\FTDateTime.csv
Get-Content -Path .\FTDateTime.csv
DisplayHint,DateTime,Date,Day,DayOfWeek,DayOfYear,Hour,Kind,Millisecond,Minute,Month,Second,Ticks,TimeOfDay,Year
DateTime,"Thursday, August 22, 2019 11:31:00 AM",8/22/2019 12:00:00 AM,22,Thursday,234,11,Local,713,31,8,0,637020702607132640,11:31:00.7132640,2019
範例 12:將哈希表轉換成 CSV
在 PowerShell 7.2 和更新版本中,當您將哈希表導出至 CSV 時,第一個哈希表的索引鍵會串行化並做為 csv 檔案輸出中的標頭。
$person1 = @{
Name = 'John Smith'
Number = 1
}
$person2 = @{
Name = 'Jane Smith'
Number = 2
}
$allPeople = $person1, $person2
$allPeople | Export-Csv -Path .\People.csv
Get-Content -Path .\People.csv
"Name","Number"
"John Smith","1"
"Jane Smith","2"
範例 13:使用其他屬性將哈希表轉換成 CSV
在 PowerShell 7.2 和更新版本中,當您匯出具有新增其他屬性的哈希表時,Add-Member 或 Select-Object 其他屬性也會新增為 CSV 檔案中的標頭。
$allPeople | Add-Member -Name ExtraProp -Value 42 -MemberType NoteProperty
$allPeople | Export-Csv -Path .\People.csv
Get-Content -Path .\People.csv
"Name","Number","ExtraProp"
"John Smith","1","42"
"Jane Smith","2","42"
每個哈希表都有名為 ExtraProp 的屬性,由 Add-Member 新增,然後匯出至 CSV。 您可以看到 ExtraProp 現在是 CSV 檔案輸出中的標頭。
如果新增的屬性具有與哈希表中索引鍵相同的 名稱,則索引鍵會優先使用,而且只會將密鑰導出至 CSV。
參數
-Append
使用此參數,Export-Csv 將 CSV 輸出新增至指定檔案的結尾。 如果沒有此參數,Export-Csv 會取代檔案內容而不發出警告。
此參數是在 Windows PowerShell 3.0 中引進的。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | False |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Confirm
在執行 Cmdlet 之前,提示您進行確認。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | False |
| 支援萬用字元: | False |
| 不要顯示: | False |
| 別名: | cf |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Delimiter
指定要分隔屬性值的分隔符。 預設值為逗號 (,)。 輸入字元,例如冒號(:)。 若要指定分號 (;),請以引弧括住它。
參數屬性
| 類型: | Char |
| 預設值: | comma (,) |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
Delimiter
| Position: | 1 |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Encoding
指定匯出 CSV 檔案的編碼方式。 預設值是 utf8NoBOM。
此參數可接受的值如下:
-
ascii:使用 ASCII (7 位) 字元集的編碼方式。 -
ansi:使用符合當前文化特性的 ANSI 代碼頁的編碼方式。 已新增此選項 -
bigendianunicode:使用高位元組序以 UTF-16 格式編碼。 -
bigendianutf32:使用大端字節順序以 UTF-32 格式進行編碼。 -
oem:使用 MS-DOS 和控制台程序的預設編碼方式。 -
unicode:使用小端位元組順序,以UTF-16格式進行編碼。 -
utf7:以UTF-7格式編碼。 -
utf8:以UTF-8格式編碼。 -
utf8BOM:以 UTF-8 格式(含位元組順序標記 BOM)編碼 -
utf8NoBOM:以 UTF-8 格式編碼,不含位元組順序標記【BOM】 -
utf32:以UTF-32格式編碼。
從 PowerShell 6.2 開始,編碼 參數也允許已註冊代碼頁的數值識別元(例如 -Encoding 1251)或已註冊代碼頁的字串名稱(例如 -Encoding "windows-1251")。 如需詳細資訊,請參閱 Encoding.CodePage的 .NET 檔。
從 PowerShell 7.4 開始,您可以使用 Ansi 參數的 值,傳遞目前文化的 ANSI 代碼頁的數值 ID,而不需要手動指定。
備註
UTF-7* 不再建議使用。 自 PowerShell 7.1 起,如果您為 utf7 參數指定 ,則會撰寫警告。
參數屬性
| 類型: | Encoding |
| 預設值: | UTF8NoBOM |
| 接受的值: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Force
此參數允許 Export-Csv 使用 只讀 屬性覆寫檔案。
當 Force 和 Append 參數合併時,包含不相符屬性的物件可以寫入 CSV 檔案。 只有相符的屬性會寫入檔案。 不相符的屬性會被捨棄。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | False |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-IncludeTypeInformation
使用此參數時,CSV 輸出的第一行會包含 #TYPE 後面接著物件類型的完整名稱。 例如: #TYPE System.Diagnostics.Process 。
此參數是在 PowerShell 6.0 中引進的。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | False |
| 支援萬用字元: | False |
| 不要顯示: | False |
| 別名: | ITI |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-InputObject
指定要匯出為 CSV 字串的物件。 輸入包含 物件的變數,或輸入取得物件的命令或表達式。 您也可以使用管線將物件傳送至 Export-Csv。
參數屬性
| 類型: | PSObject |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | True |
| 來自管線的值: | True |
| 來自管線按屬性名稱的值: | True |
| 來自剩餘引數的值: | False |
-LiteralPath
指定 CSV 輸出檔案的路徑。 不同於 Path,LiteralPath 參數的值完全按照輸入的方式使用。 不會將任何字元解譯為通配符。 如果路徑包含逸出字元,請使用單引號。 單引號會告知PowerShell不要將任何字元解譯為逸出序列。
參數屬性
| 類型: | String |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
| 別名: | PSPath, LP |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-NoClobber
使用此參數,讓 Export-Csv 不會覆寫現有的檔案。 根據預設,如果檔案存在於指定的路徑中,Export-Csv 會覆寫檔案而不發出警告。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | False |
| 支援萬用字元: | False |
| 不要顯示: | False |
| 別名: | NoOverwrite |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-NoHeader
使用此參數時,Cmdlet 不會將包含數據行名稱的標頭數據列寫入輸出。
此參數已在PowerShell 7.4中新增。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | False |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-NoTypeInformation
從輸出中移除 #TYPE 信息標頭。 此參數成為 PowerShell 6.0 中的預設值,並包含在回溯相容性中。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | False |
| 支援萬用字元: | False |
| 不要顯示: | False |
| 別名: | NTI |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Path
必要參數,指定要儲存 CSV 輸出檔案的位置。
參數屬性
| 類型: | String |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | 0 |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-QuoteFields
指定應加上引號的數據行名稱。 使用此參數時,只會引用指定的數據行。 此參數已在PowerShell 7.0中新增。
參數屬性
| 類型: | String[] |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
| 別名: | QF |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-UseCulture
使用針對目前文化環境的清單分隔符作為項目分隔符。 若要尋找文化特性的清單分隔符,請使用下列命令:(Get-Culture).TextInfo.ListSeparator。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | False |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
UseCulture
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-UseQuotes
指定 CSV 檔案中使用引號的時機。 可能的值為:
- 永不 - 不要引用任何東西
- 一律 - 引用所有項目 (預設行為)
- AsNeeded - 僅包含分隔符、雙引號或換行符的引號字段
此參數已在PowerShell 7.0中新增。
參數屬性
| 類型: | Microsoft.PowerShell.Commands.BaseCsvWritingCommand+QuoteKind |
| 預設值: | Always |
| 支援萬用字元: | False |
| 不要顯示: | False |
| 別名: | UQ |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-WhatIf
防止 Cmdlet 處理或進行變更。 輸出會顯示執行 Cmdlet 時會發生什麼情況。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | False |
| 支援萬用字元: | False |
| 不要顯示: | False |
| 別名: | 無線 |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
CommonParameters
此 Cmdlet 支援一般參數:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 如需詳細資訊,請參閱 about_CommonParameters。
輸入
PSObject
您可以使用管線將具有擴充類型系統 (ETS) 配接器的任何物件傳送至此 Cmdlet。
輸出
None
此 Cmdlet 不會傳回任何輸出。
備註
PowerShell 包含下列 Export-Csv的別名:
- 所有平臺:
epcsv
Export-Csv Cmdlet 會將您送出的物件轉換成一系列 CSV 字串,並將其儲存在指定的文本檔中。 您可以使用 Export-Csv -IncludeTypeInformation 將物件儲存在 CSV 檔案中,然後使用 Import-Csv Cmdlet 從 CSV 檔案中的文字建立物件。
在 CSV 檔案中,每個物件都會以物件屬性值的字元分隔清單來表示。 屬性值會使用 ToString() 方法轉換成字串。 字串會以屬性值名稱表示。
Export-Csv -IncludeTypeInformation 不會匯出 物件的方法。
CSV 字串會輸出如下:
- 如果使用 includeTypeInformation ,第一個字串會包含 #TYPE 資訊標頭,後面接著物件類型的完整名稱。 例如,#TYPE System.Diagnostics.Process。
- 如果未使用 IncludeTypeInformation,則第一個字串會包含數據行標頭。 標頭包含第一個物件的屬性名稱做為字元分隔清單。
- 其餘字串包含每個物件屬性值的字元分隔清單。
從 PowerShell 6.0 開始,Export-Csv 的預設行為是不包含 CSV 中的 #TYPE 資訊,並隱含 noTypeInformation 。
IncludeTypeInformation 可用來包含 #TYPE 資訊,並模擬 PowerShell 6.0 之前 Export-Csv 的默認行為。
當您將多個物件提交至 Export-Csv時,Export-Csv 會根據您送出之第一個對象的屬性來組織檔案。 如果其餘對象沒有其中一個指定的屬性,該對象的屬性值為 null,以兩個連續逗號表示。 如果其餘物件有其他屬性,這些屬性值就不會包含在檔案中。
您可以使用 Import-Csv Cmdlet,從檔案中的 CSV 字串重新建立物件。 產生的物件是原始物件的 CSV 版本,這些物件是由屬性值的字串表示和沒有方法所組成。
ConvertTo-Csv 和 ConvertFrom-Csv Cmdlet 會將物件轉換成 CSV 字串,以及從 CSV 字串。
Export-Csv 與 ConvertTo-Csv相同,不同之處在於它會將 CSV 字串儲存在檔案中。