Come eseguire uno script di PowerShell


711

Come eseguo uno script di PowerShell?

  • Ho uno script chiamato myscript.ps1
  • Ho installato tutti i framework necessari
  • Ho impostato quella politica di esecuzione cosa
  • Ho seguito le istruzioni in questa pagina di aiuto di MSDN e sto cercando di eseguirlo in questo modo: powershell.exe 'C:\my_path\yada_yada\run_import_script.ps1'(con o senza --noexit)

che non restituisce esattamente nulla, tranne per il fatto che viene emesso il nome del file.

Nessun errore, nessun messaggio, niente. Oh, quando aggiungo-noexit , succede la stessa cosa, ma rimango in PowerShell e devo uscire manualmente.

Il file .ps1 dovrebbe eseguire un programma e restituire il livello di errore in base all'output di quel programma. Ma sono abbastanza sicuro di non esserci ancora arrivato.

Che cosa sto facendo di sbagliato?


2
Inizia powershellcome avresti iniziato cmd. Ora puoi eseguire lo myscript.ps1script come qualsiasi eseguibile presente in (nella finestra di PowerShell), ovvero.\myscript.ps1
parasrish,

Risposte:


732
  1. Avviare Windows PowerShell e attendere un momento che PSvenga visualizzato il prompt dei comandi
  2. Passare alla directory in cui risiede lo script

    PS> cd C:\my_path\yada_yada\ (enter)
  3. Esegui lo script:

    PS> .\run_import_script.ps1 (enter)

Cosa mi sto perdendo ??

Oppure: è possibile eseguire lo script PowerShell in cmd.exequesto modo:

powershell -noexit "& ""C:\my_path\yada_yada\run_import_script.ps1""" (enter)

secondo questo post del blog qui

Oppure potresti persino eseguire lo script di PowerShell dall'applicazione C # :-)

Eseguire in modo asincrono gli script di PowerShell dall'applicazione C #


19
Il link al tuo post sul blog lo ha fatto. Devo usare powershell -noexit "& "C:\yada_yada\run_import_script.ps1"(nota le tre doppie virgolette) Non capisco davvero perché, ma a questo punto, non mi interessa davvero :) Grazie mille!
Pekka,

16
Cosa fa esattamente "&?
BlueRaja - Danny Pflughoeft,

16
Secondo technet.microsoft.com/en-us/library/ee176949.aspx , '&' è per "Se si desidera effettivamente eseguire quel valore di stringa (vale a dire, se si desidera eseguire lo script il cui percorso è racchiuso in virgolette doppie) devi prefigurare il percorso con l'operatore Call (la e commerciale). "
Doug Dawson,

29
nessuno di questi ha funzionato per me fino a quando non ho ignorato la politica di esecuzione predefinita di PowerShell per il mio script non firmato appena creato. Tra le altre cose, ciò ha richiesto il riavvio di PowerShell come amministratore. Totalmente d'accordo con @LukePuplett - è geniale rendere il caso d'uso più semplice richiedere 20 minuti di googling e armeggiare. E i messaggi di errore! Apparentemente questi ragazzi lavoravano alla IBM ... negli anni '70.
Spike0xff

15
Come indicato in un commento di seguito, la politica di esecuzione deve essere ignorata. Uno degli elementi non discussi qui è come eseguire uno script PowerShell da una riga di comando passando un parametro. Per fare questo: digitarepowershell -executionpolicy bypass ".\myscript.ps1 yadayadayada"
Jim Lahman

230

Se si utilizza PowerShell 2.0, utilizzare il -Fileparametro PowerShell.exe per richiamare uno script da un altro ambiente, come cmd.exe. Per esempio:

Powershell.exe -File C:\my_path\yada_yada\run_import_script.ps1

5
C'è un modo per aggiungere parametri a tale invocazione?
Alexander Groß,

11
Dovresti essere in grado di tracciare gli arg dopo il percorso del file di script. Dall'utilizzo di PowerShell.exe - [-File <filePath> <args>]
Keith Hill

"non può essere caricato perché l'esecuzione degli script è disabilitata su questo sistema. Consultare" get-help about_signing "per maggiori dettagli."
Pavel Vlasov,

