2016-04-05 3 views
2

Я пытаюсь дать пользователю сделать выбор, а затем вернуть значение из хеш-таблицы на основе этого выбора.Powershell Hashtable значения с использованием ключа переменной

Мой Хеш выглядит следующим образом:

$choices = @{ 0 = "SelectionA"; 
       1 = "SelectionB"; 
       99 = "SelectionC"} 

Мой выбор выглядит следующим образом:

$selection = Read-Host -Prompt " 
Please make a selection 
0 - Selection A 
1 - Selection B 
99 - Selection C " 

Тогда я пытаюсь вернуть значение, основанное на выборе, как это:

$choices.$selection 

или

$choices.{$selection} 

Это не работает. Можно ли вызвать значение хэш-таблицы с использованием переменной в качестве ключа?

Спасибо за любую помощь, которую вы можете предложить!

+0

'$ choice. [Int] $ selection' – PetSerAl

+0

Или' $ choice = @ {'0' = 'SelectionA'} ':). Это один из автоматических жалюзи PowerShell. Ключами в вашей хэш-таблице являются целые числа, но 'Read-Host' возвращает строки. – beatcracker

+0

Оба отличных ответа! Оба работают так же хорошо. Большое спасибо! :) – Adam

ответ

0

Комментарии выше оба правильные ответы. Я добавляю их в качестве ответов, чтобы закрыть вопрос.

По PetSerAl:

$choices.[int]$selection 

Или beatcracker:

$choices = @{ '0' = 'SelectionA'} 

Это один из blindspots преобразования автоматического типа в PowerShell в. Ключами в вашей хэш-таблице являются целые числа, но Read-Host возвращает строки.

2

Вы можете использовать метод Get_Item.

$myChoice = $choices.Get_Item($selection) 

Возможно, вам придется сначала преобразовать переменную $ selection в целое число, так как я считаю, что она войдет в строку.

Более подробную информацию о хэш-таблицы: https://technet.microsoft.com/en-us/library/ee692803.aspx

Смежные вопросы