Export-Csv
将对象转换为一系列字符分隔值 (CSV) 字符串,并将字符串保存到文件中。
语法
Export-Csv
-InputObject <PSObject>
[[-Path] <String>]
[-LiteralPath <String>]
[-Force]
[-NoClobber]
[-Encoding <Encoding>]
[-Append]
[[-Delimiter] <Char>]
[-IncludeTypeInformation]
[-NoTypeInformation]
[-QuoteFields <String[]>]
[-UseQuotes <QuoteKind>]
[-NoHeader]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Export-Csv
-InputObject <PSObject>
[[-Path] <String>]
[-LiteralPath <String>]
[-Force]
[-NoClobber]
[-Encoding <Encoding>]
[-Append]
[-UseCulture]
[-IncludeTypeInformation]
[-NoTypeInformation]
[-QuoteFields <String[]>]
[-UseQuotes <QuoteKind>]
[-NoHeader]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
说明
Export-CSV
cmdlet 创建提交的对象的 CSV 文件。 每个对象都是一行,其中包含对象的属性值的字符分隔列表。 可以使用 Export-CSV
cmdlet 创建电子表格,并与接受 CSV 文件作为输入的程序共享数据。
不要在将对象发送到 Export-CSV
cmdlet 之前设置对象格式。 如果 Export-CSV
接收格式化对象,则 CSV 文件包含格式属性而不是对象属性。 若要仅导出对象的选定属性,请使用 Select-Object
cmdlet。
示例
示例 1:将进程属性导出到 CSV 文件
此示例选择具有特定属性进程对象,将对象导出到 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
Get-Process
cmdlet 获取进程对象。 Name 参数筛选输出,以仅包含 WmiPrvSE 进程对象。 进程对象沿管道向下发送到 Select-Object
cmdlet。 Select-Object
使用 Property 参数来选择进程对象属性的子集。 进程对象沿管道向下发送到 Export-Csv
cmdlet。 Export-Csv
将进程对象转换为一系列 CSV 字符串。 Path 参数指定 WmiData.csv
文件保存在当前目录中。 NoTypeInformation 参数从 CSV 输出中删除 #TYPE 信息标头,并且不需要在 PowerShell 6 中。 Import-Csv
cmdlet 使用 Path 参数显示位于当前目录中的文件。
示例 2:将进程导出到逗号分隔的文件
此示例获取进程对象并将对象导出到 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", ...
Get-Process
cmdlet 获取进程对象。 进程对象沿管道向下发送到 Export-Csv
cmdlet。 Export-Csv
将进程对象转换为一系列 CSV 字符串。 Path 参数指定 Processes.csv
文件保存在当前目录中。 NoTypeInformation 参数从 CSV 输出中删除 #TYPE 信息标头,并且不需要在 PowerShell 6 中。 Get-Content
cmdlet 使用 Path 参数显示位于当前目录中的文件。
示例 3:将进程导出到分号分隔的文件
此示例获取进程对象,并使用分号分隔符将对象导出到文件中。
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"; ...
Get-Process
cmdlet 获取进程对象。 进程对象沿管道向下发送到 Export-Csv
cmdlet。 Export-Csv
将进程对象转换为一系列 CSV 字符串。 Path 参数指定 Processes.csv
文件保存在当前目录中。 Delimiter 参数指定分隔字符串值的分号。 NoTypeInformation 参数从 CSV 输出中删除 #TYPE 信息标头,并且不需要在 PowerShell 6 中。 Get-Content
cmdlet 使用 Path 参数显示位于当前目录中的文件。
示例 4:使用当前区域性的列表分隔符导出进程
此示例获取进程对象并将对象导出到文件。 分隔符是当前区域性的列表分隔符。
(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 使用 TextInfo 嵌套属性和 ListSeparator,并显示当前区域性的默认列表分隔符。 Get-Process
cmdlet 获取进程对象。 进程对象沿管道向下发送到 Export-Csv
cmdlet。 Export-Csv
将进程对象转换为一系列 CSV 字符串。 Path 参数指定 Processes.csv
文件保存在当前目录中。 UseCulture 参数使用当前区域性的默认列表分隔符作为分隔符。 NoTypeInformation 参数从 CSV 输出中删除 #TYPE 信息标头,并且不需要在 PowerShell 6 中。 Get-Content
cmdlet 使用 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", ...
Get-Process
cmdlet 获取进程对象。 进程对象沿管道向下发送到 Export-Csv
cmdlet。 Export-Csv
将进程对象转换为一系列 CSV 字符串。 Path 参数指定 Processes.csv
文件保存在当前目录中。 IncludeTypeInformation 在 CSV 输出中包含 #TYPE 信息标头。 Get-Content
cmdlet 使用 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"
Get-Service
cmdlet 获取服务对象。 DisplayName 参数返回包含“Application”这个词的服务。 服务对象沿管道向下发送到 Select-Object
cmdlet。 Select-Object
使用 Property 参数来指定 DisplayName 和 Status 属性。 $AppService
变量存储对象。
$AppService
对象沿管道向下发送到 Export-Csv
cmdlet。 Export-Csv
将服务对象转换为一系列 CSV 字符串。 Path 参数指定 Services.csv
文件保存在当前目录中。 NoTypeInformation 参数从 CSV 输出中删除 #TYPE 信息标头,并且不需要在 PowerShell 6 中。 Get-Content
cmdlet 使用 Path 参数显示位于当前目录中的文件。
对于包含“Windows”这个词的服务,将重复 Get-Service
和 Select-Object
cmdlet。 $WinService
变量存储服务对象。 Export-Csv
cmdlet 使用 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",,,,,
Get-Date
cmdlet 获取 DateTime 对象。 该对象沿管道向下发送到 Select-Object
cmdlet。 Select-Object
使用 Property 参数来选择对象属性的子集。 该对象沿管道向下发送到 Export-Csv
cmdlet。 Export-Csv
将对象转换为 CSV 格式。 Path 参数指定 DateTime.csv
文件保存在当前目录中。 NoTypeInformation 参数从 CSV 输出中删除 #TYPE 信息标头,并且不需要在 PowerShell 6 中。 Get-Content
cmdlet 使用 Path 参数显示位于当前目录中的 CSV 文件。
当管道中使用 Format-Table
cmdlet 以选择收到意外结果的属性时。 Format-Table
将表格式对象沿管道向下发送到 Export-Csv
cmdlet,而不是 DateTime 对象。 Export-Csv
将表格式对象转换为一系列 CSV 字符串。 Get-Content
cmdlet 显示包含表格式对象的 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"; ...
New-Item
cmdlet 使用 Path 和 ItemType 参数在当前目录中创建 ReadOnly.csv
文件。 Set-ItemProperty
cmdlet 使用 Name 和 Value 参数将文件的 isReadOnly 属性更改为 true。 Get-Process
cmdlet 获取进程对象。 进程对象沿管道向下发送到 Export-Csv
cmdlet。
Export-Csv
将进程对象转换为一系列 CSV 字符串。 Path 参数指定 ReadOnly.csv
文件保存在当前目录中。 NoTypeInformation 参数从 CSV 输出中删除 #TYPE 信息标头,并且不需要在 PowerShell 6 中。 输出显示文件未写入,因为访问被拒绝。
Force 参数将添加到 Export-Csv
cmdlet,以强制导出写入文件。 Get-Content
cmdlet 使用 Path 参数显示位于当前目录中的文件。
示例 9:将 Force 参数与 Append 配合使用
此示例演示如何使用 Force 和 Append 参数。 将这些参数组合在一起时,可以将不匹配的对象属性写入 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
表达式使用 Name 和 Version 属性创建 PSCustomObject。 这些值存储在 $Content
变量中。 $Content
变量沿管道向下发送到 Export-Csv
cmdlet。 Export-Csv
使用 Path 参数,并将 ParmFile.csv
文件保存到当前目录中。 NoTypeInformation 参数从 CSV 输出中删除 #TYPE 信息标头,并且不需要在 PowerShell 6 中。
另一个表达式使用 Name 和 Edition 属性创建 PSCustomObject。 这些值存储在 $AdditionalContent
变量中。 $AdditionalContent
变量沿管道向下发送到 Export-Csv
cmdlet。 Append 参数用于将数据添加到文件。 由于 Version 与 Edition 之间存在属性名称不匹配,因此追加失败。
Export-Csv
cmdlet Force 参数用于强制导出写入文件。 Edition 属性将被丢弃。 Import-Csv
cmdlet 使用 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
示例 12:将哈希表转换为 CSV
在 PowerShell 7.2 及更高版本中,将哈希表导出到 CSV 时,第一个哈希表的键将序列化并用作 csv 文件输出中的标头。
$person1 = @{
Name = 'John Smith'
Number = 1
}
$person2 = @{
Name = 'Jane Smith'
Number = 1
}
$allPeople = $person1, $person2
$allPeople | Export-Csv -Path .\People.csv
Get-Content -Path .\People.csv
"Name","Number"
"John Smith","1"
"Jane Smith","2"
示例 13:使用其他属性将哈希表转换为 CSV
在 PowerShell 7.2 及更高版本中,导出具有添加 Add-Member
或 Select-Object
附加属性的哈希表也会添加为 CSV 文件中的标头。
$allPeople | Add-Member -Name ExtraProp -Value 42 -MemberType NoteProperty
$allPeople | Export-Csv -Path .\People.csv
Get-Content -Path .\People.csv
"Name","Number","ExtraProp"
"John Smith","1","42"
"Jane Smith","2","42"
每个哈希表都有一个名为 ExtraProp
的属性,该属性由 Add-Member
添加,然后导出到 CSV。 可以看到 ExtraProp
现在是 CSV 文件输出中的标头。
如果添加的属性具有与哈希表中的键相同的名称,则密钥优先,并且仅将密钥导出到 CSV。
参数
-Append
使用此参数,以便 Export-CSV
将 CSV 输出添加到指定文件的末尾。 如果没有此参数,Export-CSV
将替换文件内容而不发出警告。
已在 Windows PowerShell 3.0 中引入了此参数。
类型: | SwitchParameter |
Position: | Named |
默认值: | False |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Confirm
提示你在运行 cmdlet 之前进行确认。
类型: | SwitchParameter |
别名: | cf |
Position: | Named |
默认值: | False |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Delimiter
指定分隔符以分隔属性值。 默认值为逗号 (,
)。 输入字符,如冒号 (:
)。 若要指定分号 (;
),请将它括在引号中。
类型: | Char |
Position: | 1 |
默认值: | comma (,) |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Encoding
为导出的 CSV 文件指定编码。 默认值为 utf8NoBOM
。
此参数的可接受值如下所示:
ascii
:对 ASCII(7 位)字符集使用编码。ansi
:对当前区域性的 ANSI 代码页使用编码。 已添加此选项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
:不使用字节顺序标记 (BOM) 以 UTF-8 格式进行编码utf32
:采用 UTF-32 格式编码。
从 PowerShell 6.2 开始,Encoding 参数还允许注册代码页的数字 ID(如 -Encoding 1251
)或已注册代码页的字符串名称(如 -Encoding "windows-1251"
)。 有关详细信息,请参阅 Encoding.CodePage .NET 文档。
从 PowerShell 7.4 开始,可以使用 Encoding 参数的 Ansi
值来传递当前区域性 ANSI 代码页的数字 ID,而无需手动指定它。
注意
UTF-7* 不再推荐使用。 从 PowerShell 7.1 起,如果为 Encoding 参数指定 utf7
,则会编写警告。
类型: | Encoding |
接受的值: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Position: | Named |
默认值: | UTF8NoBOM |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Force
此参数允许 Export-Csv
使用只读属性覆盖文件。
当 Force 和 Append 参数组合在一起时,包含不匹配属性的对象可以写入 CSV 文件。 仅将匹配的属性写入文件。 将丢弃不匹配的属性。
类型: | SwitchParameter |
Position: | Named |
默认值: | False |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-IncludeTypeInformation
使用此参数时,CSV 输出的第一行包含 #TYPE
后跟对象类型的完全限定名称。 例如 #TYPE System.Diagnostics.Process
。
此参数是在 PowerShell 6.0 中引入的。
类型: | SwitchParameter |
别名: | ITI |
Position: | Named |
默认值: | False |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-InputObject
指定要导出为 CSV 字符串的对象。 输入一个包含对象的变量,或键入可获取对象的命令或表达式。 还可以通过管道将对象传递给 Export-CSV
。
类型: | PSObject |
Position: | Named |
默认值: | None |
必需: | True |
接受管道输入: | True |
接受通配符: | False |
-LiteralPath
指定指向 CSV 输出文件的路径。 与 Path 不同,LiteralPath 参数的值严格按照所键入的形式使用。 不会将任何字符解释为通配符。 如果路径包含转义字符,请使用单引号。 单引号告知 PowerShell 不要将任何字符解释为转义序列。
类型: | String |
别名: | PSPath, LP |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-NoClobber
使用此参数,使 Export-CSV
不会覆盖现有文件。 默认情况下,如果文件存在于指定的路径中,则 Export-CSV
覆盖文件而不发出警告。
类型: | SwitchParameter |
别名: | NoOverwrite |
Position: | Named |
默认值: | False |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-NoHeader
使用此参数时,cmdlet 不会将包含列名的标头行写入输出。
此参数已在 PowerShell 7.4 中添加。
类型: | SwitchParameter |
Position: | Named |
默认值: | False |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-NoTypeInformation
从输出中删除 #TYPE
信息标头。 此参数在 PowerShell 6.0 中成为默认值,并包含在后向兼容性中。
类型: | SwitchParameter |
别名: | NTI |
Position: | Named |
默认值: | False |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Path
指定保存 CSV 输出文件的位置的必需参数。
类型: | String |
Position: | 0 |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-QuoteFields
指定应带引号的列的名称。 使用此参数时,仅引用指定的列。 此参数已在 PowerShell 7.0 中添加。
类型: | String[] |
别名: | QF |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-UseCulture
将当前区域性的列表分隔符用作项分隔符。 若要查找区域性的列表分隔符,请使用以下命令:(Get-Culture).TextInfo.ListSeparator
。
类型: | SwitchParameter |
Position: | Named |
默认值: | False |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-UseQuotes
指定 CSV 文件中何时使用引号。 可能的值为:
- 从不 - 不要引用任何内容
- 始终 - 引用所有内容(默认行为)
- 按需要 - 仅包含分隔符字符、双引号或换行符的引号字段
此参数已在 PowerShell 7.0 中添加。
类型: | Microsoft.PowerShell.Commands.BaseCsvWritingCommand+QuoteKind |
别名: | UQ |
Position: | Named |
默认值: | Always |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-WhatIf
防止处理或进行更改 cmdlet。 输出显示运行 cmdlet 时会发生什么情况。
类型: | SwitchParameter |
别名: | wi |
Position: | Named |
默认值: | False |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
输入
可以通过管道将具有扩展类型系统 (ETS) 适配器的任何对象传递给此 cmdlet。
输出
None
此 cmdlet 不返回任何输出。
备注
PowerShell 包含以下 Export-Csv
别名:
- 所有平台:
epcsv
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 信息,并隐含 NoTypeInformation。 IncludeTypeInformation 可用于包括 #TYPE 信息,并模拟 PowerShell 6.0 之前 Export-CSV
的默认行为。
将多个对象提交到 Export-CSV
时,Export-CSV
根据提交的第一个对象的属性组织文件。 如果剩余的对象没有指定的属性之一,则该对象的属性值为 null,由两个连续的逗号表示。 如果剩余的对象有其他属性,这些属性值将不包括在文件中。
可以使用 Import-Csv
cmdlet 从文件中的 CSV 字符串重新创建对象。 生成的对象是原始对象的 CSV 版本,这些版本由属性值的字符串表示形式组成,且不包括方法。
ConvertTo-Csv
和 ConvertFrom-Csv
cmdlet 将对象转换为 CSV 字符串以及从 CSV 字符串转换为对象。 Export-CSV
与 ConvertTo-CSV
相同,只不过它在文件中保存 CSV 字符串。