7
Se non hai abilitato l'esecuzione dello script PowerShell sul tuo sistema, aggiungi il parametro-ExecutionPolicy Bypass
Keith Hill,

4
Cordiali saluti, questo funziona anche con PowerShell 1.0 nella mia esperienza (Windows 2012 Server)
knocte

189

Se si desidera eseguire uno script senza modificare il criterio di esecuzione dello script predefinito, è possibile utilizzare l'opzione di bypass quando si avvia Windows PowerShell .

powershell [-noexit] -executionpolicy bypass -File <Filename>

11
Inoltre, includi l' -nologoopzione per sbarazzarti del banner di avvio
swdev,

73

Genere:

powershell -executionpolicy bypass -File .\Test.ps1

NOTA: ecco Test.ps1lo script di PowerShell.


Questo dovrebbe essere eseguito in una PowerShell poiché si powershell -executionpolicy bypass -File .\Test.ps1presume che la directory di lavoro corrente contenga Test.ps1
Yeow_Meng

29

Ho avuto lo stesso problema e ho provato e provato ... Finalmente ho usato:

powershell.exe -noexit "& 'c:\Data\ScheduledScripts\ShutdownVM.ps1'"

E metti questa linea in un file batch, e questo funziona.


22

Se hai solo PowerShell 1.0 , questo sembra fare abbastanza bene il trucco:

powershell -command - < c:\mypath\myscript.ps1

Inoltra il file di script alla riga di comando di PowerShell.


3
Trucco utile quando le politiche di sicurezza non consentono l'esecuzione di script.
Aron Lorincz,

17

Molto facile. Fare clic con il tasto destro del mouse sul file .ps1 in Windows e nel menu shell fare clic su Esegui con PowerShell .


Questo funziona per eseguire rapidamente uno script senza dover abilitare l'esecuzione di script con criteri di esecuzione. Grazie!
b01,

Questo è quello che stavo cercando, grazie!
Aamol,

11

Utilizzando 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 :

  1. Crea un collegamento puntato al prompt dei comandi (l'ho chiamato Prompt dei comandi amministrativi)
  2. Apri le proprietà del collegamento e vai alla scheda Compatibilità
  3. Nella sezione Livello di privilegio, assicurati che la casella di controllo accanto a "Esegui questo programma come amministratore" sia selezionata


10

Se lo script è denominato con l' .ps1estensione e ci si trova in una finestra di PowerShell, è sufficiente eseguire./myscript.ps1 (presupponendo che il file sia nella directory di lavoro).

Questo è vero per me comunque su Windows 10 con PowerShell versione 5.1 e non credo di aver fatto nulla per renderlo possibile.


2
Come risponde alla domanda?
Peter Mortensen,

4
risponde assolutamente alla domanda: come posso eseguire uno script PowerShell? risposta: avviare la console PowerShell, quindi eseguire lo script. facile. semplice. Funziona anche su Linux.
Giovedì

4
Questo risponde assolutamente alla domanda ed era esattamente quello che stavo cercando. come myscript.ps1non ha funzionato, ha gettato un errore, ma con la ./sua esecuzione.
Jeff

7
  • Indica il percorso dello script, ovvero l'impostazione del percorso tramite cmd:

    $> . c:\program file\prog.ps1

  • Esegui la funzione del punto di ingresso di PowerShell:

    Per esempio, $> add or entry_func or main


Esecuzione dei comandi da un prompt cmd: >$ . c:\program file\prog.ps1 '.' is not recognized as an internal or external command, operable program or batch file.e>$ add or entry_func or main 'add' is not recognized as an internal or external command, operable program or batch file.
Suncat2000


1

Utilizzare il -Fileparametro davanti al nome file. Le virgolette fanno pensare che PowerShell sia una stringa di comandi.


1

Ho una risposta molto semplice che funziona:

  1. Apri PowerShell in modalità amministratore
  2. Correre: set-executionpolicy unrestricted
  3. Apri una normale finestra di PowerShell ed esegui il tuo script.

Ho trovato questa soluzione seguendo il collegamento fornito come parte del messaggio di errore: Informazioni sui criteri di esecuzione

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.