2009-09-10 14 views

Odpowiedz

63

byś typowo "kropka" skrypt do zakresu (globalne, innego scenariusza, w scriptblock). Rozmieszczanie skryptu spowoduje załadowanie i wykonanie skryptu w tym zakresie bez tworzenia nowego, zagnieżdżonego zakresu. Dzięki funkcjom ma to tę zaletę, że pozostają one po wykonaniu skryptu. Można zrobić to, co sugeruje, Tomer oprócz tego, że trzeba by kropka np skryptu:

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

Jeśli chcesz tylko do wykonywania funkcji z bieżącej sesji PowerShell następnie to zrobić:

. .\script.ps1 
My-Func 

Wystarczy być świadomy, że każdy skrypt nie będący funkcją zostanie wykonany, a wszelkie zmienne skryptu staną się zmiennymi globalnymi.

+0

+1, drugi fragment kodu po prostu to, co potrzebne, aby zrobić prosty debug oddzielnych funkcji w pliku skryptu z ISE –

+1

W drugim fragmencie kodu, można otoczyć kod z '& {...} 'jak w' & {. . \ script1.ps1; My-Func} ', aby uniknąć zanieczyszczenia obszaru. –

+0

Jeśli masz parametry funkcji, umieść je po nazwie funkcji, np. powershell -command "& {." C: \ script.ps1 "; MyMethod" arg1 "" arg2 "}" – HockeyJ

2

Może coś

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

Instrukcja generuje komunikat o błędzie poniżej. Kropka jest potrzebna przed nazwą pliku, aby załadować ją do pamięci, jak zasugerował Keith Hill.

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.

Powiązane problemy