ConvertFrom-Csv
将采用逗号分隔值 (CSV) 格式的对象属性转换为原始对象的 CSV 版本。
语法
ConvertFrom-Csv
[-InputObject] <psobject[]>
[[-Delimiter] <char>]
[-Header <string[]>]
[<CommonParameters>]
ConvertFrom-Csv
[-InputObject] <psobject[]>
-UseCulture
[-Header <string[]>]
[<CommonParameters>]
说明
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
将日期对象转换为一系列 CSV 字符串。
Delimiter 参数用于指定分号分隔符。 字符串保存在 变量中 $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]
该 Start-Job
cmdlet 启动运行 Get-Process
的后台作业。 作业对象在管道 ConvertTo-Csv
中向下发送到 并转换为 CSV 字符串。 NoTypeInformation 参数从 CSV 输出中删除类型信息标头,在 PowerShell Core 中是可选的。 变量 $Header
包含替换以下默认值的自定义标头: HasMoreData、 JobStateInfo、 PSBeginTime、 PSEndTime 和 PSJobTypeName。 变量 $J
包含 CSV 字符串,用于删除默认标头。 cmdlet ConvertFrom-Csv
将 CSV 字符串转换为 PSCustomObject ,并使用 Header 参数应用 $Header
变量。
示例 4:转换服务对象的 CSV 字符串
此示例演示如何将 ConvertFrom-Csv
cmdlet 与 UseCulture 参数一起使用。
(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 字符串中的属性值的分隔符。 默认值为逗号 (,)。
输入一个字符,例如冒号 (:)。 若要指定分号 (;) 将其括在单引号中。
如果在文件中指定了实际字符串分隔符以外的字符, ConvertFrom-Csv
则 无法从 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 不导出 对象的方法。