[玩转系统] PowerShell - 哈希表数组
作者:精品下载站 日期:2024-12-14 05:26:16 浏览:14 分类:玩电脑
PowerShell - 哈希表数组
创建哈希表数组
要在 PowerShell 中创建哈希表数组:
- 创建一个数组。
- 创建两个或多个哈希表。
- 使用 += 运算符将哈希表(在第二步中创建)添加到数组(在第一步中创建)。
创建哈希表数组:
$arrayOfHashTables = @()
$hashTable1 = [ordered]@{
"firstName" = "Mehvish"
"lastName" = "Ashiq"
department="Computer Science"
}
$hashTable2 = [ordered]@{
"firstName" = "Tahir"
"Raza" = "Ashiq"
department="Designs & Arts"
}
$arrayOfHashTables += $hashTable1
$arrayOfHashTables += $hashTable2
$arrayOfHashTables
输出 :
Name Value
---- -----
firstName Mehvish
lastName Ashiq
department Computer Science
firstName Tahir
Raza Ashiq
department Designs & Arts
首先,我们使用 @()
表示的数组运算符创建一个数组并将其保存在 $arrayOfHashTables
变量中。接下来,我们创建了两个哈希表,分别存储在 $hashTable1
和 $hashTable2
中;每个都包含包裹在 @{}
周围的键值对。或者,我们可以使用 [ordered]
让键值对的顺序与创建哈希表时插入的顺序相同。如果我们不使用[ordered]
,哈希表数组将如下所示。
输出 :
Name Value
---- -----
department Computer Science
firstName Mehvish
lastName Ashiq
department Designs & Arts
firstName Tahir
Raza Ashiq
创建完哈希表后,我们使用 +=
运算符在 $arrayOfHashTables 中添加
。或者,您还可以使用 $hashTable1
和 $hashTable2
+
运算符将哈希表添加到哈希表数组中,如下所示:
使用+运算符:
$arrayOfHashTables = @()
$hashTable1 = [ordered]@{
"firstName" = "Mehvish"
"lastName" = "Ashiq"
department="Computer Science"
}
$hashTable2 = [ordered]@{
"firstName" = "Tahir"
"Raza" = "Ashiq"
department="Designs & Arts"
}
$arrayOfHashTables = $arrayOfHashTables + $hashTable1
$arrayOfHashTables = $arrayOfHashTables + $hashTable2
我们创建了两个哈希表($hashTable1
和 $hashTable2
);现在,如果我们必须再添加 10 个或 15 个怎么办?现在会发生什么?这会导致代码冗余。为了避免这种情况,我们将其编写在名为 Test.ps1
的脚本中,并传递一个或多个哈希表作为参数。怎么做呢?让我们在下一节中了解这一点。
将数据从参数传递到哈希表数组
要将数据从参数传递到哈希表数组:
- 创建一个
.ps1
文件,假设为Test.ps1
。 - 使用
param
块接受哈希表数组作为参数。 - 使用
Write-Host
cmdlet 显示自定义消息。 - 使用
foreach
循环迭代哈希表数组。 - 使用嵌套的
foreach
和GetEnumerator()
方法来迭代每个哈希表条目。 - 对于上述循环的每个嵌套迭代,使用
Write-Host
cmdlet 以key=value
格式写入键及其值。
Test.ps1 脚本从参数获取数据到哈希表数组:
param(
[hashtable[]]$Hashtables
)
Write-Host "Hashtables: @("
foreach($hashtable in $Hashtables){
Write-Host " @{"
foreach($entry in $hashtable.GetEnumerator()){
Write-Host " " $entry.Key = $entry.Value
}
Write-Host " }"
}
Write-Host ")"
使用以下命令执行上述脚本:
.\Test.ps1 -Hashtables @{ firstName = "Aftab"; lastName = "Raza"; department = "Game Development"},@{ firstName = "Azher"; lastName = "Raza"; department = "Mathematics"}
输出 :
Hashtables: @(
@{
department = Game Development
firstName = Aftab
lastName = Raza
}
@{
department = Mathematics
firstName = Azher
lastName = Raza
}
)
首先,我们使用带有 param
关键字的 param
块,后跟左括号和右括号 (()
);该块接受一个或多个参数。我们用它来将哈希表数组作为参数。
关键是我们如何确保这个脚本只接受哈希表数组作为参数。我们可以为参数分配一个 type
并包含一个 [Parameter()]
块。在下面的示例中,我们可以看到一个仅接受 hashtable[]
类型的哈希表数组的参数。
指定参数类型:
param(
[Parameter()]
[hashtable[]]$Hashtables
)
我们在上面提供的脚本 (Test.ps1
) 的不同位置使用 Write-Host cmdlet 将自定义输出/消息写入主机;这里的主机是我们的PowerShell控制台或终端。
接下来,使用 foreach
循环迭代哈希表数组 ($Hashtables
)。在每次迭代中,我们使用嵌套的 foreach
和 GetEnumerator() 方法来循环遍历哈希表的每个条目,并使用 Write-Host 写入
cmdlet。key=value
GetEnumartor()
方法的作用是什么?此方法用于获取一个枚举器(IEnumerator 对象),我们用它来迭代指定的集合,在我们的例子中是一个哈希表。
这就是 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