У меня есть script, что я использую функции для обертывания частей кода, которые позволяют мне перемещаться по разделам в указанной точке. Я обнаружил, что мне нужно иметь функции, перечисленные первыми в script, чтобы он работал правильно.
Нерабочий пример
$stepChoice = read-host 'Where would you like to start.'
switch($stepChoice)
{
1{Step1}
2{Step2}
3{Step3}
}
# Steps.ps1
function Step1 {
'Step 1'
Step2
}
function Step2 {
'Step 2'
Step3
}
function Step3 {
'Step 3'
'Done!'
}
Error
Это дает мне следующую ошибку:
Термин "Step1" не распознается как имя командлета, функции, файла script или исполняемой программы. Проверьте правильность написания имени или, если включен путь, проверьте правильность пути и повторите попытку.
At C:\Tools\Scripts\functiontest.ps1:7 char:12 + 1{Step1 <<<< } + CategoryInfo : ObjectNotFound: (Step1:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException*
Рабочий пример
Если я изменяю порядок вокруг, он отлично работает:
# Steps.ps1
function Step1 {
'Step 1'
Step2
}
function Step2 {
'Step 2'
Step3
}
function Step3 {
'Step 3'
'Done!'
}
#steps
$stepChoice = read-host 'Where would you like to start.'
switch($stepChoice)
{
1{Step1}
2{Step2}
3{Step3}
}
Почему?
Я предполагаю, что это потому, что PS не загружает функции.
Почему это и есть лучший способ выложить эту структуру кода?