Завершение скрипта при вызове функции - PullRequest
0 голосов
/ 07 мая 2019

Я пытаюсь запустить функцию, которая устанавливает, а затем проверяет переменную в скрипте powershell.

Переменная задается внутри функции, но не переносит свое значение ни разу в сценарии.Я не уверен, что я делаю неправильно.Я думаю, что это что-то довольно простое, что я упускаю.

Эта функция является частью большого скрипта.

Я также не уверен, что мое тестирование относительно правильного выбора работает правильно.

####Function to set and test Year level#####
function Year_Level
{
    do{
    $Selection=Read-Host "Choose a Year Level"
    Switch ($Selection)
    {
        0 {$YearLevel1="Year 00"}
                01 {$YearLevel1="Year 01"}
        02 {$YearLevel1="Year 02"}
        03 {$YearLevel1="Year 03"}
        04 {$YearLevel1="Year 04"}
        05 {$YearLevel1="Year 05"}
        06 {$YearLevel1="Year 06"}
        07 {$YearLevel1="Year 07"}
        08 {$YearLevel1="Year 08"}
        09 {$YearLevel1="Year 09"}
        10 {$YearLevel1="Year 10"}
        11 {$YearLevel1="Year 11"}
        12 {$YearLevel1="Year 12"}
        13 {$YearLevel1="Staff"}
        }

if($selection -ne 01,02,03,04,05,06,07,08,09,10,11,12,13)
{Write-Warning "Incorrect year level selection, try again!" -Verbose
} else{
write-host "You have selected $YearLevel1"
}
    }until ($selection -lt 14)
}

Write-Host "Select Year Level"
Write-Host "0 = Reception"
Write-Host "01 = Year 1"
Write-Host "02 = Year 2"
Write-Host "03 = Year 3"
Write-Host "04 = Year 4"
Write-Host "05 = Year 5"
Write-Host "06 = Year 6"
Write-Host "07 = Year 7"
Write-Host "08 = Year 8"
Write-Host "09 = Year 9"
Write-Host "10 = Year 10"
Write-Host "11 = Year 11"
Write-Host "12 = Year 12"
Write-Host "13 = Staff"

Year_Level

Я хочу установить переменную $ yearlevel1 для использования после функции в скрипте, которая вызывает функцию.

EDIT

Теперь у меня есть переменнаяустановить вне функции.Но иногда он неправильно устанавливает / проверяет, что это за переменная.Есть ли что-то явно очевидное в коде, который я пропускаю?

function Year_Level
{
    do{
    $Selection=Read-Host "Choose a Year Level"
    Switch ($Selection)
    {
        0 {$YearLevel1="Year 00"}
        01 {$YearLevel1="Year 01"}
        02 {$YearLevel1="Year 02"}
        03 {$YearLevel1="Year 03"}
        04 {$YearLevel1="Year 04"}
        05 {$YearLevel1="Year 05"}
        06 {$YearLevel1="Year 06"}
        07 {$YearLevel1="Year 07"}
        08 {$YearLevel1="Year 08"}
        09 {$YearLevel1="Year 09"}
        10 {$YearLevel1="Year 10"}
        11 {$YearLevel1="Year 11"}
        12 {$YearLevel1="Year 12"}
        13 {$YearLevel1="Staff"}
        }

if($selection -gt 13)
{Write-Warning "Incorrect year level selection, try again!" -Verbose
} else{
write-host "You have selected $YearLevel1"
}
    }until ($selection -lt 14)
    $YearLevel1
}

Write-Host "Select Year Level"
Write-Host "0 = Reception"
Write-Host "01 = Year 1"
Write-Host "02 = Year 2"
Write-Host "03 = Year 3"
Write-Host "04 = Year 4"
Write-Host "05 = Year 5"
Write-Host "06 = Year 6"
Write-Host "07 = Year 7"
Write-Host "08 = Year 8"
Write-Host "09 = Year 9"
Write-Host "10 = Year 10"
Write-Host "11 = Year 11"
Write-Host "12 = Year 12"
Write-Host "13 = Staff"

$yearlevel = Year_Level

1 Ответ

1 голос
/ 07 мая 2019

$yearlevel1 переменная определена и установлена ​​внутри функции, следовательно, она не будет доступна вне функции.Я предлагаю вернуть значение из функции и сохранить его в переменной.

function Year_Level {
    ....
    ....
    return $yearlevel1
}


$ReturnValue = year_level

Но, похоже, вы используете переменную внутри функции, а не снаружи.Я бы посоветовал вам попробовать подход ниже для вашего требования.Что просто.

function Year_Level {
    $SupportedValues = 1..13
    do {
        $Selection = Read-Host "Choose a Year Level"
        if ($SupportedValues -notcontains $selection) {
            Write-Warning "Incorrect year level selection, try again!" -Verbose
        }
        else {
            $YearLevel1 = "Year $Selection"
            write-host "You have selected $YearLevel1"
        }

    }until ($selection -lt 14)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...