Export-Csv

将对象转换为一系列逗号分隔值, (CSV) 字符串,并将字符串保存到文件中。

语法

Export-Csv
      -InputObject <PSObject>
      [[-Path] <String>]
      [-LiteralPath <String>]
      [-Force]
      [-NoClobber]
      [-Encoding <Encoding>]
      [-Append]
      [[-Delimiter] <Char>]
      [-IncludeTypeInformation]
      [-NoTypeInformation]
      [-QuoteFields <String[]>]
      [-UseQuotes <QuoteKind>]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Export-Csv
      -InputObject <PSObject>
      [[-Path] <String>]
      [-LiteralPath <String>]
      [-Force]
      [-NoClobber]
      [-Encoding <Encoding>]
      [-Append]
      [-UseCulture]
      [-IncludeTypeInformation]
      [-NoTypeInformation]
      [-QuoteFields <String[]>]
      [-UseQuotes <QuoteKind>]
      [-WhatIf]
      [-Confirm] 
      [<CommonParameters>]

说明

Export-CSV cmdlet 将创建你提交的对象的 CSV 文件。 每个对象都是一行,其中包含对象的属性值的逗号分隔列表。 可以使用 Export-CSV cmdlet 创建电子表格,并与接受 CSV 文件作为输入的程序共享数据。

在将对象发送到 cmdlet 之前, Export-CSV 请勿设置其格式。 如果 Export-CSV 接收格式化对象,则 CSV 文件包含格式属性,而不是对象属性。 若要仅导出对象的选定属性,请使用 Select-Object cmdlet。

示例

示例 1:将进程属性导出到 CSV 文件

此示例选择具有特定属性 的 Process 对象,将对象导出到 CSV 文件。

Get-Process -Name WmiPrvSE | Select-Object -Property BasePriority,Id,SessionId,WorkingSet |
  Export-Csv -Path .\WmiData.csv -NoTypeInformation
Import-Csv -Path .\WmiData.csv

BasePriority Id    SessionId WorkingSet
------------ --    --------- ----------
8            976   0         20267008
8            2292  0         36786176
8            3816  0         30351360
8            8604  0         15011840
8            10008 0         8830976
8            11764 0         14237696
8            54632 0         9502720

cmdlet Get-Process 获取 Process 对象。 Name 参数筛选输出以仅包含 WmiPrvSE 进程对象。 进程对象在管道中向下发送到 Select-Object cmdlet。 Select-Object 使用 Property 参数选择进程对象属性的子集。 进程对象在管道中向下发送到 Export-Csv cmdlet。 Export-Csv 将进程对象转换为一系列 CSV 字符串。 Path 参数指定将 WmiData.csv 文件保存在当前目录中。 NoTypeInformation 参数从 CSV 输出中删除 #TYPE 信息标头,在 PowerShell 6 中不是必需的。 cmdlet Import-Csv 使用 Path 参数显示位于当前目录中的文件。

示例 2:将进程导出到逗号分隔的文件

此示例获取 Process 对象并将对象导出到 CSV 文件。

Get-Process | Export-Csv -Path .\Processes.csv -NoTypeInformation
Get-Content -Path .\Processes.csv

"Name","SI","Handles","VM","WS","PM","NPM","Path","Parent","Company","CPU","FileVersion", ...
"ApplicationFrameHost","4","511","2203597099008","35364864","21979136","30048", ...

cmdlet Get-Process 获取 Process 对象。 进程对象在管道中向下发送到 Export-Csv cmdlet。 Export-Csv 将进程对象转换为一系列 CSV 字符串。 Path 参数指定将 Processes.csv 文件保存在当前目录中。 NoTypeInformation 参数从 CSV 输出中删除 #TYPE 信息标头,在 PowerShell 6 中不是必需的。 cmdlet Get-Content 使用 Path 参数显示位于当前目录中的文件。

示例 3:将进程导出到以分号分隔的文件

