Mam skrypt PowerShell, który zawiera kilka funkcji. Jak wywołać określoną funkcję z wiersza poleceń?Wywołanie określonej funkcji PowerShell z wiersza polecenia
To nie działa:
powershell -File script.ps1 -Command My-Func
Mam skrypt PowerShell, który zawiera kilka funkcji. Jak wywołać określoną funkcję z wiersza poleceń?Wywołanie określonej funkcji PowerShell z wiersza polecenia
To nie działa:
powershell -File script.ps1 -Command My-Func
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.
Może coś
powershell -command "& { script1.ps; My-Func }"
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.
+1, drugi fragment kodu po prostu to, co potrzebne, aby zrobić prosty debug oddzielnych funkcji w pliku skryptu z ISE –
W drugim fragmencie kodu, można otoczyć kod z '& {...} 'jak w' & {. . \ script1.ps1; My-Func} ', aby uniknąć zanieczyszczenia obszaru. –
Jeśli masz parametry funkcji, umieść je po nazwie funkcji, np. powershell -command "& {." C: \ script.ps1 "; MyMethod" arg1 "" arg2 "}" – HockeyJ