ConvertFrom-Csv
將以逗號分隔值 (CSV) 格式的物件屬性轉換為原始物件的 CSV 版本。
Syntax
ConvertFrom-Csv
[[-Delimiter] <Char>]
[-InputObject] <PSObject[]>
[-Header <String[]>]
[<CommonParameters>]
ConvertFrom-Csv
-UseCulture
[-InputObject] <PSObject[]>
[-Header <String[]>]
[<CommonParameters>]
Description
Cmdlet 會 ConvertFrom-Csv
從 Cmdlet 產生的 ConvertTo-Csv
CSV 可變長度字串建立物件。
您可以使用這個 Cmdlet 的參數來指定數據行標頭數據列,以決定結果對象的屬性名稱、指定專案分隔符,或指示此 Cmdlet 使用目前文化特性的清單分隔符做為分隔符。
建立的物件 ConvertFrom-Csv
是原始物件的 CSV 版本。 CSV 物件的屬性值是原始物件屬性值的字串版本。 物件的 CSV 版本不含任何方法。
您也可以使用 Export-Csv
和 Import-Csv
Cmdlet,將物件轉換成檔案中的 CSV 字串, (和返回) 。 這些 Cmdlet 與 ConvertTo-Csv
和 ConvertFrom-Csv
Cmdlet 相同,不同之處在於它們會將 CSV 字串儲存在檔案中。
範例
範例 1:將本機電腦上的進程轉換為 CSV 格式
此範例示範如何將本機計算機上的進程轉換成 CSV 格式,然後將其還原為物件表單。
$P = Get-Process | ConvertTo-Csv
$P | ConvertFrom-Csv
Cmdlet 會將 Get-Process
行程向下傳送至 ConvertTo-Csv
。 Cmdlet 會將 ConvertTo-Csv
進程對象轉換成一系列的 CSV 字串。 Cmdlet 會將 ConvertFrom-Csv
CSV 字串轉換成原始進程物件的 CSV 版本。 CSV 字串會儲存在變數中 $P
。
範例 2:將資料物件轉換成 CSV 格式,然後轉換成 CSV 物件格式
這個範例示範如何將數據對象轉換成 CSV 格式,然後再轉換成 CSV 物件格式。
$Date = Get-Date | ConvertTo-Csv -Delimiter ';'
ConvertFrom-Csv -InputObject $Date -Delimiter ';'
第一個命令會使用 Get-Date
將管線的目前日期和時間傳送至 ConvertTo-Csv
。 Cmdlet 會將 ConvertTo-Csv
date 物件轉換成一系列的 CSV 字串。
分隔符參數是用來指定分號分隔符。 字串會儲存在變數中 $Date
。
範例 3:使用標頭參數來變更屬性的名稱
這個範例示範如何使用的 ConvertFrom-Csv
Header 參數來變更所產生匯入物件中的屬性名稱。
$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]
Cmdlet 會 Start-Job
啟動執行的背景作業 Get-Process
。 作業物件會向下傳送至管線, ConvertTo-Csv
並轉換成 CSV 字串。 NoTypeInformation 參數會從 CSV 輸出中移除類型資訊標頭,而且在 PowerShell v6 和更新版本中是選擇性的。 $Header
變數包含取代下列預設值的自定義標頭:HasMoreData、JobStateInfo、PSBeginTime、PSEndTime 和 PSJobTypeName。 $J
變數包含 CSV 字串,可用來移除預設標頭。 Cmdlet 會將 ConvertFrom-Csv
CSV 字串轉換成 PSCustomObject ,並使用 Header 參數來套用 $Header
變數。
範例 4:轉換服務物件的 CSV 字串
此範例示範如何搭配UseCulture參數使用 ConvertFrom-Csv
Cmdlet。
(Get-Culture).TextInfo.ListSeparator
$Services = (Get-Service | ConvertTo-Csv)
ConvertFrom-Csv -InputObject $Services -UseCulture
Cmdlet Get-Culture
會使用巢狀屬性 TextInfo 和 ListSeparator 來取得目前文化特性的預設清單分隔符。 Cmdlet 會將 Get-Service
服務物件向下傳送至 ConvertTo-Csv
。 會將 ConvertTo-Csv
服務對象轉換成一系列 CSV 字串。 CSV 字串會儲存在變數中 $Services
。 Cmdlet ConvertFrom-Csv
會使用 InputObject 參數,並從變數轉換 CSV 字串 $Services
。 UseCulture 參數會使用目前文化特性的預設清單分隔符。
使用 UseCulture 參數時,請確定目前文化特性的預設清單分隔符符合 CSV 字串中使用的分隔符。 否則, ConvertFrom-Csv
無法從 CSV 字串產生物件。
參數
-Delimiter
指定 CSV 字串中用來分隔屬性值的分隔符號。 預設值為逗號 (,
) 。 輸入字元,例如冒號 (:
) 。 若要指定分號 (;
) 以單引弧括住。
如果您指定檔案中實際字串分隔符以外的字元,則無法從 CSV 字串建立對象, ConvertFrom-Csv
並且會傳回 CSV 字串。
Type: | Char |
Position: | 1 |
Default value: | comma (,) |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Header
指定匯入字串的替代欄標題列。 數據行標頭會決定 所 ConvertFrom-Csv
建立之物件的屬性名稱。
輸入數據行標頭做為逗號分隔清單。 不要使用引號括住標題字串。 以單引弧括住每個數據行標頭。
如果您輸入的數據行標頭比有數據行少,則會捨棄其餘的數據行。 如果您輸入的數據行標頭數目超過數據行,則會使用空的數據行來建立其他數據行標頭。
使用 Header 參數時,請省略 CSV 字串中的數據行標頭字串。 否則,此 Cmdlet 會從標頭數據列中的專案建立額外的物件。
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
指定要轉換為物件的 CSV 字串。 輸入包含 CSV 字串的變數,或輸入可取得 CSV 字串的命令或運算式。 您也可以使用管線將 CSV 字串傳送至 ConvertFrom-Csv
。
Type: | PSObject[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-UseCulture
使用目前文化特性的清單分隔符做為專案分隔符。 若要尋找文化特性的清單分隔符,請使用下列命令: (Get-Culture).TextInfo.ListSeparator
。
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
輸入
您可以使用管線將 CSV 字串傳送至此 Cmdlet。
輸出
此 Cmdlet 會傳回 CSV 字串中屬性所描述的物件。
備註
因為匯入的對像是物件類型的 CSV 版本,所以無法辨識這些對象,並且由格式化物件類型非 CSV 版本的 PowerShell 類型格式化專案格式化。
在 CSV 格式中,每個物件都會利用以逗號分隔的物件屬性值清單來表示。 屬性值會使用物件) 的 ToString () 方法來轉換成字串 (,因此它們會以屬性值的名稱表示。 此 Cmdlet 不會匯出 物件的方法。