此示例获取 Process 对象,并将对象导出到具有分号分隔符的 文件中。

Get-Process | Export-Csv -Path .\Processes.csv -Delimiter ';' -NoTypeInformation
Get-Content -Path .\Processes.csv

"Name";"SI";"Handles";"VM";"WS";"PM";"NPM";"Path";"Parent";"Company";"CPU";"FileVersion"; ...
"ApplicationFrameHost";"4";"509";"2203595321344";"34807808";"21770240";"29504"; ...

cmdlet Get-Process 获取 Process 对象。 进程对象在管道中向下发送到 Export-Csv cmdlet。 Export-Csv 将进程对象转换为一系列 CSV 字符串。 Path 参数指定将 Processes.csv 文件保存在当前目录中。 Delimiter 参数指定用于分隔字符串值的分号。 NoTypeInformation 参数从 CSV 输出中删除 #TYPE 信息标头,在 PowerShell 6 中不是必需的。 cmdlet Get-Content 使用 Path 参数显示位于当前目录中的文件。

示例 4:使用当前区域性的列表分隔符导出进程

此示例获取 Process 对象并将对象导出到文件。 分隔符是当前区域性的列表分隔符。

(Get-Culture).TextInfo.ListSeparator
Get-Process | Export-Csv -Path .\Processes.csv -UseCulture -NoTypeInformation
Get-Content -Path .\Processes.csv

"Name","SI","Handles","VM","WS","PM","NPM","Path","Parent","Company","CPU","FileVersion", ...
"ApplicationFrameHost","4","511","2203597099008","35364864","21979136","30048", ...

Get-Culture cmdlet 使用嵌套属性 TextInfoListSeparator ,并显示当前区域性的默认列表分隔符。 cmdlet Get-Process 获取 Process 对象。 进程对象在管道中向下发送到 Export-Csv cmdlet。 Export-Csv 将进程对象转换为一系列 CSV 字符串。 Path 参数指定将 Processes.csv 文件保存在当前目录中。 UseCulture 参数使用当前区域性的默认列表分隔符作为分隔符。 NoTypeInformation 参数从 CSV 输出中删除 #TYPE 信息标头,在 PowerShell 6 中不是必需的。 cmdlet Get-Content 使用 Path 参数显示位于当前目录中的文件。

示例 5:使用类型信息导出进程

此示例说明如何在 CSV 文件中包括 #TYPE 标头信息。 #TYPE 标头是 PowerShell 6.0 之前的版本中的默认标头。

Get-Process | Export-Csv -Path .\Processes.csv -IncludeTypeInformation
Get-Content -Path .\Processes.csv

#TYPE System.Diagnostics.Process
"Name","SI","Handles","VM","WS","PM","NPM","Path","Company","CPU","FileVersion", ...
"ApplicationFrameHost","4","507","2203595001856","35139584","20934656","29504", ...

cmdlet Get-Process 获取 Process 对象。 进程对象在管道中向下发送到 Export-Csv cmdlet。 Export-Csv 将进程对象转换为一系列 CSV 字符串。 Path 参数指定将 Processes.csv 文件保存在当前目录中。 IncludeTypeInformation 在 CSV 输出中包含 #TYPE 信息标头。 cmdlet Get-Content 使用 Path 参数显示位于当前目录中的文件。

示例 6:将对象导出并追加到 CSV 文件

此示例介绍如何将对象导出到 CSV 文件,并使用 Append 参数将对象添加到现有文件。

$AppService = (Get-Service -DisplayName *Application* | Select-Object -Property DisplayName, Status)
$AppService | Export-Csv -Path .\Services.Csv -NoTypeInformation
Get-Content -Path .\Services.Csv
$WinService = (Get-Service -DisplayName *Windows* | Select-Object -Property DisplayName, Status)
$WinService | Export-Csv -Path .\Services.csv -NoTypeInformation -Append
Get-Content -Path .\Services.Csv

