首页 > 解决方案 > Powershell 不会返回哈希表键值

问题描述

我有一个变量是哈希表:

PS C:\depot\code\rp4vm> $skey


key              value
---              -----
Splitter version 5.2.P1(a.362)
OS version       VMkernel na1-pdesx09

我正在尝试访问键的值,但似乎无法访问。无论我如何称呼他们,我都一无所获:

PS C:\depot\code\rp4vm> $skey."Splitter version"

PS C:\depot\code\rp4vm> $skey["Splitter version"]

我检查了它是否有键值对:

PS C:\depot\code\rp4vm> $skey.key

Splitter version
OS version
PS C:\depot\code\rp4vm> $skey.value

5.2.P1(a.362)
VMkernel na1-pdesx09.americas.global-legal.com 

我正在运行 PowerShell 7,但关于如何处理哈希表的帮助文件中似乎没有任何其他变化。有谁知道我如何捕获信息?

标签: powershell

解决方案


你所拥有的绝对不是哈希表。更有可能是一组具有属性的对象keyvalue就像这样

$skey = [PsCustomObject]@{'key' = 'Splitter version'; 'value' = '5.2.P1(a.362)'},
        [PsCustomObject]@{'key' = 'OS version'; 'value' = 'VMkernel na1-pdesx09'}

展示:

$skey | ForEach-Object {
    Write-Host ('{0} = {1}' -f $_.key, $_.value)
}

应该显示

分离器版本 = 5.2.P1(a.362)
操作系统版本 = VMkernel na1-pdesx09

如果您愿意,可以转换为 Hashtable:

$hash = @{}
$skey | ForEach-Object {
    $hash[$_.key] = $_.value
}

在手机上输入这个,所以希望格式正确..


推荐阅读