微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

哈希表未通过使用的函数返回值

如何解决哈希表未通过使用的函数返回值

我的Powershell代码有问题。 我目前正在尝试使用哈希表将特定输出分配给给定的输入值,但是该功能无法显示所需的输出

$ComponentHashTable = @{
1 = 'Test1';
10 = 'Test10';
100 = 'Test100'}

function Output-Status ($Entry)
{
    Write-Host ($Entry + $ComponentHashTable.($Entry.Substring(($Entry.LastIndexOf(".")) + 1)))
}

$Entry = '10.10.10.10'

Output-Status ($Entry)
Read-Host

据我了解,它应该提供以下输出10.10.10.10 Test10

相反,它仅返回以下内容10.10.10.10

上面给出的代码经过简化,但与我尝试使用的代码基本相同。

对此我将不胜感激,因为我一直在努力使其工作一段时间。

解决方法

@iRon的回答是绝对正确的。我有一个不同的版本,您仍然在哈希表中使用整数作为键,但是将索引计算为int:

function Output-Status ($Entry)
{
    $key = [int]$Entry.Substring(($Entry.LastIndexOf(".")) + 1)
    Write-Host $Entry $ComponentHashTable[$key]
}
,

Hash table键的类型为[object]
表示整数1和字符串'1'是不同的键(并且您可以在一个哈希表中同时使用两个-不同的对象键):

$Hashtable = @{}
$Hashtable.Add(1,'Int')
$Hashtable.Add('1','String')
$Hashtable

Name                           Value
----                           -----
1                              String
1                              Int

在这种情况下,您需要使用字符串键才能将它们与其他字符串键进行比较:

$ComponentHashTable = @{
'1' = 'Test1';
'10' = 'Test10';
'100' = 'Test100'}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。