"DisplayName","Status"
"Application Layer Gateway Service","Stopped"
"Application Identity","Running"
"Windows Audio Endpoint Builder","Running"
"Windows Audio","Running"
"Windows Event Log","Running"

cmdlet Get-Service 获取服务对象。 DisplayName 参数返回包含单词 Application 的服务。 服务对象在管道中向下发送到 Select-Object cmdlet。 Select-Object 使用 Property 参数指定 DisplayNameStatus 属性。 变量 $AppService 存储对象。

对象 $AppService 在管道中向下发送到 Export-Csv cmdlet。 Export-Csv 将服务对象转换为一系列 CSV 字符串。 Path 参数指定将 Services.csv 文件保存在当前目录中。 NoTypeInformation 参数从 CSV 输出中删除 #TYPE 信息标头,在 PowerShell 6 中不是必需的。 cmdlet Get-Content 使用 Path 参数显示位于当前目录中的文件。

Get-Service对于包含“Windows”一词的服务,将重复和 Select-Object cmdlet。 变量 $WinService 存储服务对象。 cmdlet Export-Csv 使用 Append 参数指定将 $WinService 对象添加到现有的 Services.csv 文件。 重复 Get-Content 该 cmdlet 以显示包含追加数据的更新文件。

示例 7:在管道中设置 cmdlet 格式会创建意外结果

此示例演示了为什么不要在管道中使用格式 cmdlet 很重要。 收到意外输出时,排查管道语法问题。

Get-Date | Select-Object -Property DateTime, Day, DayOfWeek, DayOfYear |
 Export-Csv -Path .\DateTime.csv -NoTypeInformation
Get-Content -Path .\DateTime.csv

"DateTime","Day","DayOfWeek","DayOfYear"
"Wednesday, January 2, 2019 14:59:34","2","Wednesday","2"

Get-Date | Format-Table -Property DateTime, Day, DayOfWeek, DayOfYear |
 Export-Csv -Path .\FTDateTime.csv -NoTypeInformation
Get-Content -Path .\FTDateTime.csv

"ClassId2e4f51ef21dd47e99d3c952918aff9cd","pageHeaderEntry","pageFooterEntry","autosizeInfo", ...
"033ecb2bc07a4d43b5ef94ed5a35d280",,,,"Microsoft.PowerShell.Commands.Internal.Format. ...
"9e210fe47d09416682b841769c78b8a3",,,,,
"27c87ef9bbda4f709f6b4002fa4af63c",,,,,
"4ec4f0187cb04f4cb6973460dfe252df",,,,,
"cf522b78d86c486691226b40aa69e95c",,,,,

cmdlet Get-Date 获取 DateTime 对象。 对象在管道中向下发送到 Select-Object cmdlet。 Select-Object 使用 Property 参数选择对象属性的子集。 对象在管道中向下发送到 Export-Csv cmdlet。 Export-Csv 将 对象转换为 CSV 格式。 Path 参数指定将 DateTime.csv 文件保存在当前目录中。 NoTypeInformation 参数从 CSV 输出中删除 #TYPE 信息标头,在 PowerShell 6 中不是必需的。 cmdlet Get-Content 使用 Path 参数显示位于当前目录中的 CSV 文件。

在管道中使用 Format-Table cmdlet 选择属性时,会收到意外结果。 Format-Table 将管道中的表格式对象发送到 Export-Csv cmdlet,而不是 DateTime 对象。 Export-Csv 将表格式对象转换为一系列 CSV 字符串。 cmdlet Get-Content 显示包含表格式对象的 CSV 文件。

示例 8:使用 Force 参数覆盖只读文件

此示例创建一个空的只读文件,并使用 Force 参数更新该文件。

New-Item -Path .\ReadOnly.csv -ItemType File
Set-ItemProperty -Path .\ReadOnly.csv -Name IsReadOnly -Value $true
Get-Process | Export-Csv -Path .\ReadOnly.csv -NoTypeInformation

