将 Microsoft .NET Framework 对象转换为一系列以逗号分隔的 (CSV)、长度可变的字符串。

语法

ConvertTo-CSV [[-Delimiter] <char>] [-InputObject] <psobject> [-NoTypeInformation] [<CommonParameters>]

ConvertTo-CSV [-UseCulture] [-InputObject] <psobject> [-NoTypeInformation] [<CommonParameters>]

说明

ConvertTo-CSV cmdlet 返回一系列以逗号分隔的、长度可变的 (CSV) 字符串,该字符串表示您所提交的对象。然后可使用 ConvertFrom-CSV cmdlet 基于 CSV 字符串来重新创建对象。所得到的对象是原始对象的 CSV 版本,这些对象由属性值的字符串表示形式组成,且不含方法。

也可使用 Export-CSV 和 Import-CSV cmdlet 将 .NET Framework 对象转换为 CSV 字符串(或将 CSV 字符串转换为 .NET Framework 对象)。Export-CSV 与 ConvertTo-CSV 相同,区别是它将 CSV 字符串保存在文件中。

可使用 ConvertTo-CSV cmdlet 的参数来指定逗号以外的分隔符,或指示 ConvertTo-CSV 使用当前区域性的默认分隔符。

有关详细信息,请参阅 Export-CSV 和“注释”部分。

参数

-Delimiter <char>

指定分隔符以分隔属性值。默认值为逗号 (,)。输入字符,例如冒号 (:)。

若要指定分号 (;),请将它括在引号内。否则,会将它解释为命令分隔符。

是否为必需?

false

位置?

2

默认值

, (comma)

是否接受管道输入?

false

是否接受通配符?

false

-InputObject <psobject>

指定要作为 CSV 字符串导出的对象。请输入包含对象的变量,或者键入可获取对象的命令或表达式。也可将对象通过管道传递至 ConvertTo-CSV。

是否为必需?

true

位置?

1

默认值

是否接受管道输入?

true (ByValue, ByPropertyName)

是否接受通配符?

false

-NoTypeInformation

输出内容省略类型信息标题。默认情况下,输出内容中的字符串包含“#TYPE ”,其后为 .NET Framework 对象类型的完全限定名称。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

-UseCulture

使用当前区域性的列表分隔符作为数据分隔符。默认值为逗号 (,)。

该参数对于向全球用户发布的脚本而言很有用。要查找区域性的列表分隔符,请使用下面的命令:(Get-Culture).TextInfo.ListSeparator。

是否为必需?

false

位置?

named

默认值

Comma

是否接受管道输入?

false

是否接受通配符?

false

<CommonParameters>

此 cmdlet 支持通用参数:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。有关详细信息,请参阅 about_Commonparameters.

输入和输出

输入类型是指可通过管道传递给 cmdlet 的对象的类型。返回类型是指 Cmdlet 所返回对象的类型。

输入

System.Management.Automation.PSObject

可将任何 .NET Framework 对象通过管道传递至 ConvertTo-CSV。

输出

System.String

返回 CSV 输出以作为字符串的集合。

说明

在 CSV 格式中,通过以逗号分隔的对象属性值列表来表示每个对象。将属性值转换为字符串(通过使用对象的 ToString() 方法),这样它们通常就可由属性值的名称来表示。ConvertTo-CSV 无法导出对象的方法。

所得到的 CSV 字符串的格式如下:

-- 第一个字符串包含“#TYPE”,后面为对象的 .NET Framework 类型的完全限定名称,如 #TYPE System.Diagnostics.Process。要取消显示该字符串,请使用 NoTypeInformation 参数。

-- 下一个字符串表示列标题。它包含以逗号分隔的列表,该列表列出了第一个对象的所有属性的名称。

-- 其余的字符串由以逗号分隔的列表组成,该列表列出了每个对象的属性值。

当向 ConvertTo-CSV 提交多个对象时,ConvertTo-CSV 基于所提交的第一个对象的属性来对字符串进行排序。如果其余对象不具有所指定的属性之一,则该对象的属性值为 null,即用两个相连的逗号表示。如果其余对象具有附加属性,则忽略这些属性。

