2009-09-10 17 views

risposta

63

è in genere "punto" lo script in ambito (globale, un altro script, all'interno di una scriptblock). La punteggiatura di uno script caricherà ed eseguirà lo script all'interno di tale ambito senza creare un nuovo ambito nidificato. Con le funzioni, questo ha il vantaggio che rimangono dopo che lo script è stato eseguito. Si potrebbe fare quello che Tomer suggerisce la differenza che si avrebbe bisogno di puntini sulle esempio script:

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

Se si desidera solo per eseguire la funzione della sessione PowerShell corrente quindi fare questo:

. .\script.ps1 
My-Func 

essere solo consapevole che qualsiasi script non presente in una funzione verrà eseguito e che tutte le variabili di script diventeranno variabili globali.

+0

+1, il secondo frammento di codice era proprio quello di cui avevo bisogno, per fare un semplice debug funzioni separate in un file di script da ISE –

+1

Nel secondo frammento di codice, è possibile racchiudere il codice con '& {...} 'come in' & {. . \ Script1.ps1; My-Func} 'per evitare l'inquinamento da campo. –

+0

Se si dispone di parametri sulla funzione, inserirli dopo il nome della funzione, ad es. powershell -command "& {." C: \ script.ps1 "; MyMethod" arg1 "" arg2 "}" – HockeyJ

2

Forse qualcosa di simile

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

L'istruzione visualizza il seguente messaggio di errore. Il punto è necessario prima del nome del nome del file per caricarlo in memoria, come suggerito da 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.

Problemi correlati