Export-Csv : Access to the path 'C:\ReadOnly.csv' is denied.
At line:1 char:15
+ Get-Process | Export-Csv -Path .\ReadOnly.csv -NoTypeInformation
+               ~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : OpenError: (:) [Export-Csv], UnauthorizedAccessException
+ FullyQualifiedErrorId : FileOpenFailure,Microsoft.PowerShell.Commands.ExportCsvCommand

Get-Process | Export-Csv -Path .\ReadOnly.csv -NoTypeInformation -Force
Get-Content -Path .\ReadOnly.csv

"Name";"SI";"Handles";"VM";"WS";"PM";"NPM";"Path";"Parent";"Company";"CPU";"FileVersion"; ...
"ApplicationFrameHost";"4";"509";"2203595321344";"34807808";"21770240";"29504"; ...

cmdlet New-Item 使用 PathItemType 参数在当前目录中创建 ReadOnly.csv 文件。 cmdlet Set-ItemProperty 使用 NameValue 参数将文件的 IsReadOnly 属性更改为 true。 cmdlet Get-Process 获取 Process 对象。 进程对象在管道中向下发送到 Export-Csv cmdlet。 Export-Csv 将进程对象转换为一系列 CSV 字符串。 Path 参数指定将 ReadOnly.csv 文件保存在当前目录中。 NoTypeInformation 参数从 CSV 输出中删除 #TYPE 信息标头,在 PowerShell 6 中不是必需的。 输出显示未写入文件,因为访问被拒绝。

将 Force 参数添加到 cmdlet,Export-Csv以强制导出写入文件。 cmdlet Get-Content 使用 Path 参数显示位于当前目录中的文件。

示例 9:将 Force 参数与 Append 配合使用

此示例演示如何使用 ForceAppend 参数。 将这些参数组合在一起时,可以将不匹配的对象属性写入 CSV 文件。

$Content = [PSCustomObject]@{Name = 'PowerShell'; Version = '7.0'}
$Content | Export-Csv -Path .\ParmFile.csv -NoTypeInformation
$AdditionalContent = [PSCustomObject]@{Name = 'Windows PowerShell'; Edition = 'Desktop'}
$AdditionalContent | Export-Csv -Path .\ParmFile.csv -NoTypeInformation -Append

Export-Csv : Cannot append CSV content to the following file: ParmFile.csv.
The appended object does not have a property that corresponds to the following column:
Version. To continue with mismatched properties, add the -Force parameter, and then retry
 the command.
At line:1 char:22
+ $AdditionalContent | Export-Csv -Path .\ParmFile.csv -NoTypeInformation -Append
+                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidData: (Version:String) [Export-Csv], InvalidOperationException
+ FullyQualifiedErrorId : CannotAppendCsvWithMismatchedPropertyNames,Microsoft.PowerShell. ...

$AdditionalContent | Export-Csv -Path .\ParmFile.csv -NoTypeInformation -Append -Force
Import-Csv -Path .\ParmFile.csv

Name               Version
----               -------
PowerShell         7.0
Windows PowerShell

表达式使用 NameVersion 属性创建 PSCustomObject。 值存储在 变量中 $Content 。 变量 $Content 在管道中向下发送到 Export-Csv cmdlet。 Export-Csv 使用 Path 参数并将 ParmFile.csv 文件保存在当前目录中。 NoTypeInformation 参数从 CSV 输出中删除 #TYPE 信息标头,在 PowerShell 6 中不是必需的。

另一个表达式使用 NameEdition 属性创建 PSCustomObject。 值存储在 变量中 $AdditionalContent 。 变量 $AdditionalContent 在管道中向下发送到 Export-Csv cmdlet。 Append 参数用于将数据添加到文件。 追加失败,因为 版本版本之间存在属性名称不匹配。

