ConvertFrom-Csv
將字元分隔值 (CSV) 格式的物件屬性轉換成原始物件的 CSV 版本。
語法
Delimiter (預設值)
ConvertFrom-Csv
[[-Delimiter] <Char>]
[-InputObject] <PSObject[]>
[-Header <String[]>]
[<CommonParameters>]
UseCulture
ConvertFrom-Csv
[-InputObject] <PSObject[]>
-UseCulture
[-Header <String[]>]
[<CommonParameters>]
Description
ConvertFrom-Csv Cmdlet 會將字元分隔值 (CSV) 資料轉換成 PSObject CSV 數據行的類型物件。 新的物件會以從 CSV 資料讀取的順序寫入管線。 CSV 數據行標頭列中的值會成為新增至每個新 PSObject的屬性名稱。
ConvertFrom-Csv 建立的物件會 CSV 檔案中每個數據列的 PSObject 類型物件。 CSV 物件的屬性值是原始物件的屬性值字串版本。 物件的 CSV 版本沒有任何方法。
您也可以使用 Export-Csv 和 Import-Csv Cmdlet,將物件轉換成檔案中的 CSV 字串。 這些 Cmdlet 與 ConvertTo-Csv 和 ConvertFrom-Csv Cmdlet 相同,不同之處在於它們會將 CSV 字串儲存在檔案中。
PSObject 類型會維護數據行標頭順序中的屬性順序。 這表示當您將物件轉換成 CSV 格式時,會取得相同的數據行順序。
範例
範例 1:將本機電腦上的進程轉換為 CSV 格式
此範例示範如何將本機計算機上的進程轉換成 CSV 格式,然後將其還原為物件表單。
$P = Get-Process | ConvertTo-Csv
$P | ConvertFrom-Csv
Get-Process Cmdlet 會將行程從管線向下傳送至 ConvertTo-Csv。
ConvertTo-Csv Cmdlet 會將進程物件轉換成一系列 CSV 字串。
ConvertFrom-Csv Cmdlet 會將 CSV 字串轉換成原始進程物件的 CSV 版本。
CSV 字串會儲存在 $P 變數中。
範例 2:將資料物件轉換成 CSV 格式,然後轉換成 CSV 物件格式
此範例示範如何將數據物件轉換成 CSV 格式,然後轉換成 CSV 物件格式。
$Date = Get-Date | ConvertTo-Csv -Delimiter ';'
ConvertFrom-Csv -InputObject $Date -Delimiter ';'
第一個命令會使用 Get-Date,將管線的目前日期和時間向下傳送至 ConvertTo-Csv。
ConvertTo-Csv Cmdlet 會將日期物件轉換成一系列 CSV 字串。
Delimiter 參數可用來指定分號分隔符。 字串會儲存在 $Date 變數中。
範例 3:使用標頭參數來變更屬性的名稱
這個範例示範如何使用 的 ConvertFrom-Csv 參數來變更所產生匯入物件中的屬性名稱。
$J = Start-Job -ScriptBlock { Get-Process } | ConvertTo-Csv -NoTypeInformation
$Header = 'State', 'MoreData', 'StatusMessage', 'Location', 'Command',
'StateInfo', 'Finished', 'InstanceId', 'Id', 'Name', 'ChildJobs',
'BeginTime', 'EndTime', 'JobType', 'Output', 'Error', 'Progress',
'Verbose', 'Debug', 'Warning', 'Information'
# Delete the default header from $J
$J = $J[1..($J.Count - 1)]
$J | ConvertFrom-Csv -Header $Header
State : Running
MoreData : True
StatusMessage :
Location : localhost
Command : Get-Process
StateInfo : Running
Finished : System.Threading.ManualResetEvent
InstanceId : a259eb63-6824-4b97-a033-305108ae1c2e
Id : 1
Name : Job1
ChildJobs : System.Collections.Generic.List`1[System.Management.Automation.Job]
BeginTime : 12/20/2018 18:59:57
EndTime :
JobType : BackgroundJob
Output : System.Management.Automation.PSDataCollection`1[System.Management.Automation.PSObject]
Error : System.Management.Automation.PSDataCollection`1[System.Management.Automation.ErrorRecord]
Progress : System.Management.Automation.PSDataCollection`1[System.Management.Automation.ProgressRecord]
Verbose : System.Management.Automation.PSDataCollection`1[System.Management.Automation.VerboseRecord]
Debug : System.Management.Automation.PSDataCollection`1[System.Management.Automation.DebugRecord]
Warning : System.Management.Automation.PSDataCollection`1[System.Management.Automation.WarningRecord]
Information : System.Management.Automation.PSDataCollection`1[System.Management.Automation.InformationRecord]
Start-Job Cmdlet 會啟動執行 Get-Process的背景作業。 作業物件會向下傳送至管線,以 ConvertTo-Csv 並轉換成 CSV 字串。
NoTypeInformation 參數會從 CSV 輸出中移除類型資訊標頭,而且在 PowerShell v6 和更新版本中是選擇性的。
$Header 變數包含取代下列預設值的自定義標頭:HasMoreData、JobStateInfo、PSBeginTime、PSEndTime和 PSJobTypeName。
$J 變數包含 CSV 字串,並用來移除預設標頭。
ConvertFrom-Csv Cmdlet 會將 CSV 字串轉換成 PSCustomObject,並使用 Header 參數來套用 $Header 變數。
範例 4:轉換服務物件的 CSV 字串
此範例示範如何使用 ConvertFrom-Csv Cmdlet 搭配 UseCulture 參數。
(Get-Culture).TextInfo.ListSeparator
$Services = (Get-Service | ConvertTo-Csv)
ConvertFrom-Csv -InputObject $Services -UseCulture
Get-Culture Cmdlet 使用巢狀屬性 TextInfo 和 ListSeparator 來取得目前文化特性的預設清單分隔符。
Get-Service Cmdlet 會將服務物件向下傳送至管線,以 ConvertTo-Csv。
ConvertTo-Csv 會將服務對象轉換成一系列 CSV 字串。 CSV 字串會儲存在 $Services 變數中。
ConvertFrom-Csv Cmdlet 會使用 InputObject 參數,並從 $Services 變數轉換 CSV 字串。
UseCulture 參數使用當前文化設定的預設列表分隔符。
使用 UseCulture 參數時,請確定目前文化特性的預設清單分隔符符合 CSV 字串中使用的分隔符。 否則,ConvertFrom-Csv 無法從 CSV 字串產生物件。
範例 5:將 CSV 資料轉換為 W3C 擴展日誌格式
這個範例展示了如何將 W3C 擴展日誌格式的 CSV 資料轉換成物件。
$logData = @"
#Version: 1.0
#Date: 12-Jan-1996 00:00:00
#Fields: time,cs-method,cs-uri
00:34:23,GET,/foo/bar.html
12:21:16,GET,/foo/bar.html
12:45:52,GET,/foo/bar.html
12:57:34,GET,/foo/bar.html
"@
ConvertFrom-Csv $logData
time cs-method cs-uri
---- --------- ------
00:34:23 GET /foo/bar.html
12:21:16 GET /foo/bar.html
12:45:52 GET /foo/bar.html
12:57:34 GET /foo/bar.html
參數
-Delimiter
指定分隔符,分隔 CSV 字串中的屬性值。 預設值為逗號 (,)。 輸入字元,例如冒號(:)。 若要指定分號 (;),請以單引弧括住它。
如果您指定檔案中實際字串分隔符以外的字元,ConvertFrom-Csv 無法從 CSV 字串建立物件,並傳回 CSV 字串。
參數屬性
| 類型: | Char |
| 預設值: | comma (,) |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
Delimiter
| Position: | 1 |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Header
指定匯入字串的替代資料行行首數據列。 欄標題決定了ConvertFrom-Csv所建立物件的屬性名稱。
將欄標頭輸入為字元分隔的列表。 請勿以引號括住標頭字串。 以單引號括住每個欄位標題。
如果您輸入的欄位標題數量少於數據欄數量,其餘的數據欄將會被捨棄。 如果您輸入的數據行標頭數目超過數據行,則會使用空白數據行來建立其他數據行標頭。
使用 Header 參數時,請省略 CSV 字串中的數據行標頭字串。 否則,此 Cmdlet 會從標頭數據列中的專案建立額外的物件。
參數屬性
| 類型: | String[] |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-InputObject
指定要轉換成物件的 CSV 字串。 輸入包含 CSV 字串的變數,或輸入取得 CSV 字串的命令或表達式。 您也可以使用管線將 CSV 字串傳送至 ConvertFrom-Csv。
參數屬性
| 類型: | PSObject[] |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | 0 |
| 必要: | True |
| 來自管線的值: | True |
| 來自管線按屬性名稱的值: | True |
| 來自剩餘引數的值: | False |
-UseCulture
使用針對目前文化環境的清單分隔符作為項目分隔符。 若要尋找文化特性的清單分隔符,請使用下列命令:(Get-Culture).TextInfo.ListSeparator。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
UseCulture
| Position: | Named |
| 必要: | True |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
CommonParameters
此 Cmdlet 支援一般參數:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 如需詳細資訊,請參閱 about_CommonParameters。
輸入
String
您可以使用管線將 CSV 字串傳送至此 Cmdlet。
輸出
PSObject
此 Cmdlet 會傳回 CSV 字串中屬性所描述的物件。
備註
在 CSV 格式中,每個物件都會以物件屬性值的字元分隔清單來表示。 屬性值會使用 物件的 ToString() 方法,轉換成字串。 無法匯出物件的方法。
ConvertFrom-Csv 同時支援 W3C 擴展日誌格式。 以雜湊字元(#)開頭的行被視為註解,除非註解以逗號分隔的欄位名稱列表開頭 #Fields: 且不予理會。 在此情況下,Cmdlet 會使用這些數據行名稱。 這是 Windows IIS 和其他網頁伺服器記錄的標準格式。 如需詳細資訊,請參閱 擴充記錄檔格式。