哈希表不通过使用的函数返回值
Hashtable not returning value via used function
我的 Powershell 代码有问题。
我目前正在尝试使用散列 table 将某个输出分配给给定的输入值,但该函数未显示所需的输出。
$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
上面给出的代码经过了简化,但与我尝试使用的代码基本相同。
对于这方面的任何帮助,我将不胜感激,因为我已经尝试让它工作了一段时间。
Hash table 键的类型为 [object]
.
意思是整数 1
与字符串 '1'
是不同的键(并且您可以在一个散列 table 中同时拥有两个不同的对象键):
$Hashtable = @{}
$Hashtable.Add(1, 'Int')
$Hashtable.Add('1', 'String')
$Hashtable
Name Value
---- -----
1 String
1 Int
在您的情况下,您需要使用字符串键才能将它们与其他字符串键进行比较:
$ComponentHashTable = @{
'1' = 'Test1';
'10' = 'Test10';
'100' = 'Test100'}
@iRon 的回答完全正确。我有一个不同的版本,您仍然使用整数作为散列中的键 table,但将索引计算为 int:
function Output-Status ($Entry)
{
$key = [int]$Entry.Substring(($Entry.LastIndexOf(".")) + 1)
Write-Host $Entry $ComponentHashTable[$key]
}
我的 Powershell 代码有问题。 我目前正在尝试使用散列 table 将某个输出分配给给定的输入值,但该函数未显示所需的输出。
$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
上面给出的代码经过了简化,但与我尝试使用的代码基本相同。
对于这方面的任何帮助,我将不胜感激,因为我已经尝试让它工作了一段时间。
Hash table 键的类型为 [object]
.
意思是整数 1
与字符串 '1'
是不同的键(并且您可以在一个散列 table 中同时拥有两个不同的对象键):
$Hashtable = @{}
$Hashtable.Add(1, 'Int')
$Hashtable.Add('1', 'String')
$Hashtable
Name Value
---- -----
1 String
1 Int
在您的情况下,您需要使用字符串键才能将它们与其他字符串键进行比较:
$ComponentHashTable = @{
'1' = 'Test1';
'10' = 'Test10';
'100' = 'Test100'}
@iRon 的回答完全正确。我有一个不同的版本,您仍然使用整数作为散列中的键 table,但将索引计算为 int:
function Output-Status ($Entry)
{
$key = [int]$Entry.Substring(($Entry.LastIndexOf(".")) + 1)
Write-Host $Entry $ComponentHashTable[$key]
}