2011-01-10 8 views
53

Voglio eseguire script PowerShell su Windows   7 come utente normale. Ogni volta che provo, ottengo il seguente errore:PowerShell su Windows 7: Set-ExecutionPolicy per utenti regolari

File C:\Users\danv\Documents\WindowsPowerShell\profile.ps1 cannot be loaded because the 
execution of scripts is disabled on this system. Please see "get-help about_signing" for 
more details. 
At line:1 char:2 
+ . <<<< 'C:\Users\danv\Documents\WindowsPowerShell\profile.ps1' 
    + CategoryInfo   : NotSpecified: (:) [], PSSecurityException 
    + FullyQualifiedErrorId : RuntimeException 

tentativo di risolvere tramite Set-ExecutionPolicy Unrestricted fallisce:

PS C:\Users\danv> Set-ExecutionPolicy Unrestricted 
Set-ExecutionPolicy : Access to the registry key 
'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell' 
is denied. 
At line:1 char:20 
+ Set-ExecutionPolicy <<<< Unrestricted 
    + CategoryInfo   : NotSpecified: (:) [Set-ExecutionPolicy], UnauthorizedAccessException 
    + FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.SetExecutionPolicyCommand 

posso eseguire il comando Set-ExecutionPolicy Unrestricted come amministratore, ma questo non sembra propagarsi a non -amministratori utenti.

Come posso eseguire correttamente gli script come non amministratore?

risposta

60

Se l'utente (o un amministratore utile) esegue Set-ExecutionPolicy come amministratore, la politica verrà impostata per tutti gli utenti. (Suggerirei "remoteSigned" piuttosto che "illimitato" come misura di sicurezza.)

NB .: Su un sistema operativo a 64 bit è necessario eseguire Set-ExecutionPolicy per PowerShell a 32 bit e 64 bit separatamente.

+0

Ho provato questo - impostazione cose da 'Unrestricted' come amministratore non sembra cambiare nulla per la non amministratore ... –

+0

@DanVinton: Poi sta succedendo qualcos'altro. Suggerisci di nuovo l'impostazione come amministratore, quindi controlla 'Get-ExecutionPolicy' sia dall'amministratore che dalle normali shell. È possibile che la politica di gruppo stia annullando i tuoi desideri. – Richard

+0

Nella solita moda IT, avere qualcuno (proverbialmente) alle spalle lo ha risolto ... grazie! –

100
Set-ExecutionPolicy Unrestricted -Scope CurrentUser 

questo imposterà i criteri di esecuzione per l'utente corrente (memorizzata in HKEY_CURRENT_USER) anziché la macchina locale (HKEY_LOCAL_MACHINE). Questo è utile se non si ha il controllo amministrativo sul computer.

+2

Perfetto. Questo ha risolto il mio problema immediatamente. È un po 'frustrante per i nuovi utenti che PowerShell sia pubblicizzato come un linguaggio di scripting che per impostazione predefinita non consente gli script. –

+1

"Senza restrizioni"? Presta attenzione [alle implicazioni sulla sicurezza] (http://stackoverflow.com/questions/4037939/powershell-says-execution-of-scripts-is-disabled-on-this-system/26955050#26955050). –

0

Questo dovrebbe risolvere il problema, si dovrebbe cercare di eseguire il seguente sotto:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser