[玩转系统] 如何使用 PowerShell 数组
作者:精品下载站 日期:2024-12-14 05:54:55 浏览:13 分类:玩电脑
如何使用 PowerShell 数组
介绍
数组是一种可以一次保存多个值的数据结构。将其视为相同或不同数据类型的项目的集合或列表。数组用于许多脚本和编程语言,包括 Windows PowerShell。
让我们深入研究如何在 PowerShell 中创建和使用数组。
创建对象数组
默认情况下,数组中的每个项目都是一个对象,而不是字符串或整数等其他数据类型。以下是如何通过显式添加对象来创建对象数组的示例:
$people = @(
[PSCustomObject]@{Name='Alice'; Age=30},
[PSCustomObject]@{Name='Bob'; Age=25}
创建仅包含一个元素的数组
如果您只在变量中放入一个值,那么 PowerShell 将不会创建数组。为了确认这一点,我们使用两个脚本并输出它们的数据类型。
首先,我们将在 PowerShell 中创建一个包含五个元素的数组:
$array = @(1, 2, 3, 4, 5)
$array1.GetType()
现在让我们尝试使用类似的脚本来创建一个只有一个元素的数组:
$array1 = 1
$array1.GetType()
从下面的输出中可以看到,PowerShell 为第一个示例脚本创建了一个数组 (System.Array),但没有为第二个示例脚本创建数组 (System.Array)。
如果您想通过执行特定命令检索对象来创建数组,则此行为尤其令人担忧,因为您事先不知道结果中将返回多少对象。
要解决此问题,您可以使用 ,(逗号)运算符。如果使用逗号作为二元运算符,则创建一个普通数组;如果用作一元运算符,则数组只有一个元素。
例如,以下是我们如何获取由一个元素组成的数组:
$array1 = ,1
$array1.GetType()
我们可以通过如下所示的输出来确认数组的创建:
创建一个空数组
在 PowerShell 中,您还可以使用运算符 @ 创建数组(包括空数组)。如果指定@(),您将得到一个根本没有对象的数组,您可以创建一个。这是一种方便的方法,可以将变量初始化为数组,然后将对象添加到数组中,而不必担心它们的数量。
$array3 = @()
$array3.GetType()
创建强类型数组
默认情况下,数组的元素可以具有不同的数据类型。但您也可以创建仅接受单一指定类型的值的数组。尝试添加不同类型的值将产生错误。 以下是创建最常见的强类型数组的方法:
整数:
[int[]]$intArray = 1, 2, 3
字符串:
[string[]]$strArray = "one", "two", "three"
日期/时间:
[datetime[]]$dateArray = (Get-Date), (Get-Date).AddDays(1)
创建多维数组(矩阵)
通过使用逗号嵌套数组,您可以在行或列中创建数据的结构化排列。这里我们创建一个 3×3 矩阵:
$twoDArray=@(
@(1,2,3),
@(4,5,6),
@(7,8,9)
)
比较、分组、选择和排序数组
用于处理数组的其他有用的 PowerShell cmdlet 包括:
- Compare-Object — 比较两个数组并返回差异。
- Group-Object — 根据属性值对数组元素进行分组。
- 选择对象 - 选择一个对象或一组对象的指定属性,也可用于从数组中选择特定数量的元素。
- Sort-Object — 用于对仅包含一种数据类型的数组进行排序,如下所示:
$array = @(3, 1, 4, 2)
$sortedArray = $array | Sort-Object
循环遍历数组
为了依次处理数组中的每个元素,我们需要使用 foreach 运算符创建一个循环。例如,如果我们声明一个字符串数组并想要计算数组中每个单词的长度,我们应该运行以下脚本:
$array8 = @("Earth","Mercury","Venus","Jupiter","Saturn","Mars", "Neptune", "Pluto")
foreach ($array in $array8) {
"$array = " + $array.length
}
结果将如下所示:
使用管道
PowerShell 中使用管道将一个命令的输出作为另一个命令的输入传递。使用数组时,您可以使用管道处理和操作数组中的数据,并将结果分配给新数组或修改现有数组。
这里我们将每个数组项乘以 2:
$numbers = 1,2,3,4,5
$doubled = $numbers | ForEach-Object { $_ * 2 }
添加到数组
PowerShell 中数组的大小一旦定义就不可变。但是,运算符 += 使您能够通过将项目附加到现有数组来创建新数组 - 本质上是创建一个新的组合数组。
$array = @(1, 2, 3)
$array += 4
创建一个ArrayList
对于大型数组或频繁添加,使用 += 可能会带来性能问题,因为每次使用它时,都会创建一个新数组,复制旧元素并将新元素添加到数组中。结尾。在这些情况下,您可能需要使用 ArrayList。
ArrayList 的大小是可变的,因此您可以添加或删除项目,而无需重新创建整个集合。与标准数组一样,ArrayList 可以保存不同数据类型的项。
以下是创建 ArrayList 的 cmdlet:
$array3 = New-Object System.Collections.ArrayList
从数组中删除项目
现在让我们使用 ArrayList 从数组中删除一个项目。首先我们创建一个数组。
$array5 = "one", "two", "three", "four", "five"
$array5.gettype()
现在我们将其添加到 AarrayList 中,以便我们可以轻松修改它。
[System.Collections.ArrayList]$ArrayList1 = $array5
$ArrayList1.GetType()
然后我们将使用.Remove命令。
$ArrayList1.Remove("three")
清除数组
没有定义的方法来删除数组,但是有几种方法可以删除数组的内容(清除它)。一种是将变量 $null 赋给数组:
$array7 = $null
$array7
这是清除数组的另一种方法:
$array = @("element1", "element2", "element3")
$array = @()
以下是清除 ArrayList 的方法:
$arrayList = New-Object System.Collections.ArrayList
$arrayList.Add("element1")
$arrayList.Add("element2")
$arrayList.Clear()
打印数组
显示数组内容的最简单方法是简单地引用数组变量。下面的示例展示了如何在数组中的每个项目之前包含文本“Element:”:
要写入 .txt 文件,请使用Out-File命令:
$var5 | Out-File C:scriptsarray.txt
要导出到 .csv 文件,请使用Export-Csv命令:
$var6 | Export-Csv -Path C:scriptsarray.csv
过滤数组
我们可以使用 Where-Object cmdlet 从数组中仅检索偶数:
$numbers = 1,2,3,4,5,6
$evenNumbers = $numbers | Where-Object { $_ % 2 -eq 0 }
$evenNumbers
或者,我们可以使用 .Where() 方法,它不需要管道:
$numbers = 1,2,3,4,5,6
$evenNumbers = $numbers.Where({ $_ % 2 -eq 0 })
$evenNumbers
检查数组的长度
要返回数组中的元素数量,请使用.length参数:
$array6 = 1,2,3,4,5,6
echo $array6.Length
检查数组是否包含特定值
如果您想查看数组中的任何元素是否包含特定值,请使用Contains方法。此代码将显示数组是否包含 2 或 12:
$array7 = 1,2,5,8,3,4,5
$array7.Contains(2)
$array7.Contains(12)
使用数组索引访问项目
与大多数编程语言一样,PowerShell 数组中的每个单独项目都可以通过索引访问。数组的索引从零开始,因此在包含三个项目的数组中,第一个项目位于索引 0,第二个项目位于索引 1,第三个项目位于索引 2。
要使用数组索引访问项目,您需要在数组变量后面的方括号中提供索引。下面的示例展示了如何创建显示第二个元素的数组:
$colors = "Red", "Green", "Blue", "Yellow"
$secondColor = $colors[1]
Write-Output $secondColor
您可以使用负索引从数组末尾访问项目。 -1 指最后一项,-2 指倒数第二项,依此类推。
使用连接运算符和拆分运算符
在 PowerShell 中,join 运算符用于将字符串数组附加到单个字符串中,可以选择使用指定的分隔符。这是一个没有分隔符的示例。
$array = "Power", "Shell"
$joined = $array -join ""
# Output: "PowerShell"
这是带有分隔符的情况:
split 运算符本质上与连接运算符相反,如下例所示:
$string = "apple,banana,grape"
$fruits = $string -split ","
使用替换运算符
replace 运算符用于将一个字符串替换为另一个字符串。以下是 cmdlet 结构:
<originalString> -replace <patternToFind>, <replacementString>
以下是将“Hello World”替换为“PowerShell”的示例:
$string = "Hello World"
$newString = $string -replace "World", "PowerShell"
数组切片
您可以通过指定范围来创建子数组,如下所示:
$array = 1,2,3,4,5,6,7,8,9
$subset = $array[3..6]
反转数组
以下是如何反转数组中元素顺序的示例:
$numbers = 1..5
[Array]::Reverse($numbers)
结论
数组是大多数脚本和编程语言中的基本数据结构,因为它们使您能够存储、检索和操作各种数据类型的项目的集合。了解数组将增强您使用 PowerShell 自动执行任务的能力。
猜你还喜欢
- 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