Warum muss ich meine Funktionen zuerst in mein PowerShell-Skript schreiben lassen?

Ich habe ein Skript, das Funktionen verwendet, um Teile des Codes zu umbrechen, mit denen ich mich an einer bestimmten Stelle durch die Abschnitte bewegen kann. Was ich gefunden habe, ist, dass ich die Funktionen zuerst im Skript aufgelistet haben muss, damit es korrekt ausgeführt wird.

Nicht funktionierendes Beispiel
$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!' 
}
Erro

Dies gibt mir den folgenden Fehler:

Der Begriff "Step1" wird nicht als Name eines Cmdlets, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder überprüfen Sie, ob der Pfad korrekt ist, und versuchen Sie es erneut.

 At C:\Tools\Scripts\functiontest.ps1:7 char:12
  +     1{Step1 <<<< }
  + CategoryInfo          : ObjectNotFound: (Step1:String) [], CommandNotFoundException
  + FullyQualifiedErrorId : CommandNotFoundException*
Arbeitsbeispiel

Wenn ich die Reihenfolge ändere, funktioniert es gut:

# 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}

}
Warum

Ich vermute, dass es daran liegt, dass PS die Funktionen nicht lädt.

Warum ist das so und gibt es eine bessere Möglichkeit, diese Codestruktur zu erstellen?

Antworten auf die Frage(8)

Ihre Antwort auf die Frage