示例 1

C:\PS>get-process powershell | convertto-csv

#TYPE System.Diagnostics.Process
"__NounName","Name","Handles","VM","WS","PM","NPM","Path","Company","CPU","FileVersion","ProductVersion","Description",
"Product","BasePriority","ExitCode","HasExited","ExitTime","Handle","HandleCount","Id","MachineName","MainWindowHandle"
,"MainWindowTitle","MainModule","MaxWorkingSet","MinWorkingSet","Modules","NonpagedSystemMemorySize","NonpagedSystemMem
orySize64","PagedMemorySize","PagedMemorySize64","PagedSystemMemorySize","PagedSystemMemorySize64","PeakPagedMemorySize
","PeakPagedMemorySize64","PeakWorkingSet","PeakWorkingSet64","PeakVirtualMemorySize","PeakVirtualMemorySize64","Priori
tyBoostEnabled","PriorityClass","PrivateMemorySize","PrivateMemorySize64","PrivilegedProcessorTime","ProcessName","Proc
essorAffinity","Responding","SessionId","StartInfo","StartTime","SynchronizingObject","Threads","TotalProcessorTime","U
serProcessorTime","VirtualMemorySize","VirtualMemorySize64","EnableRaisingEvents","StandardInput","StandardOutput","Sta
ndardError","WorkingSet","WorkingSet64","Site","Container"
"Process","powershell","216","597544960","60399616","63197184","21692","C:\WINDOWS\system32\WindowsPowerShell\v1.0\powe
rshell.exe","Microsoft Corporation","3.4788223","6.1.6587.1 (fbl_srv_powershell(nigels).070711-0102)","6.1.6587.1","Win
dows PowerShell","Microsoft® Windows® Operating System","8",,"False",,"860","216","5132",".","5636936","Windows PowerSh
ell 2.0 (04/17/2008 00:10:40)","System.Diagnostics.ProcessModule (powershell.exe)","1413120","204800","System.Diagnosti
cs.ProcessModuleCollection","21692","21692","63197184","63197184","320080","320080","63868928","63868928","60715008","6
0715008","598642688","598642688","True","Normal","63197184","63197184","00:00:00.2028013","powershell","15","True","1",
"System.Diagnostics.ProcessStartInfo","4/21/2008 3:49:19 PM",,"System.Diagnostics.ProcessThreadCollection","00:00:03.51
00225","00:00:03.3072212","597544960","597544960","False",,,,"60399616","60399616",,

说明
-----------
此命令将单个进程对象转换为 CSV 格式。该命令使用 Get-Process cmdlet 来获取本地计算机中的 PowerShell 进程。它使用管道运算符 (|) 将命令发送至 ConvertTo-CSV cmdlet,该 cmdlet 将其转换为一系列以逗号分隔的字符串。






示例 2

C:\PS>$date = get-date

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

说明
-----------
此示例将日期对象转换为 CSV 格式。

第一条命令使用 Get-Date cmdlet 来获取当前日期,并将日期保存在 $date 变量中。

第二条命令使用 ConvertTo-CSV cmdlet 将 $date 变量中的 DateTime 对象转换为 CSV 格式。该命令使用 InputObject 参数来指定要转换的对象。它使用 Delimiter 参数来指定用来分隔对象属性的分隔符。它使用 NoTypeInformation 参数来取消显示 #TYPE 字符串。






示例 3

C:\PS>get-eventlog -log "windows powershell" | convertto-csv -useculture

说明
-----------
此命令将本地计算机中的 Windows PowerShell 事件日志转换为一系列 CSV 字符串。

该命令使用 Get-EventLog cmdlet 来获取 Windows PowerShell 日志中的事件。管道运算符 (|) 将事件发送至 ConvertTo-CSV cmdlet,该 cmdlet 将事件转换为 CSV 格式。该命令使用 UseCulture 参数,该参数使用当前区域性的列表分隔符作为分隔符。






另请参阅




目录