共用方式為


ConvertTo-Csv

將 .NET 物件轉換成一系列的字元分隔值, (CSV) 字串。

Syntax

ConvertTo-Csv
              [-InputObject] <PSObject>
              [-IncludeTypeInformation]
              [-NoTypeInformation]
              [<CommonParameters>]
ConvertTo-Csv
              [-InputObject] <PSObject>
              [[-Delimiter] <Char>]
              [-IncludeTypeInformation]
              [-NoTypeInformation]
              [<CommonParameters>]
ConvertTo-Csv
              [-InputObject] <PSObject>
              [-UseCulture]
              [-IncludeTypeInformation]
              [-NoTypeInformation]
              [<CommonParameters>]

Description

Cmdlet 會 ConvertTo-CSV 傳回一系列的逗號分隔值, (CSV) 字串,代表您提交的物件。 然後 ConvertFrom-Csv ,您可以使用 Cmdlet 從 CSV 字串重新建立物件。 從 CSV 轉換的物件是原始物件的字串值,其中包含屬性值和沒有方法。

您可以使用 Export-Csv Cmdlet 將物件轉換成 CSV 字串。 Export-CSV 類似於 ConvertTo-CSV,不同之處在於它會將 CSV 字串儲存至檔案。

Cmdlet ConvertTo-CSV 有參數可指定逗號以外的分隔符,或使用目前文化特性做為分隔符。

範例

範例 1:將物件轉換為 CSV

這個範例會將 Process 物件轉換成 CSV 字串。

Get-Process -Name pwsh | ConvertTo-Csv -NoTypeInformation

"Name","SI","Handles","VM","WS","PM","NPM","Path","Parent","Company","CPU","FileVersion", ...
"pwsh","8","950","2204001161216","100925440","59686912","67104", ...

Cmdlet Get-Process 會取得 Process 物件,並使用 Name 參數來指定 PowerShell 進程。 進程物件會從管線向下傳送至 ConvertTo-CSV Cmdlet。 Cmdlet 會將 ConvertTo-CSV 物件轉換成 CSV 字串。 NoTypeInformation 參數會從 CSV 輸出中移除 #TYPE 資訊標頭,而且 PowerShell 6 中不需要。

範例 2:將 DateTime 物件轉換為 CSV

本範例會將 DateTime 物件轉換成 CSV 字串。

$Date = Get-Date
ConvertTo-Csv -InputObject $Date -Delimiter ';' -NoTypeInformation

"DisplayHint";"DateTime";"Date";"Day";"DayOfWeek";"DayOfYear";"Hour";"Kind";"Millisecond";"Minute";"Month";"Second";"Ticks";"TimeOfDay";"Year"
"DateTime";"Friday, January 4, 2019 14:40:51";"1/4/2019 00:00:00";"4";"Friday";"4";"14";"Local";"711";"40";"1";"51";"636822096517114991";"14:40:51.7114991";"2019"

Cmdlet Get-Date 會取得 DateTime 物件,並將它儲存在變數中 $Date 。 Cmdlet 會將 ConvertTo-CsvDateTime 物件轉換成字串。 InputObject 參數會使用儲存在變數中的 $DateDateTime 物件。 分隔符參數會指定要分隔字串值的分號。 NoTypeInformation 參數會從 CSV 輸出中移除 #TYPE 資訊標頭,而且 PowerShell 6 中不需要。

範例 3:將 PowerShell 事件記錄檔轉換為 CSV

此範例會將PowerShell的 Windows 事件記錄檔轉換成一系列的 CSV 字串。

(Get-Culture).TextInfo.ListSeparator
Get-WinEvent -LogName 'PowerShellCore/Operational' | ConvertTo-Csv -UseCulture -NoTypeInformation

,
"Message","Id","Version","Qualifiers","Level","Task","Opcode","Keywords","RecordId", ...
"Error Message = System error""4100","1",,"3","106","19","0","31716","PowerShellCore", ...

Cmdlet Get-Culture 會使用巢狀屬性 TextInfoListSeparator ,並顯示目前文化特性的預設清單分隔符。 Cmdlet Get-WinEvent 會取得事件記錄檔物件,並使用 LogName 參數來指定記錄檔名稱。 事件記錄檔物件會向下傳送至 ConvertTo-Csv Cmdlet。 Cmdlet 會將 ConvertTo-Csv 事件記錄檔物件轉換成一系列 CSV 字串。 UseCulture 參數會使用目前文化特性的預設清單分隔符作為分隔符。 NoTypeInformation 參數會從 CSV 輸出中移除 #TYPE 資訊標頭,而且 PowerShell 6 中不需要。

參數

-Delimiter

指定分隔符,以分隔 CSV 字串中的屬性值。 預設值為逗號 (,) 。 輸入字元,例如冒號 (:) 。 若要指定分號 (;) 以單引弧括住。

Type:Char
Position:1
Default value:comma (,)
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-IncludeTypeInformation

使用此參數時,輸出的第一行會包含 #TYPE 後面接著物件類型的完整名稱。 例如, #TYPE System.Diagnostics.Process

此參數是在 PowerShell 6.0 中引進。

Type:SwitchParameter
Aliases:ITI
Position:Named
Default value:#TYPE <Object>
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

指定轉換成 CSV 字串的物件。 輸入包含物件的變數,或輸入可取得物件的命令或運算式。 您也可以使用管線將 物件傳送至 ConvertTo-CSV

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

-NoTypeInformation

從輸出中移除 #TYPE 資訊標頭。 此參數在 PowerShell 6.0 中變成預設值,並隨附於回溯相容性中。

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

-UseCulture

使用目前文化特性的清單分隔符做為專案分隔符。 若要尋找文化特性的清單分隔符,請使用下列命令: (Get-Culture).TextInfo.ListSeparator

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

輸入

PSObject

您可以使用管線將具有擴充類型系統的任何物件 (ETS) 配接器傳送至 ConvertTo-CSV

輸出

String

CSV 輸出會以字串集合的形式傳回。

備註

在 CSV 格式中,每個物件都會以其屬性值的逗號分隔清單表示。 屬性值會使用 物件的 ToString () 方法轉換成字串。 字串是以屬性值名稱表示。 ConvertTo-CSV 不會匯出物件的方法。

CSV 字串的輸出如下:

  • 如果使用 IncludeTypeInformation ,則第一個字串是由 #TYPE 後面接著物件類型的完整名稱所組成。 例如, #TYPE System.Diagnostics.Process
  • 如果未使用 IncludeTypeInformation ,則第一個字串會包含數據行標頭。 標頭包含第一個對象的屬性名稱,做為逗號分隔清單。
  • 其餘字串包含每個物件的屬性值逗號分隔清單。

從 PowerShell 6.0 開始,的預設行為ConvertTo-CSV是不包含 CSV 和 NoTypeInformation 中的 #TYPE 資訊。 IncludeTypeInformation 可用來包含 #TYPE 資訊,並模擬 PowerShell 6.0 之前的默認行為 ConvertTo-CSV

當您將多個物件提交至 ConvertTo-CSV時, ConvertTo-CSV 會根據您提交之第一個對象的屬性來排序字串。 如果其餘對象沒有其中一個指定的屬性,該對象的屬性值會是 Null,以兩個連續逗號表示。 如果其餘的物件有其他屬性,則會忽略那些屬性值。