[玩转系统] PowerShell 中的哈希表 |哈希表在 PowerShell 中如何工作?
作者:精品下载站 日期:2024-12-14 04:58:26 浏览:16 分类:玩电脑
PowerShell 中的哈希表 |哈希表在 PowerShell 中如何工作?
PowerShell 中的哈希表简介
PowerShell Hashtable 是一种紧凑的数据结构,它将键/值对存储在哈希表中。换句话说,哈希表是一个关联数组或具有键值对的字典。键/值对本质上是一组以某种方式相关的两个元素。
在哈希表中,输入是具有关联值的唯一键,输出是具有两列的表。
- 姓名
- 价值
在 PowerShell 中,每个哈希表都是一个 Hashtable 对象。该对象主要是字符串或整数,但它可以是任何对象类型。
语法:
在使用哈希表之前,必须先创建它。以下是执行此操作的语法。
创建一个空的哈希表
$hash =@{}
您还可以创建哈希表并同时添加键值。
$hash = @{ key1 = item1; key2 = item2;... }
可以通过以下方式向空哈希表添加数据:
$hash.add( $key, $value )
也可以使用类似的语法创建有序字典。
以下是创建有序字典的语法。在这里,我们仅在“@”符号之前添加了[ordered]属性。
$hash =[ordered] @{ key1 = item1; key2 = item2;... }
注意:哈希表和有序字典之间的主要区别在于,哈希表不维护条目添加的顺序,而有序字典则保留。
访问哈希表值:通过键来访问哈希表值。
$hash[“key1”]
打印哈希表:要打印/显示哈希表,只需键入保存哈希表的变量名称。
$hash
上面的命令显示一个包含两列的表,一列用于键,另一列用于键的关联值。
哈希表在 PowerShell 中如何工作?
- Hashtable 使用哈希函数将键转换为哈希值。
- 哈希值是哈希表用来获取值的数字。
- 然后哈希直接映射到键/值对数组中的存储桶。
让我们通过给定的示例来了解 PowerShell 的工作原理:
- 首先,创建一个空的哈希表,然后用键值对填充它,或者,
代码:
$hash = @{}
$hash.add( 'ID', 1 )
$hash.add( 'Subject', 'Maths')
$hash.add( 'Maths', 80 )
$hash
输出:
- 您还可以创建一个哈希表并同时对其进行初始化。
代码:
$hash = @{ID=1; Subject='Maths'; Marks=80}
$hash
输出:
对于有序哈希表
代码:
$hash=[ordered]@{ID=1; Subject='Maths'; Marks=80}
$hash
输出:
这里显示了一些示例来说明可以在哈希表上执行的操作。
编辑哈希表中的项目
.Set_Item() 方法用于编辑哈希表中的项目:
代码:
$hash=[ordered]@{ID=1; Subject='Maths'; Marks=80}
$hash.Set_Item("Subject", “English”)
$hash
输出:
- 如果之前不存在,则新条目会自动添加到哈希表中。
代码:
$hash=[ordered]@{ID=1; Subject='English'; Marks=80}
$hash.Set_Item("NoOfStudents",30)
$hash
输出:
从哈希表中删除项目
代码:
$hash=[ordered]@{ID=1; Subject='English'; Marks=80}
$hash.Remove("NoOfStudents")
$hash
输出:
打印哈希表键
代码:
$hash=[ordered]@{ID=1; Subject='English'; Marks=80}
$hash.keys
输出:
打印哈希表值
代码:
$hash=[ordered]@{ID=1; Subject='English'; Marks=80}
$hash.values
输出:
搜索特定项目
代码:
$hash=[ordered]@{ID=1; Subject='Maths'; Marks=80}
If ($hash.Subject -eq ‘Maths’) {Echo ‘OK’}
输出:
在这里,如果“Subject”键值与“Maths”匹配,则输出为“OK”。
对于部分匹配,使用 .ContainsKey 或 .ContainsValue 方法。
$hash.ContainsKey(‘Subject’)
这将返回 True 作为输出,因为 Key 与“Subject” 匹配。
$hash.ContainsKey('Date')
这将返回 False 作为输出,因为 Key 与“Date” 不匹配。
$hash.ContainsValue(‘Maths’)
这将返回 True 作为输出,因为 Value 与“Maths” 匹配。
$hash.ContainsValue('Physics')
这将返回 False 作为输出,因为值与“Physics” 不匹配。
您还可以检查特定密钥是否存在。
代码:
$hash=[ordered]@{ID=1; Subject='Maths'; Marks=80}
If ($hash.Subject) {Echo ‘OK’}
输出:
对键和值进行排序
- 默认情况下,哈希表条目是未排序的。
- 每次打印键/值时,顺序可能会有所不同。
- 由于使用排序的数据列表总是很方便,因此您可以在 Powershell 中对哈希表键/值对进行排序,但无法对哈希表本身进行排序。
- GetEnumerator方法用于枚举键和值
- 然后,使用 Sort-Object cmdlet 对枚举值进行排序以进行打印。
让我们通过一个例子来理解这一点。
代码:
$hash.GetEnumerator() | Sort-Object -Property key
输出:
在上面的例子中,首先,哈希表中的键和值被枚举到 $hash 变量中,然后键按字母顺序排序。
- 要按降序对哈希表值进行排序,请看下面的示例。其操作方式与上面类似,只是您需要在 cmdlet 中添加“降序”。
代码:
$hash=[ordered]@{ID=1; Subject='Maths';Marks=80}
$hash.GetEnumerator() | Sort-Object -Property key -Descending
输出:
通过哈希表进行泼溅
- 使用字典或列表将参数作为一个单元提供给命令的方法。
- 当您需要指定大量参数而导致命令冗长并且您最终需要滚动屏幕或尝试将其包裹起来以使其可读时,这会很有帮助。
- 通过splatting,您可以使用更容易阅读的数组或哈希表,而不是在一行中提供所有参数并延伸到整个屏幕。
- Splatting 通过提供干净简洁的格式使代码阅读变得更容易让我们通过一个非常简单的示例来理解这一点。
代码:
$splat= @{year = 2019; Month = 12; day=1}
get-date @splat
输出:
注意:变量名$splat中的$符号在执行命令时会变成@符号
使用@符号而不是$符号会调用 splat 操作。
循环遍历哈希表
让我们借助下面的例子:
1.使用ForEach
代码:
$hash=[ordered]@{ID=1; Subject='Maths';Marks=80}
foreach
($key in $hash.keys)
{
$message = '{0} is {1}' -f $key, $hash[$key]
Write-Output $message
}
输出:
在这里,我们遍历哈希表中的每个键并访问
使用它的价值
2. 使用 ForEach-Object
代码:
输出:
3. 使用 GetEnumerator() 解开哈希表对象
代码:
输出:
在这里,每个键值对都经过管道。使用 GetEnumerator() 方法的主要目的是将 PowerShell 对象展开为其各个元素。
结论——PowerShell 中的哈希表
在本文中,我们探讨了 Powershell 中哈希表的一些重要方面。
总结一下:
- 哈希表是一种轻量级数据结构,用作关联数组以将键映射到值。
- 它是一种结构化且有效的查找和检索数据的方法。
- 可以存储列表。
- 可以在 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 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[短剧] 2025年06月08日 精选+付费短剧推荐50部
[短剧] 2025年06月07日 精选+付费短剧推荐54部
[软件合集] 25年6月8日 精选软件33个
[软件合集] 25年6月7日 精选软件26个
[短剧] 2025年06月06日 精选+付费短剧推荐51部
[电影] 死神来了 1-6合集 4K HDR 杜比视界 外挂双语字幕
[软件合集] 25年6月6日 精选软件64个
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[短剧] 2025年06月07日 精选+付费短剧推荐54部
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[软件合集] 25年6月6日 精选软件64个
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[短剧] 2025年06月07日 精选+付费短剧推荐54部
[软件合集] 25年6月6日 精选软件64个
[剧集] [央视][笑傲江湖][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个
- 最新评论
-
- 热门tag