Export-Csv cmdlet Force 参数用于强制导出写入文件。 将放弃 Edition 属性。 cmdlet Import-Csv 使用 Path 参数显示位于当前目录中的文件。

示例 10:导出到 CSV,两列左右有引号

此示例将 DateTime 对象转换为 CSV 字符串。

Get-Date | Export-Csv  -QuoteFields "DateTime","Date" -Path .\FTDateTime.csv
Get-Content -Path .\FTDateTime.csv

DisplayHint,"DateTime","Date",Day,DayOfWeek,DayOfYear,Hour,Kind,Millisecond,Minute,Month,Second,Ticks,TimeOfDay,Year
DateTime,"Thursday, August 22, 2019 11:27:34 AM","8/22/2019 12:00:00 AM",22,Thursday,234,11,Local,569,27,8,34,637020700545699784,11:27:34.5699784,2019

示例 11:仅在需要时使用引号导出到 CSV

此示例将 DateTime 对象转换为 CSV 字符串。

Get-Date | Export-Csv  -UseQuotes AsNeeded -Path .\FTDateTime.csv
Get-Content -Path .\FTDateTime.csv

DisplayHint,DateTime,Date,Day,DayOfWeek,DayOfYear,Hour,Kind,Millisecond,Minute,Month,Second,Ticks,TimeOfDay,Year
DateTime,"Thursday, August 22, 2019 11:31:00 AM",8/22/2019 12:00:00 AM,22,Thursday,234,11,Local,713,31,8,0,637020702607132640,11:31:00.7132640,2019

参数

-Append

使用此参数, Export-CSV 以便将 CSV 输出添加到指定文件的末尾。 如果没有此参数, Export-CSV 则替换文件内容而不发出警告。

已在 Windows PowerShell 3.0 中引入了此参数。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Confirm

提示你在运行 cmdlet 之前进行确认。

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Delimiter

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

Type:Char
Position:1
Default value:comma (,)
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Encoding

为导出的 CSV 文件指定编码。 默认值为 utf8NoBOM

此参数的可接受值如下所示:

  • ascii:使用 ASCII (7 位) 字符集的编码。
  • bigendianunicode:使用 big-endian 字节顺序以 UTF-16 格式进行编码。
  • bigendianutf32:使用 big-endian 字节顺序以 UTF-32 格式进行编码。
  • oem:使用 MS-DOS 和控制台程序的默认编码。
  • unicode:使用 little-endian 字节顺序以 UTF-16 格式进行编码。
  • utf7:以 UTF-7 格式进行编码。
  • utf8:以 UTF-8 格式进行编码。
  • utf8BOM:使用字节顺序标记 (BOM) 以 UTF-8 格式进行编码
  • utf8NoBOM:以 UTF-8 格式编码,不带字节顺序标记 (BOM)
  • utf32:以 UTF-32 格式进行编码。

从 PowerShell 6.2 开始, Encoding 参数还允许使用已注册代码页的数字 ID (如 -Encoding 1251) 或已注册代码页的字符串名称 () -Encoding "windows-1251" 。 有关详细信息,请参阅 Encoding.CodePage 的 .NET 文档。

注意

不再建议使用 UTF-7*。 从 PowerShell 7.1 起,如果为 Encoding 参数指定utf7,则会写入警告。

Type:Encoding
Accepted values:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Position:Named
Default value:UTF8NoBOM
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Force

此参数允许 Export-Csv 使用 只读 属性覆盖文件。

ForceAppend 参数组合在一起时,可以将包含不匹配属性的对象写入 CSV 文件。 仅将匹配的属性写入文件。 将丢弃不匹配的属性。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-IncludeTypeInformation

使用此参数时,CSV 输出的第一行包含 #TYPE 后跟对象类型的完全限定名称。 例如, #TYPE System.Diagnostics.Process

此参数是在 PowerShell 6.0 中引入的。

Type:SwitchParameter
Aliases:ITI
Position:Named
Default value:#TYPE <Object>
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

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

