ConvertTo-Csv
將 .NET 物件轉換成一系列字元分隔值 (CSV) 字串。
語法
ConvertTo-Csv
[-InputObject] <psobject>
[[-Delimiter] <char>]
[-NoTypeInformation]
[<CommonParameters>]
ConvertTo-Csv
[-InputObject] <psobject>
[-UseCulture]
[-NoTypeInformation]
[<CommonParameters>]
Description
ConvertTo-CSV
Cmdlet 會傳回一系列字元分隔值 (CSV) 字串,代表您送出的物件。 接著,您可以使用 ConvertFrom-Csv
Cmdlet,從 CSV 字串重新建立物件。 從 CSV 轉換的物件是原始物件的字串值,其中包含屬性值和無方法。
您可以使用 Export-Csv
Cmdlet,將物件轉換成 CSV 字串。
Export-CSV
類似於 ConvertTo-CSV
,不同之處在於它會將 CSV 字串儲存至檔案。
ConvertTo-CSV
Cmdlet 具有參數來指定逗號以外的分隔符,或使用目前的文化特性做為分隔符。
範例
範例 1:將物件轉換成 CSV
這個範例會將 Process 物件轉換成 CSV 字串。
Get-Process -Name 'PowerShell' | ConvertTo-Csv -NoTypeInformation
"Name","SI","Handles","VM","WS","PM","NPM","Path","Company","CPU","FileVersion", ...
"powershell","11","691","2204036739072","175943680","132665344","33312", ...
Get-Process
Cmdlet 會取得 Process 物件,並使用 Name 參數來指定 PowerShell 進程。 進程物件會向下傳送至 ConvertTo-CSV
Cmdlet。
ConvertTo-CSV
Cmdlet 會將 物件轉換成 CSV 字串。
NoTypeInformation 參數會從 CSV 輸出中移除 #TYPE 資訊標頭。
範例 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"
Get-Date
Cmdlet 會取得 DateTime 物件,並將它儲存在 $Date
變數中。
ConvertTo-Csv
Cmdlet 會將 DateTime 物件轉換成字串。
InputObject 參數會使用儲存在 $Date
變數中的 DateTime 物件。
Delimiter 參數會指定分號來分隔字串值。
NoTypeInformation 參數會從 CSV 輸出中移除 #TYPE 資訊標頭。
範例 3:將 PowerShell 事件記錄檔轉換成 CSV
此範例會將PowerShell的 Windows 事件記錄檔轉換成一系列 CSV 字串。
(Get-Culture).TextInfo.ListSeparator
Get-WinEvent -LogName 'Windows PowerShell' | ConvertTo-Csv -UseCulture -NoTypeInformation
,
"Message","Id","Version","Qualifiers","Level","Task","Opcode","Keywords","RecordId", ...
"Error Message = System error","403",,"0","4","4",,"36028797018963968","46891","PowerShell", ...
Get-Culture
Cmdlet 會使用 TextInfo 巢狀屬性 和 ListSeparator,並顯示目前文化特性的預設清單分隔符。
Get-WinEvent
Cmdlet 會取得事件記錄檔物件,並使用 LogName 參數來指定記錄檔名稱。 事件記錄檔物件會向下傳送至 ConvertTo-Csv
Cmdlet。
ConvertTo-Csv
Cmdlet 會將事件記錄檔物件轉換成一系列 CSV 字串。
UseCulture 參數會使用目前文化特性的預設清單分隔符作為分隔符。
NoTypeInformation 參數會從 CSV 輸出中移除 #TYPE 資訊標頭。
參數
-Delimiter
指定分隔符,以分隔 CSV 字串中的屬性值。 預設值為逗號 (,
)。 輸入字元,例如冒號(:
)。 若要指定分號 (;
),請以單引弧括住它。
類型: | Char |
Position: | 1 |
預設值: | comma (,) |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-InputObject
指定轉換成 CSV 字串的物件。 輸入包含 物件的變數,或輸入取得物件的命令或表達式。 您也可以使用管線將物件傳送至 ConvertTo-CSV
。
類型: | PSObject |
Position: | 0 |
預設值: | None |
必要: | True |
接受管線輸入: | True |
接受萬用字元: | False |
-NoTypeInformation
從輸出中移除 #TYPE 資訊標頭。 此參數成為 PowerShell 6.0 中的預設值,並包含在回溯相容性中。
類型: | SwitchParameter |
別名: | NTI |
Position: | Named |
預設值: | False |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-UseCulture
使用目前文化特性的清單分隔符做為專案分隔符。 若要尋找文化特性的清單分隔符,請使用下列命令:(Get-Culture).TextInfo.ListSeparator
。
類型: | SwitchParameter |
Position: | Named |
預設值: | False |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
輸入
您可以使用管線將具有擴充類型系統 (ETS) 配接器的任何物件傳送至此 Cmdlet。
輸出
此 Cmdlet 會傳回一或多個字串,代表每個轉換的物件。
備註
在 CSV 格式中,每個物件都會以其屬性值的字元分隔清單來表示。 屬性值會使用 物件的 ToString() 方法轉換成字串。 字串會以屬性值名稱表示。
ConvertTo-CSV
不會匯出物件的方法。
CSV 字串會輸出如下:
- 根據預設,第一個字串包含 #TYPE 資訊標頭,後面接著物件類型的完整名稱。 例如,#TYPE System.Diagnostics.Process。
- 如果使用 NoTypeInformation,則第一個字串會包含數據行標頭。 標頭包含第一個物件的屬性名稱做為逗號分隔清單。
- 其餘字串包含每個物件的屬性值逗號分隔清單。
當您將多個物件提交至 ConvertTo-CSV
時,ConvertTo-CSV
會根據您送出之第一個對象的屬性來排序字串。 如果其餘對象沒有其中一個指定的屬性,該對象的屬性值為 Null,以兩個連續逗號表示。 如果其餘物件有其他屬性,則會忽略這些屬性值。