Как вернуть строковое значение из массива, основанного на другой переменной? - PullRequest
0 голосов
/ 05 октября 2018

У меня есть следующий код, и я хотел бы вернуть строковое значение для 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 выбрать, а затем получить доступ к ее элементам.

edit

Как вернуть значение heathrow string на основе передачи heathrow airport в качестве параметра в функцию GetOfficeLocation?Я также хотел бы иметь возможность вернуть newcastle string или london string, изменив вход соответственно.

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Вы можете достичь этого, используя хеш-таблицу.Вот так:

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

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

Вызывающий ключ 'heathrow airport' вернет соответствующее ему значение heathrow

$HashTable[$ADProps.physicalDeliveryOfficeName]
heathrow
0 голосов
/ 05 октября 2018

я думаю, что вы пытаетесь сделать что-то вроде этого:

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

но я не знаю, код совершенно не ясен

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...