Type:PSObject
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-LiteralPath

指定指向 CSV 输出文件的路径。 与 Path 不同,LiteralPath 参数的值严格按照所键入的形式使用。 不会将任何字符解释为通配符。 如果路径包含转义字符,请使用单引号。 单引号告知 PowerShell 不要将任何字符解释为转义序列。

Type:String
Aliases:PSPath, LP
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-NoClobber

使用此参数, Export-CSV 这样就不会覆盖现有文件。 默认情况下,如果文件存在于指定路径中, Export-CSV 则覆盖文件而不发出警告。

Type:SwitchParameter
Aliases:NoOverwrite
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-NoTypeInformation

从输出中删除 #TYPE 信息标头。 此参数成为 PowerShell 6.0 中的默认值,并包含在其中以实现向后兼容性。

Type:SwitchParameter
Aliases:NTI
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Path

一个必需的参数,指定保存 CSV 输出文件的位置。

Type:String
Position:0
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-QuoteFields

指定应用引号括起的列的名称。 使用此参数时,仅引用指定的列。 此参数已在 PowerShell 7.0 中添加。

Type:String[]
Aliases:QF
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-UseCulture

使用当前区域性的列表分隔符作为项分隔符。 若要查找区域性的列表分隔符,请使用以下命令: (Get-Culture).TextInfo.ListSeparator

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-UseQuotes

指定何时在 CSV 文件中使用引号。 可能的值为:

  • 从不 - 不引用任何内容
  • 始终 - 引用所有 (默认行为)
  • AsNeeded - 仅引用包含分隔符字符的字段

此参数已在 PowerShell 7.0 中添加。

Type:Microsoft.PowerShell.Commands.BaseCsvWritingCommand+QuoteKind
Aliases:UQ
Position:Named
Default value:Always
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

防止 cmdlet 被处理或更改。 输出显示运行 cmdlet 时会发生什么情况。

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

输入

PSObject

可以将具有扩展类型系统 (ETS) 适配器的任何对象通过管道传递到 Export-CSV

输出

String

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

备注

Export-CSV cmdlet 将提交的对象转换为一系列 CSV 字符串,并将其保存在指定的文本文件中。 可以使用 Export-CSV -IncludeTypeInformation 将对象保存在 CSV 文件中,然后使用 Import-Csv cmdlet 根据 CSV 文件中的文本创建对象。

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

CSV 字符串输出如下:

  • 如果使用 IncludeTypeInformation ,则第一个字符串包含 #TYPE 信息标头,后跟对象类型的完全限定名称。 例如, #TYPE System.Diagnostics.Process
  • 如果未使用 IncludeTypeInformation ,则第一个字符串包括列标题。 标头以逗号分隔的列表的形式包含第一个对象的属性名称。
  • 其余字符串包含每个对象的属性值的逗号分隔列表。

从 PowerShell 6.0 开始,的默认行为 Export-CSV 是不在 CSV 中包含 #TYPE 信息,并且隐含 NoTypeInformationIncludeTypeInformation 可用于包含 #TYPE 信息,并模拟 PowerShell 6.0 之前的默认行为 Export-CSV

将多个对象提交到 Export-CSV时, Export-CSV 会根据提交的第一个对象的属性来组织文件。 如果剩余的对象没有指定的属性之一,则该对象的属性值为 null,由两个连续的逗号表示。 如果剩余的对象有其他属性,这些属性值将不包括在文件中。

可以使用 Import-Csv cmdlet 从文件中的 CSV 字符串重新创建对象。 生成的对象是原始对象的 CSV 版本,这些版本由属性值的字符串表示形式组成,且不包括方法。

ConvertTo-CsvConvertFrom-Csv cmdlet 将对象转换为 CSV 字符串以及从 CSV 字符串。 Export-CSV 与 相同 ConvertTo-CSV,只是它在文件中保存 CSV 字符串。