Просто создаю маленькое меню для увеличения. Пользователь вставляет свой выбор, и скрипт автоматически открывает масштаб для указанного сеанса c. Проблема в if (($ hashTable. $ Selection) .Count -gt 1) , где $ selection действительно имеет значение 1 (если я нажал 1), но выражение всегда становится ложным - поэтому оно переходит к оператор else.
Цель состоит в том, чтобы иметь в таблице ha sh только номер сеанса или номер сеанса и пароль. После проверки, есть ли более одного значения для ключа, я выбрал свое действие.
$ selection содержит число, которое вводит пользователь - так почему $ hashTable. $ Selection пусто?
$hashTable = @{
1 = '6108514938', 'f'
2 = 'Val2'
3 = 'Val3'
}
function Show-Menu
{
param (
[string]$Title = 'My Menu'
)
Clear-Host
Write-Host "================ $Title ================"
Write-Host "1: Press '1' for Algorithms."
Write-Host "2: Press '2' for this option."
Write-Host "3: Press '3' for this option."
Write-Host "Q: Press 'Q' to quit."
}
do
{
Show-Menu –Title 'ZOOM Menu'
$zoomBaseLink = 'zoommtg://zoom.us/join?confno='
$selectedSession = $null
$selection = Read-Host "Please select session"
switch ($selection)
{
'1' { $selectedSession = ($hashTable.1) }
'2' { $selectedSession = ($hashTable.2) }
'3' { 'You chose option #3' }
}
if($selection -ne 'q') {
if (([string]::IsNullOrEmpty($selectedSession))) {
Write-Host 'session is null or empty'
}
else {
Write-Host $selection
Write-Host $selectedSession
pause
<#($hashTable.$selection) always gets false.#>
if (($hashTable.$selection).Count -gt 1) { Write-Host 'here 1'; Write-Host $hashTable.$selection[1] }
else{ Write-Host 'here 2'; Write-Host ($zoomBaseLink + $selectedSession) }
}
$selectedSession = $null
}
pause
}
until ($selection -eq 'q')