以逗號分隔值 (CSV) 格式將物件屬性轉換成原始物件的 CSV 版本。

語法

ConvertFrom-CSV [[-Delimiter] <char>] [-InputObject] <PSObject[]> [-Header <string[]>] [<CommonParameters>]

ConvertFrom-CSV -UseCulture [-InputObject] <PSObject[]> [-Header <string[]>] [<CommonParameters>]

描述

ConvertFrom-CSV Cmdlet 會從 ConvertTo-CSV Cmdlet 所產生之 CSV 格式的變動長度字串建立物件。

您可以使用 ConvertFrom-CSV Cmdlet 的參數指定欄標頭列 (用來決定產生的物件的屬性名稱)、指定項目分隔符號,或是指示 ConvertFrom-CSV 將目前文化特性的清單分隔符號當成分隔符號。

ConvertFrom-CSV 建立的物件是原始物件的 CSV 版本,而 CSV 物件的屬性值是原始物件的屬性值的字串版本。物件的 CSV 版本沒有任何方法。

您也可以使用 Export-CSV 和 Import-CSV Cmdlet,將物件轉換成檔案中的 CSV 字串 (反之亦然)。除了將 CSV 字串儲存到檔案中以外,這兩個 Cmdlet 與 ConvertTo-CSV 和 ConvertFrom-CSV Cmdlet 都相同。

參數

-Delimiter <char>

指定用來在 CSV 字串中分隔屬性值的分隔符號。預設為逗號 (,)。請輸入字元,例如分號 (:)。若要指定分號 (;),請將其置於引號內。

如果您指定的字元不是 CSV 字串中所使用的分隔字元,ConvertFrom-CSV 會無法從 CSV 字串建立物件,而是會傳回字串。

必要?

false

位置?

2

預設值

','

接受管線輸入?

false

接受萬用字元?

false

-Header <string[]>

為匯入的字串指定其他的欄標頭列。欄標頭決定 ConvertFrom-CSV 所建立之物件的屬性名稱。

請輸入逗號分隔欄標頭的清單,並以引號 (單引號或雙引號) 括住每一個項目,但不要以引號括住標頭字串。如果您輸入比實際欄數量還要少的欄標頭,剩餘的欄會沒有標頭。如果輸入比實際欄數量還要多的欄標頭,則會忽略多餘的欄標頭。

使用 Header 參數時,請省略 CSV 字串的欄標頭,否則 ConvertFrom-CSV 會從標頭列的項目建立多餘的物件。

必要?

false

位置?

named

預設值

接受管線輸入?

false

接受萬用字元?

false

-InputObject <PSObject[]>

指定要轉換成物件的 CSV 字串。請輸入包含 CSV 字串的變數,或輸入可取得 CSV 字串的命令或運算式。您也可經由管道將 CSV 字串輸出至 ConvertFrom-CSV。

必要?

true

位置?

1

預設值

接受管線輸入?

true (ByValue, ByPropertyName)

接受萬用字元?

false

-UseCulture

使用目前文化特性的清單分隔符號做為字串分隔符號。預設為逗號 (,)。

若要尋找文化特性的清單分隔符號,請使用下列命令:(Get-Culture).TextInfo.ListSeparator。如果您指定的字元不是 CSV 字串中所使用的分隔字元,ConvertFrom-CSV 會無法從 CSV 字串建立物件,而是會傳回字串。

必要?

true

位置?

named

預設值

Comma

接受管線輸入?

false

接受萬用字元?

false

<CommonParameters>

這個 Cmdlet 支援一般參數:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。如需詳細資訊,請參閱 about_Commonparameters.

輸入和輸出

輸入型別是可經由管道輸出至 Cmdlet 的物件型別。傳回型別則是 Cmdlet 所傳回的物件型別。

輸入

System.String

您可經由管道將 CSV 字串輸出至 ConvertFrom-CSV。

輸出

System.Management.Automation.PSObject

ConvertFrom-CSV 會傳回 CSV 字串中屬性所描述的物件。

附註

因為匯入的物件是物件型別的 CSV 版本,Windows PowerShell 型別格式化項目 (用來格式化物件型別的非 CSV 版本) 無法識別和格式化這些物件。

使用 CSV 格式,每個物件都會由逗號分隔物件屬性值的清單來代表。屬性值會轉換成字串 (利用物件的 ToString() 方法),所以一般由屬性值的名稱來代表。ConvertTo-Csv 並不會匯出物件的方法。

範例 1

C:\PS>$p = get-process | convertto-csv

