Ho uno script PowerShell che contiene diverse funzioni. Come invoco una funzione specifica dalla riga di comando?Chiamata di una funzione PowerShell specifica dalla riga di comando
Questo non funziona:
powershell -File script.ps1 -Command My-Func
Ho uno script PowerShell che contiene diverse funzioni. Come invoco una funzione specifica dalla riga di comando?Chiamata di una funzione PowerShell specifica dalla riga di comando
Questo non funziona:
powershell -File script.ps1 -Command My-Func
è 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.
Forse qualcosa di simile
powershell -command "& { script1.ps; My-Func }"
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.
+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 –
Nel secondo frammento di codice, è possibile racchiudere il codice con '& {...} 'come in' & {. . \ Script1.ps1; My-Func} 'per evitare l'inquinamento da campo. –
Se si dispone di parametri sulla funzione, inserirli dopo il nome della funzione, ad es. powershell -command "& {." C: \ script.ps1 "; MyMethod" arg1 "" arg2 "}" – HockeyJ