Come posso eseguire uno script PowerShell?
powershell.exe 'C:\my_path\yada_yada\run_import_script.ps1'
(con o senza --noexit
)che restituisce esattamente nulla, tranne che il nome del file viene emesso.
Nessun errore, nessun messaggio, niente. Oh, quando aggiungo -noexit
, succede la stessa cosa, ma rimango all'interno di PowerShell e devo uscire manualmente.
Il file .ps1 dovrebbe eseguire un programma e restituire il livello di errore in base all'output del programma. Ma sono abbastanza sicuro che non ci sto ancora arrivando.
Che cosa sto facendo di sbagliato?
Passa alla directory in cui risiede lo script
PS> cd C:\my_path\yada_yada\ (enter)
Esegui lo script:
PS> .\run_import_script.ps1 (enter)
Cosa mi manca ??
Oppure: puoi eseguire lo script PowerShell da cmd.exe
in questo modo:
powershell -noexit "& ""C:\my_path\yada_yada\run_import_script.ps1""" (enter)
secondo questo post di blog qui
Oppure potresti persino eseguire il tuo script PowerShell dalla tua app C # :-)
Esegui in modo asincrono gli script di PowerShell dall'applicazione C #
Se si utilizza PowerShell 2.0, utilizzare il parametro -File di PowerShell.exe per richiamare uno script da un altro ambiente come cmd.exe ad esempio:
Powershell.exe -File C:\my_path\yada_yada\run_import_script.ps1
Se si desidera eseguire uno script senza modificare il criterio di esecuzione dello script predefinito, è possibile utilizzare l'opzione bypass all'avvio Windows PowerShell .
powershell [-noexit] -executionpolicy bypass -File <Filename>
Genere:
powershell -executionpolicy bypass -File .\Test.ps1
NOTA: qui Test.ps1
è lo script di PowerShell.
Ho avuto lo stesso problema, e ho provato e provato ... Finalmente ho usato:
powershell.exe -noexit "& 'c:\Data\ScheduledScripts\ShutdownVM.ps1'"
E metti questa riga in un file batch e questo funziona.
Se hai solo PowerShell 1.0 , questo sembra fare abbastanza bene il trucco:
powershell -command - < c:\mypath\myscript.ps1
Conduce il file di script alla riga di comando di PowerShell.
Molto facile. Fare clic con il pulsante destro del mouse sul file .ps1 in Windows e nel menu Shell fare clic su Esegui con PowerShell .
Usando il file cmd (BAT):
@echo off
color 1F
echo.
C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -File "PrepareEnvironment.ps1"
:EOF
echo Waiting seconds
timeout /t 10 /nobreak > NUL
Se è necessario eseguire come amministratore :
Un modo semplice è usare PowerShell ISE , aprire lo script, eseguire e invocare il tuo script, funzione ...
Dare il percorso dello script, cioè l'impostazione del percorso per cmd:
$> . c:\program file\prog.ps1
Eseguire la funzione del punto di ingresso di PowerShell:
Ad esempio, $> add or entry_func or main
Se il tuo script è denominato con l'estensione .ps1
e sei in una finestra di PowerShell, esegui semplicemente ./myscript.ps1
(assumendo che il file si trovi nella tua directory di lavoro).
Questo è vero per me comunque su Windows 10 con PowerShell versione 5.1 in ogni caso, e non credo di aver fatto nulla per renderlo possibile.
Nel caso in cui si desideri eseguire uno script PowerShell con l'Utilità di pianificazione di Windows, attenersi alla seguente procedura:
Crea un'attività
Imposta Program/Script
su Powershell.exe
Imposta Arguments
su -File "C:\xxx.ps1"
È da un'altra risposta, Come eseguo uno script PowerShell automaticamente usando l'utilità di pianificazione di Windows?.
Usa il parametro -File
davanti al nome del file. Le virgolette fanno sì che PowerShell pensi che sia una stringa di comandi.