C:\PS> $p | convertfrom-csv

描述
-----------
這些命令會將本機電腦上的處理序轉換成 CSV 格式,然後將其還原成物件格式。

第一個命令會使用 Get-Process Cmdlet 取得本機電腦上的處理序。管線運算子 (|) 會將這些處理序傳送給 ConvertTo-CSV Cmdlet,此 Cmdlet 會將處理序物件轉換成 CSV 格式。CSV 字串會儲存在 $p 變數中。

第二個命令會使用管線運算子將 $p 變數中的 CSV 字串傳送給 ConvertFrom-CSV Cmdlet。此 Cmdlet 會將 CSV 字串轉換成原始處理序物件的 CSV 版本。






範例 2

C:\PS>$date = get-date | convertto-csv -delimiter ";"

C:\PS> convertfrom-csv -inputobject $date -delimiter ";"

描述
-----------
這些命令會將資料物件轉換成 CSV 格式,再轉換成 CSV 物件格式。

第一個命令會使用 Get-Date Cmdlet 取得目前的日期和時間。管線物件 (|) 會將日期傳送給 ConvertTo-CSV Cmdlet,讓後者將日期物件轉換成一連串的 CSV 字串。此命令會使用 Delimiter 參數指定分號分隔符號。字串會儲存在 $date 變數中。

第二個命令會使用 ConvertFrom-CSV Cmdlet 將 $date 變數中的 CSV 字串轉換回物件格式。此命令會使用 InputObject 參數指定 CSV 字串,以及使用 Delimiter 參數指定分號分隔字元。






範例 3

C:\PS>$j = start-job -scriptblock { get-process } | convertto-csv

C:\PS> $header = "MoreData","StatusMessage","Location","Command","State","Finished","InstanceId","SessionId","Name","ChildJobs","Output","Error","Progress","Verbose","Debug","Warning","StateChanged"

# Delete header from $j
C:\PS> $j = $j[0], $j[2..($j.count - 1)]

$j | convertfrom-csv -header $header

MoreData      : True
StatusMessage : 
Location      : localhost
Command       : get-process
State         : Running
Finished      : System.Threading.ManualResetEvent
InstanceId    : 6fcb6578-7f42-4d93-9f23-9937f6aac1a2
SessionId     : 1
Name          : Job1
ChildJobs     : System.Collections.Generic.List`1[System.Management.Automation.Job]
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.String]
Debug         : System.Management.Automation.PSDataCollection`1[System.String]
Warning       : System.Management.Automation.PSDataCollection`1[System.String]
StateChanged  :

描述
-----------
這個範例示範如何使用 ConvertFrom-Csv 的 Header 參數變更產生之匯入物件內的屬性名稱。

第一個命令會使用 Start-Job Cmdlet 啟動一個在本機電腦上執行 Get-Process 命令的背景工作。管線運算子 (|) 會將產生的工作物件傳送給 ConvertTo-CSV Cmdlet,此 Cmdlet 會將工作物件轉換成 CSV 格式。指派運算子 (=) 會將產生的 CSV 儲存到 $j 變數。

第二個命令會將標頭儲存到 $header 變數。此標頭與預設標頭不同之處在於它以 "MoreData" 來代替 "HasMoreData",而且以 "State" 來代替 "JobStateInfo"。

第三個字串會從 CSV 字串刪除原始標頭 (第二行),並將它傳回給 $j 變數。

第四個命令會使用 ConvertFrom-CSV Cmdlet 將 CSV 字串轉換成工作物件的 CSV 版本,並使用管線運算子將 $j 中的內容傳送給 ConvertFrom-CSV。依照標頭所指定,產生的物件有 "MoreData" 和 "State" 屬性。






範例 4

C:\PS>(get-culture).textinfo.listseparator

C:\PS> ConvertFrom-Csv -inputobject $services -UseCulture

描述
-----------
這個命令會使用 ConvertFrom-CSV Cmdlet 轉換 ConvertTo-CSV 已轉換過的服務物件的 CSV 字串,並使用 UseCulture 參數指示 ConvertFrom-CSV 使用目前文化特性的分隔符號 (清單分隔符號)。

使用 UseCulture 參數時,請確定目前文化特性的清單分隔符號與 CSV 字串中使用的分隔符號相符,否則 ConvertFrom-CSV 無法從 CSV 字串產生物件。

在這個範例中,先使用 Get-Culture 命令確認清單分隔符號,然後才使用 ConvertFrom-CSV 命令。






請參閱




目錄