将 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 参数,该参数使用当前区域性的列表分隔符作为分隔符。
另请参阅