2009-09-10 12 views

Antwort

63

Sie würde in der Regel "Punkt" das Skript in dem Gültigkeitsbereich (global, ein anderes Skript, innerhalb eines Skript). Durch das Punktieren eines Skripts wird das Skript innerhalb dieses Bereichs geladen und ausgeführt, ohne dass ein neuer verschachtelter Bereich erstellt wird. Bei Funktionen hat dies den Vorteil, dass sie nach der Ausführung des Skripts bestehen bleiben. Sie könnten das tun, was Tomer außer schlägt vor, dass Sie das Skript zum Beispiel benötigen würden Punkt:

powershell -command "& { . <path>\script1.ps1; My-Func }" 

Wenn Sie nur die Funktion von Ihrer aktuellen Powershell-Sitzung wollen dies auszuführen dann tun:

. .\script.ps1 
My-Func 

einfach sein Beachten Sie, dass jedes Skript, das nicht in einer Funktion enthalten ist, ausgeführt wird und Skriptvariablen zu globalen Variablen werden.

+0

+1, war der zweite Codeausschnitt genau das, was ich, eine einfache Debug getrennter Funktionen in einer Skriptdatei von ISE –

+1

Im zweiten Codeausschnitt tun musste, Sie den Code mit '& umgeben kann {...} 'wie in' & {. . \ script1.ps1; My-Func} 'zu vermeiden, Umfang Verschmutzung. –

+0

Wenn Sie Parameter für die Funktion haben, fügen Sie sie nach dem Funktionsnamen ein, z. powershell -Befehl "& {." C: \ script.ps1 "; MyMethod" arg1 "" arg2 "}" – HockeyJ

2

Vielleicht so etwas wie

powershell -command "& { script1.ps; My-Func }" 
0

Der Befehl löst die folgende Fehlermeldung aus. Der Punkt wird vor dem Namen des Dateinamens benötigt, um ihn in den Speicher zu laden, wie Keith Hill vorgeschlagen hat.

MyFunction: The term 'MyFunction' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

Verwandte Themen