如何基于另一个变量从数组返回字符串值?

时间:2018-10-05 10:02:14

标签: powershell powershell-v2.0

我有以下代码,并希望根据提供给aaa函数的ADProps.physicalDeliveryOfficeName中的内容返回GetOfficeLocation的字符串值。

该开关似乎在做应做的事情,但是它不会返回字符串值,也许我在输出$a["aaa"]时引用错误了吗?

$global:newcastle = @{
"Value 1 newcastle" = @{
    "aaa" = "newcastle string";
    }
}

$global:london = @{
"Value 1 london" = @{
    "aaa" = "london string";
    }
}

$global:heathrow = @{
"Value 1 heathrow" = @{
    "aaa" = "heathrow string";
    }
}

$ADProps=@{
    'physicalDeliveryOfficeName'= "heathrow airport";
}

function GetOfficeLocation ($office) {
    switch ( $office )
    {
    "newcastle" {$location = "newcastle"; break}
    "london city" {$location = "london"; break}
    "heathrow airport" {$location = "heathrow"; break}
    }
    return $location
}

$a = GetOfficeLocation($ADProps.physicalDeliveryOfficeName)
$a["aaa"]

结果是没有任何内容输出到控制台。

在此示例中,期望的结果是要显示以下内容:heathrow string

有效地,我试图确定要选择哪个@global变量,然后从此访问其成员。

编辑

如何基于将heathrow string作为参数传递到heathrow airport函数中,如何返回值GetOfficeLocation?我还希望能够通过相应地更改输入来返回newcastle stringlondon string

2 个答案:

答案 0 :(得分:2)

您可以使用哈希表来实现。像这样:

$HashTable = @{
    'newcastle' = 'newcastle';
    'london city' = 'london';
    'heathrow airport' = 'heathrow';
}

$ADProps=@{
    'physicalDeliveryOfficeName'= "heathrow airport";
}

呼叫键'heathrow airport'将返回其对应的值heathrow

$HashTable[$ADProps.physicalDeliveryOfficeName]
heathrow

答案 1 :(得分:1)

我认为您正在尝试做的事情是这样的:

heathrow = @{
    aaa = "heathrow string"
}
$a = GetOfficeLocation($ADProps.physicalDeliveryOfficeName)
(Get-Variable -Name $a).value.aaa

但我不知道,代码完全不清楚