Export-CSV

将 Microsoft .NET Framework 对象转换为一系列以逗号分隔的、长度可变的 (CSV) 字符串,并将这些字符串保存到一个 CSV 文件中。

语法

Export-CSV [[-Delimiter] <char>] [-Path] <string> -InputObject <psobject> [-Encoding <string>] [-Force] [-NoClobber] [-NoTypeInformation] [-Confirm] [-WhatIf] [<CommonParameters>]

Export-CSV [-UseCulture] [-Path] <string> -InputObject <psobject> [-Encoding <string>] [-Force] [-NoClobber] [-NoTypeInformation] [-Confirm] [-WhatIf] [<CommonParameters>]

说明

Export-CSV cmdlet 创建一个长度可变的 CSV 文件,该文件表示所提交的对象。

然后,可使用 Import-CSV cmdlet 基于文件中的 CSV 字符串重新创建对象。所得到的对象是原始对象的 CSV 版本,这些对象由属性值的字符串表示形式组成,且不含方法。

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

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

当向 Export-CSV 提交多个对象时,Export-CSV 基于所提交的第一个对象的属性来组织文件。如果其余对象不具有所指定的属性之一,则该对象的属性值为 null,即用两个相连的逗号表示。如果其余对象具有附加属性,则在文件中不会包括这些属性。

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

参数

-Delimiter <char>

指定分隔符以分隔属性值。默认值为逗号 (,)。输入字符,例如冒号 (:)。若要指定分号 (;),请将它括在引号内。

是否为必需?

false

位置?

2

默认值

,(逗号)

是否接受管道输入?

false

是否接受通配符?

false

-Encoding <string>

为导出的 CSV 文件指定编码。有效值是 Unicode、UTF7、UTF8、ASCII、UTF32、BigEndianUnicode、Default 和 OEM。默认值是 ASCII。

是否为必需?

false

位置?

named

默认值

ASCII

是否接受管道输入?

false

是否接受通配符?

false

-Force

覆盖路径中指定的文件,而不提示您进行确认。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

-InputObject <psobject>

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

是否为必需?

true

位置?

named

默认值

是否接受管道输入?

true (ByValue, ByPropertyName)

是否接受通配符?

false

-NoClobber

不覆盖现有文件(替换内容)。默认情况下,如果指定的路径中存在同名文件,则 Export-CSV 将覆盖该文件,而不会发出警告。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

-NoTypeInformation

忽略 CSV 文件中的类型信息。默认情况下,CSV 文件的第一行包含“#TYPE ”,后面为 .NET Framework 对象类型的完全限定名称。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

-Path <string>

指定 CSV 输出文件的路径。该参数是必需的。

是否为必需?

true

位置?

1

默认值

是否接受管道输入?

false

是否接受通配符?

false

-UseCulture

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

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

是否为必需?

false

位置?

named

默认值

逗号

是否接受管道输入?

false

是否接受通配符?

false

-Confirm

在执行命令之前提示您进行确认。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

-WhatIf

描述如果执行该命令会发生什么情况(无需实际执行该命令)。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

<CommonParameters>

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

输入和输出

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

输入

System.Management.Automation.PSObject

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

输出

System.String

CSV 列表将发送至 Path 参数中指定的文件。

说明

Export-CSV cmdlet 将提交的对象转换为一系列长度可变的 CSV 字符串,并将它们保存在所指定的文本文件中。可使用 Export-CSV 将对象保存到 CSV 文件中,然后使用 Import-CSV cmdlet 基于 CSV 文件中的文本创建对象。

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

导出文件格式如下:

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

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

-- 文件的附加行由逗号分隔的列表组成,该列表列出了每个对象的属性值。

示例 1

C:\PS>get-process wmiprvse | select-object basePriority,ID,SessionID,WorkingSet | export-csv -path data.csv

说明
-----------
此命令将选择 wmiprvse 进程的一些属性并将它们导出到名为 data.csv 的 CSV 格式的文件中。





示例 2

C:\PS>get-process | export-csv processes.csv 

C:\PS> get-process | export-csv processes.csv 

# In processes.csv

#TYPE System.Diagnostics.Process
__NounName,Name,Handles,VM,WS,PM,NPM,Path,Company,CPU,FileVersion,...
Process,powershell,626,201666560,76058624,61943808,11960,C:\WINDOWS...
Process,powershell,257,151920640,38322176,37052416,7836,C:\WINDOWS\...

说明
-----------
该命令将表示计算机中进程的对象导出到当前目录下的 Processes.csv 文件中。由于它没有指定分隔符,因此使用逗号 (,) 来分隔文件中的字段。





示例 3

C:\PS>get-process | export-csv processes.csv -Delimiter ";" 

# In processes.csv

#TYPE System.Diagnostics.Process
__NounName;Name;Handles;VM;WS;PM;NPM;Path;Company;CPU;FileVersion;...
Process;powershell;626;201666560;76058624;61943808;11960;C:\WINDOWS...
Process;powershell;257;151920640;38322176;37052416;7836;C:\WINDOWS\...

说明
-----------
该命令将表示计算机中进程的对象导出到当前目录下的 Processes.csv 文件中。它使用 Delimiter 参数来指定分号 (;)。因此,文件中的字段由分号来分隔。





示例 4

C:\PS>get-process | export-csv processes.csv -UseCulture

说明
-----------
该命令将表示计算机中进程的对象导出到当前目录下的 Processes.csv 文件中。它使用 UseCulture 参数来指示 Export-CSV 使用当前区域性的 ListSeparator 属性所指定的分隔符。





示例 5

C:\PS>get-process | export-csv processes.csv -NoTypeInformation

C:\PS> get-process | export-csv processes.csv -NoTypeInformation

# In processes.csv

__NounName,Name,Handles,VM,WS,PM,NPM,Path,Company,CPU,FileVersion,...
Process,powershell,626,201666560,76058624,61943808,11960,C:\WINDOWS...
Process,powershell,257,151920640,38322176,37052416,7836,C:\WINDOWS\...

说明
-----------
该命令将表示计算机中进程的对象导出到当前目录下的 Processes.csv 文件中。它使用 NoTypeInformation 参数来取消显示文件中的类型信息。





另请参阅

概念

Import-CSV
ConvertTo-CSV
ConvertFrom-CSV