lo más habitual es "punto" de la secuencia de comandos en el alcance (global, otro script, dentro de un ScriptBlock). Puntear un script cargará y ejecutará el script dentro de ese alcance sin crear un nuevo alcance anidado. Con las funciones, esto tiene la ventaja de que se quedan después de que se haya ejecutado el script. Se podría hacer lo Tomer sugiere excepto que usted tendría que salpican el ejemplo de script:
powershell -command "& { . <path>\script1.ps1; My-Func }"
Si lo que desea es ejecutar la función de su sesión de PowerShell actual y luego hacer esto:
. .\script.ps1
My-Func
Sólo ten consciente de que cualquier script que no esté en una función se ejecutará y cualquier variable de script se convertirá en una variable global.
+1, el segundo fragmento de código era justo lo que necesitaba, para hacer una depuración sencilla de funciones separadas en un archivo de secuencia de comandos desde ISE –
En el segundo fragmento de código, puede rodear el código con '& {...} 'como en' & {. . \ script1.ps1; My-Func} 'para evitar la contaminación del alcance. –
Si tiene parámetros en la función, colóquelos después del nombre de la función, p. powershell -command "& {." C: \ script.ps1 "; MyMethod" arg1 "" arg2 "}" – HockeyJ