如何在PowerShell中使用Hashtables

486 阅读3分钟

哈希表是 用来存储包含钥匙的值的。例如,你有一个储物柜;只有当你有钥匙时,你才能打开锁。哈希表的情况也是如此。让我们看一下另一个场景。假设你在图书馆寻找一本书,你先拿起离前门最近的那本书,然后是下一本,以此类推。找到你想要的书将需要相当长的时间。

另外,你可以在图书馆的索引中查看,这将给你一个书的大致位置。哈希表的功能类似于图书馆的索引。哈希表使程序能够可预测地、快速地检索数据。像Google这样的技术,分析TB级的数据并在一秒钟内使其可被搜索到,如果没有在代码中实施hashtables,就不可能实现。

什么是PowerShell中的哈希表?

Hashtables是PowerShell中最有用的数据结构。一个哈希表是由一系列的 "键 "和 "值 "对组成的。这些表可以用许多不同的方式来利用。利用它们作为数据查询表,允许你根据它的键来查询hashtable并检索相关的值。这将有助于找到与 ""相对应的容器来检索其 "值"

在实践中,利用键作为数据查询是很有效的,可以帮助缓存。如果你有大量的参考数据,而你又不想定期在数据库中查询,你可以利用hashtable来缓存结果,并保存起来以便更快速地访问。这些表不允许添加 "NULL"值,这有助于你节省内存。

本文将告诉你如何在PowerShell中使用hashtables。所以,让我们开始吧!

如何在PowerShell中使用哈希表

首先,通过在搜索框中手动搜索,打开你的 "Windows PowerShell ISE"。

在该文件中,选择 "新建"选项并创建一个新的PowerShell脚本。

现在,通过在你的PowerShell脚本中声明,创建一个简单的hashtable。用"$"变量指定你的hashtable名称,并在大括号"@{ }"中定义其值。

$colorList = @{ID = 1; Shape = "Square"; Color = "Blue"}
$colorList

在我们的脚本中,我们已经声明了一个名为"$**colorList "**的哈希表,其键值为 "ID、 Shape、 Color",并有各自的值。"1,Square,Blue"。

将这个脚本保存为 "testfile1.ps1"并运行这个PowerShell脚本。

执行 "testfile1.ps1"将向你显示以下输出。

你也可以把 ""和它们的 ""定义为单独的变量。之后,你使用 "add()"函数在hashtable中添加key和它们的值。

$key = 'Dave'
$value = 36
$ageList.add( $key, $value )
$ageList.add( 'Alex', 9 )
$ageList

在这个脚本中,我们将 "Dave"和 "36"作为"key""key**"和"**value"的变量传入 "add()"函数中。相比之下,"Alex**"**和 "9 "是直接在同一个函数中传递的。这两个函数的调用语句都会在哈希表中添加键和值。

如何在PowerShell中访问Hashtable的值

你已经看到了在hashtable中添加键和其值的方法。同样地,你可以用它各自的值来访问键。

$ageList = @{}
$key = 'Kevin'
$value = 36
$ageList[$key] = $value
$ageList['Alex'] = 9
$ageList

如何在PowerShell中声明带有数值的哈希表

PowerShell为你提供了两种方法来创建一个哈希表。第一种是创建一个空的hashtable,然后再在其中添加 "key**"和 "value"。在另一种方法中,你可以一次性声明一个带有 "键"**和 "**值 "**的hashtable。下面给出的例子将向你展示这个概念。

$ageList = @{
    Kevin = 36
Alex  = 9
}
$ageList

如何在PowerShell中迭代哈希表

哈希表是一个键和值的组合;它的迭代方式与数组或普通的对象列表不同。在下面给出的命令中,你必须注意的第一件事是,我们正在使用管道操作符["|"]来处理我们的哈希表;管道操作符将哈希表视为一个对象。而 "Measure-Object"命令被用来提取hashtable的属性值。

> $ageList | Measure-Object

上述命令的执行将在你的PowerShell上显示以下输出。

你也可以使用 "GetEnumerator()"方法对hashtable进行迭代。将此函数与 "ForEach-Object"一起使用,它将一个接一个地显示键和其配对的值。

$ageList.GetEnumerator() | ForEach-Object{
    $message = '{0} is {1} years old!' -f $_.key, $_.value
    Write-Output $message
}

如何在PowerShell中检查Hashtable值的数量

".count"属性用于计算你的hashtable中值的总数。你可以通过以下方式在你的hashtable中使用这个属性。

> $ageList.count

如何在PowerShell中对hashtable的key/values进行排序

当你希望你的hashtable的键和值按照你定义的顺序排列时,你可以在脚本中声明你的hashtable时指定"[ordered]"关键字。

$person = [ordered]@{
    name = 'Kevin'
age  = 36
}
$person

执行这个 "testfile1.ps1"脚本,它将按照我们在脚本中定义的顺序,打印出键和它们的值。

如果没有**[ordered]**选项,该脚本将显示以下输出。

结论

哈希表在 PowerShell中相当重要,可以在更高级的管理和脚本场景中使用。PowerShell对hashtable的使用也证明了PowerShell的输出作为对象是多么有用。对于几乎任何类型的数据,hashtables是一种有效的方式来存储像键/值对。

这种模式有助于定位与 "键"相对应的容器,以检索其 "值";在实践中,利用键作为数据查询是高效的,在缓存中也很有用。在这篇文章中,我们向你展示了如何在Powershell中使用hashtable,包括创建hashtable的方法,声明和访问它的值,检查,排序hashtable值。