2012-11-03 22 views

risposta

8

Si può provare a impostare la politica del processo stesso.

powershell.exe -ExecutionPolicy bypass

+0

dei 3 tecniche che ho visto, questo è il più semplice. Lavora a casa, lavora in ufficio. – MatthewMartin

2

come su

$script = Get-Content .\test.ps1 
Invoke-Expression $script 
8

Se l'amministratore del dominio non è proibito, si può fare questo:

Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope CurrentUser 

Questo modifica il criterio di esecuzione predefinito per le sessioni di PowerShell eseguite dall'utente corrente, anziché impostandolo per tutti gli utenti sulla macchina.

Se invece desidera modificare il criterio di esecuzione solo per la sessione di PowerShell corrente, è possibile utilizzare questo comando:

Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process 

Tuttavia, se l'amministratore del dominio sta usando il "Turn on Script Execution" politica di gruppo, si vuole non essere in grado di modificare la tua politica di esecuzione. L'impostazione dei criteri di gruppo rende inefficace il cmdlet Set-ExecutionPolicy.

+0

Non saprei quale politica di gruppo è impostata dall'amministratore in ufficio. Mi chiedo se la politica arresta la tecnica Invoke-Expression e la tecnica -EncodedCommand, che consentono di eseguire il contenuto di un file di script senza modificare i criteri di esecuzione. – MatthewMartin

+0

Non penserei, ma non l'ho provato.Se PowerShell è abilitato, puoi sempre "eseguire" uno script semplicemente digitandolo nella riga di comando. L'obiettivo della politica di esecuzione non è proprio quello di fermare un determinato utente, è di impedire a un utente inconsapevole di eseguire accidentalmente script non sicuri. –

0

se si vuole avere un modo semplice per eseguire uno script myscript.ps1 dalla shell di Windows allora tutto ciò che serve è un pipistrello Runmyscript.bat con il seguente contenuto:

type myscript.ps1 | powershell - 

così semplice che mi fa chiedere perché non si può semplicemente eseguire il PS1, in primo luogo, ma ci andiamo.

Una versione generica che richiede userinput di digitare il nome dello script sarebbe:

set /p filename="Type name of script here: " 
type %filename% | powershell - 

Suppongo che se si voleva, si potrebbe anche scrivere uno script VBScript generico che si apre qualsiasi file in PowerShell utilizzando una finestra di dialogo utilizzando questo http://todayguesswhat.blogspot.co.uk/2012/08/windows-7-replacement-for.html

Problemi correlati