Сценарий PowerShell не выдает ошибку, но работает некорректно

Я просто хочу написать базовый сценарий PowerShell, который сравнивает два числа. Когда я вызываю свой скрипт через .\Compare-Numbers.ps1 -a 3 -b 3, ничего не происходит.

function Compare-Numbers {

    param(
    [Parameter(Mandatory=$True, HelpMessage="Please enter two numbers")]
    [int]$a, 
    [int]$b
    )

    try {
        if($a -eq $b) {
            Write-Host "the given numbers are equal"
            return (exit 0)
        }
        else {
            Write-Host "the given numbers are not equal"
            return (exit 1)
        }
    }
    catch {
        throw "an error occured!"
        exit $LASTEXITCODE
    }
}

Я ожидал, что команда write-host напишет текст в моей командной строке, но ничего не происходит.


person Luciore95    schedule 15.10.2019    source источник
comment
Основная причина в том, что вы устанавливаете функцию, вам нужно вызвать функцию compare-numbers, хотя мне было бы интересно узнать, почему ваш код работает неправильно - когда я его запускаю, он отказывается запрашивать $b для меня, и я не уверен, почему.   -  person Matthew    schedule 15.10.2019
comment
return (exit 1) выдаст ошибку, потому что exit неизвестно. Замените throw "an error occured!" на throw $_, чтобы увидеть ошибку.   -  person Patrick    schedule 15.10.2019


Ответы (2)


Я думаю, вы немного запутались. Вы создали функцию и сохранили ее в файл. Если вы запустите файл, PowerShell скажет:

да, функция загружена, больше нечего делать, пока!

Если вы планируете запускать это из файла, вам нужно будет немного изменить свой подход. Эта статья прекрасно описывает вашу текущую ситуацию и проблему.

Вот как будет выглядеть ваш скрипт:

Param($intOne = 5,
$intTwo = 3
)
Function add-numbers
{
Param($intOne,
$intTwo
)
$intOne + $intTwo
} #end function add-numbers
# *** entry point to script ***
add-numbers -intOne $intOne -inttwo $intTwo
person I.T Delinquent    schedule 15.10.2019
comment
большое спасибо, артивел был именно тем, что мне было нужно, и теперь мой скрипт делает то, что должен делать - person Luciore95; 15.10.2019

Немного поздний ответ, но меня заинтересовал ваш код, и я хотел исправить подсказку значения:

function Number-comparison {

    param(
    [Parameter(Mandatory=$True, HelpMessage="text")][int]$a1,
    [Parameter(Mandatory=$True, HelpMessage="text")][int]$b1

    )

Если мы воспользуемся приведенным выше, это подскажет пользователю правильно.

person Matthew    schedule 17.10.2019