[玩转系统] PowerShell:如何将数组导出到 CSV 文件?
作者:精品下载站 日期:2024-12-14 16:02:23 浏览:14 分类:玩电脑
PowerShell:如何将数组导出到 CSV 文件?
PowerShell 是一种多功能脚本语言和命令行 shell,提供强大的自动化和管理功能。作为 PowerShell 用户,您可能会遇到需要将数组导出到 CSV 文件的情况。在这篇博文中,我们将探讨如何使用 PowerShell 将数组导出到 CSV(逗号分隔值)文件。 CSV 文件由于其简单性和兼容性而被广泛用于应用程序和平台之间的数据交换。在本文结束时,您将了解如何使用各种技术将数组导出到 CSV 文件。
了解 PowerShell 中的数组和 CSV 文件
数组是存储在单个变量中的元素的集合。数组中的每个元素都可以使用索引号进行访问。数组通常用于在 PowerShell 中存储数据,因为它们允许您将相关数据分组在一起并将其作为单个实体进行操作。
数组是存储在单个变量中的元素的集合。以下是如何创建简单数组的示例:
$Array = @(1, 2, 3, 4, 5)
CSV 文件是纯文本文件,以结构化格式存储表格数据。 CSV 文件中的每一行代表一条记录,每一列代表该记录中的一个字段。 CSV 文件通常用于在不同应用程序和数据库之间交换数据。
在 PowerShell 中可以通过多种方法将数组导出到 CSV 文件。在本文中,我们将介绍三种方法:Export-Csv cmdlet、使用 ForEach 循环的 Add-Content 以及使用 ForEach 循环的 Out-File。
方法 1:使用 Export-Csv Cmdlet
Export-Csv cmdlet 是将数组导出到 CSV 文件的最简单方法。此 cmdlet 将对象导出到 CSV 文件并将它们转换为一系列逗号分隔的值。这是一个例子:
$array = @(1, 2, 3, 4, 5)
$array | Export-Csv -Path "ArrayExport.csv" -NoTypeInformation
但是,对于简单数组,此方法将无法按预期工作。
要使用 Export-Csv cmdlet,我们需要向其输入一个对象。具体做法如下:
$array = @(1, 2, 3, 4, 5)
$arrayObjects = $array | ForEach-Object {
[PSCustomObject]@{'Value' = $_}
}
$arrayObjects | Export-Csv -Path "C:\Temp\ArrayExport.csv" -NoTypeInformation
同样,如果使用 PowerShell 导出字符串数组,CSV 将仅显示长度!
#String Array
$Array = @("apple", "orange", "banana", "kiwi")
#Export array to CSV
$Array | Export-CSV -Path "C:\Temp\Array.csv" -NoTypeInformation
输出 :
"Length"
"5"
"6"
"6"
"4"
这是因为 Export-Csv cmdlet 将对象作为输入并导出对象属性及其值的表。由于您的脚本正在生成字符串对象,并且它们唯一的属性是长度,这就是您所得到的。因此,为了解决这个问题,我们必须使用“Select-Object”cmdlet,它返回一个自定义 PSObject。
#String Array
$Array = @("apple", "orange", "banana", "kiwi")
#Convert Array to Object Array - using Select-Object cmdlet
$ObjArray = $Array | Select-Object @{Name='Name';Expression={$_}}
#Export Object Array to
$ObjArray | Export-Csv "C:\Temp\ArrayExport.csv" -NoTypeInformation
使用 PowerShell 将数组导出为 CSV
在此示例中,我们创建一个名为 $Array 的数组,其中包含三个对象。每个对象都有三个属性:Name、Age、City(类似于多维数组)。我们使用 PSCustomObject 类来创建具有属性的自定义对象。获得数组后,您可以使用 Export-Csv cmdlet 将其导出到 CSV 文件。以下示例展示了如何将 $Array 数组导出到“C:\Temp”文件夹中名为 data.csv 的 CSV 文件:
#Define Array
$Array = @( [PSCustomObject]@{ Name = "John"; Age = 30; City = "New York" },
[PSCustomObject]@{ Name = "Jane"; Age = 25; City = "Los Angeles" },
[PSCustomObject]@{ Name = "Bob"; Age = 40; City = "Chicago" }
)
#Export array to CSV
$Array | Export-Csv -Path "C:\Temp\data.csv" -NoTypeInformation
在此示例中,我们将 $Array 数组通过管道传输到 Export-Csv cmdlet。 -Path 参数指定 CSV 文件的路径和文件名。 -NoTypeInformation 参数可防止 PowerShell 将类型信息标头添加到 CSV 文件中。该脚本运行并在“C:\Temp”目录中创建一个名为 Data.csv 的新文件,其中包含 CSV 格式的数组数据。
导出具有特定列的数组
如果您的数组包含许多列,并且您只想导出这些列的子集,则可以使用 Select-Object cmdlet。例如,如果您有一个包含五列的数组,并且您只想导出前三列,则可以使用以下命令:
$Array | Select-Object Column1, Column2, Column3 | Export-Csv -Path "data.csv" -NoTypeInformation
从 PowerShell 将多个数组导出到 CSV
如何将多个数组导出到单个 CSV 文件还需要 Export-CSV cmdlet。我们通过使用 +(加号)符号连接数组内容来执行此任务。这是一个例子:
#Define Arrays
$Array1 = @(1,2,3,4)
$Array2 = @(5,6,7,8)
$Array3 = $Array1 + $Array2
$ResultArray = @()
#Convert Array to object
ForEach ($Item in $Array3)
{
$ResultArray+=[pscustomobject]@{Result = $item }
}
#Export Array to CSV
$ResultArray | Export-Csv -Path "C:\Temp\Array.csv" -NoTypeInformation
在此示例中,我们创建两个数组($array1、$array2),将它们合并到 $Array3 中,并将生成的组合数组导出到 CSV 文件。
方法 2:通过 ForEach 循环使用 Add-Content
将数组导出到 CSV 文件的另一种方法是结合使用 Add-Content cmdlet 和 ForEach 循环。此方法允许您创建新文件或将数据附加到现有文件。这是一个例子:
#Define Array
$Array = @(1, 2, 3, 4, 5)
$CSVFile = "C:\Temp\ArrayExport.csv"
#Remove the CSV if exists
If (Test-Path -Path $CSVFile) { Remove-Item -Path $CSVFile -Force}
#Set Header
$Header = "Value"
#Add Header to the CSV file
Add-Content -Path $CSVFile -Value $Header
#Add content to the CSV
ForEach ($Item in $Array) {
Add-Content -Path $CSVFile -Value $Item
}
请注意,我们正在检查 CSV 文件是否存在并将其删除。这是因为默认情况下 Add-Content cmdlet 会附加到现有文件。
方法 3:将 Out-File 与 ForEach 循环结合使用
Out-File 是另一个可用于将数组导出到 CSV 文件的 cmdlet。此 cmdlet 将输出发送到文件而不是控制台。这是一个例子:
$array = @(1, 2, 3, 4, 5)
$header = "Value"
$header | Out-File -FilePath "C:\Temp\ArrayExport.csv"
ForEach ($item in $array) {
$item | Out-File -FilePath "C:\Temp\ArrayExport.csv" -Append
}
结论
在这篇博文中,我们介绍了在 PowerShell 中将数组导出到 CSV 文件的三种方法:Export-Csv cmdlet、使用 ForEach 循环的 Add-Content 以及使用 ForEach 循环的 Out-File。每种方法都有其优点,您可以使用最适合您的要求的方法。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag