如果您需要从 PowerShell 发送信息到 CSV 文件,Export-CSV cmdlet 就在这里帮忙。这个 cmdlet 能够帮助管理员节省大量时间,将松散的文本整理成结构化格式。与其在 Excel 中摆弄,我们可以使用 PowerShell 来创建 CSV 文件。
您可以使用 Export-Csv
cmdlet 从任何 PowerShell 对象创建 CSV 文件,用于生成报告、发送到数据库等等。
CSV 格式仅仅是作为文本文件存储的逗号分隔的行列表。由于它只是一个文本文件,我们理论上可以只使用通用的文本文件命令,比如Set-Content
来完成任务。然而,要使用通用命令,就需要自己构建必要的 CSV 结构。既然已经有了一个用于将 CSV 输出发送到文件的 CSV 导出命令Export-Csv
,为什么还要自己构建呢?
CSV 文件需要特定的结构。这个 cmdlet 能够理解、读取并转换信息为CSV文件,这正是这个 PowerShell cmdlet 如此方便的地方。
使用 ManageEngine ADManager Plus 管理和报告 Active Directory、Exchange 和 Microsoft 365。立即下载免费试用!
对象 -eq CSV 行
Export-Csv
cmdlet具有单一目的;将PowerShell对象保存到CSV文件中。
假设您有一个具有两个属性foo
和bar
的对象。每个属性都具有分别为1
和2
的值。当您将该对象发送到Export-Csv
时,它将创建一个具有两列和单行的CSV文件。然后,您可以导入CSV内容并检查其外观。
PowerShell本质上将内存中的对象和CSV文件视为相同!它还指出我的列标签应该是标题。使用这个命令将对象导出到文件系统,就像将对象保存到文件系统一样。使用通用文本PowerShell命令Get-Content
,我们可以检查原始文本,以查看Export-Csv
命令导出的内容。
请注意,该命令在每个行条目周围使用双引号。这使您可以包含带有空格的字段。
Export-CSV 有用的参数
在Windows PowerShell 5.1中,Export-CSV cmdlte创建CSV文件的对象类型。如果您不想看到此行,一个常用的参数是NoTypeInformation
,它完全消除了此行。
如果您使用许多不同的CSV文件或数据源,您可能会发现Export-CSV会覆盖现有文件。不过,如果您使用Append
参数,这就没问题了。
Append
参数允许您将行添加到CSV中,而不是覆盖现有文件。另一个有用的参数是Delimiter
。偶尔,您可能需要创建一个不使用通常的列表分隔符(逗号)来分隔字段的CSV文件。也许您需要创建一个使用制表符作为分隔符甚至是分号的文件。
处理引号
在创建CSV行时,Export-Csv
将所有字段用引号括起来。在某些情况下,这可能并不理想。不幸的是,没有办法阻止这种情况发生。但是,通过使用一些额外的代码,您可以实现这一点。
在下面的示例中,您可以看到创建CSV文件的示例。然后,Get-Content
读取原始文本文件,在内存中将所有双引号替换为空。然后Set-Content
将内存中的信息写回磁盘。
管理和报告Active Directory,Exchange和Microsoft 365,使用ManageEngine ADManager Plus。立即下载免费试用版!
摘要
Export-Csv
cmdlet是一种简单但非常实用的管理CSV数据的工具。它能理解CSV数据文件的结构,并将PowerShell对象转换为CSV行。
I’m not about to go back to batch, or VBScript where creating a CSV file from an existing object required instantiating a FileSystemObject, creating a loop and a bunch of Write()
methods!
这个命令是开始编写PowerShell代码的又一个很好的理由!