web-dev-qa-db-fra.com

PowerShell sur Windows 7: Set-ExecutionPolicy pour les utilisateurs réguliers

Je souhaite exécuter des scripts PowerShell sous Windows 7 en tant qu'utilisateur standard. Chaque fois que j'essaie, j'obtiens l'erreur suivante:

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

Tenter de résoudre via Set-ExecutionPolicy Unrestricted échoue:

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

Je peux courir le Set-ExecutionPolicy Unrestricted commande en tant qu'administrateur, mais cela ne semble pas se propager aux utilisateurs non-administrateurs.

Comment puis-je réussir à exécuter des scripts en tant que non-administrateur?

58
Dan Vinton

Si vous (ou un administrateur utile) utilisez Set-ExecutionPolicy en tant qu'administrateur, la stratégie sera définie pour tous les utilisateurs. (Je suggérerais "remoteSigned" plutôt que "sans restriction" par mesure de sécurité.)

NB: Sur un OS 64 bits, vous devez exécuter Set-ExecutionPolicy pour PowerShell 32 bits et 64 bits séparément.

62
Richard
Set-ExecutionPolicy Unrestricted -Scope CurrentUser

Cela définira la stratégie d'exécution pour l'utilisateur actuel (stockée dans HKEY_CURRENT_USER) plutôt que sur la machine locale (HKEY_LOCAL_MACHINE). Ceci est utile si vous n'avez pas le contrôle administratif sur l'ordinateur.

108
Stephen Jennings

Cela devrait résoudre votre problème, vous devriez essayer de lancer ce qui suit:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser 
0
John V Hobbs Jr