J'essaye de lancer un cmd fichier qui appelle un PowerShellscript cmd.exe
, et je reçois l'erreur ci-dessous:
Management_Install.ps1
ne peut pas être chargé car l'exécution des scripts est désactivée sur ce système.
j'ai couru
Set-ExecutionPolicy -ExecutionPolicy Unrestricted
et quand je lance Get-ExecutionPolicy
dePowerShell, Je Unrestricted
reviens.
PS C:\Users\Administrator\> Get-ExecutionPolicy
Unrestricted
C:\Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts\> powershell .\Management_Install.ps1 1
WARNING: Running x86 PowerShell...
Impossible de
C:\Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts\Management_Install.ps1
charger le fichier car l'exécution des scripts est désactivée sur ce système. Veuillez voir "get-help about_signing
" pour plus de détails.À la ligne: 1 caractère: 25
.\Management_Install.ps1
<<<< 1
CategoryInfo: NotSpecified: (:) [], PSSecurityException
FullyQualifiedErrorId: RuntimeException
C:\Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts\> PAUSE
Press any key to continue . . .
Le système est Windows Server 2008R2.
Qu'est-ce que je fais mal?
Get-ExecutionPolicy -List
.Réponses:
Si vous utilisez Windows Server 2008 R2, il existe une version x64 et x86 de PowerShell qui doivent toutes deux avoir leurs stratégies d'exécution définies. Avez-vous défini la stratégie d'exécution sur les deux hôtes?
En tant qu'administrateur , vous pouvez définir la stratégie d'exécution en la tapant dans votre fenêtre PowerShell:
Pour plus d'informations, voir Utilisation de l'applet de commande Set-ExecutionPolicy .
Lorsque vous avez terminé, vous pouvez rétablir la valeur par défaut de la stratégie avec:
la source
Set-ExecutionPolicy Restricted
semble être le moyen de l'annuler si vous souhaitez remettre les autorisations telles qu'elles étaient: technet.microsoft.com/en-us/library/ee176961.aspx . La méthode de contournement temporaire@Jack Edmonds
me semble plus sûre:powershell -ExecutionPolicy ByPass -File script.ps1
Get-ExecutionPolicy -List
qui m'a permis de voir les différents champs d' application. Le cmdGet-ExecutionPolicy
ne montre pas tous les champs d' application.Import-Module SQLPS
Travaille maintenant avec les politiques ont évolué comme suit:{Undefined- Process,MachinePolicy,UserPolicy,}; {RemoteSigned- CurrentUser, LocalMachine}
.Vous pouvez contourner cette stratégie pour un seul fichier en l'ajoutant
-ExecutionPolicy Bypass
lors de l'exécution de PowerShellla source
%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy ByPass
ma barre des tâches.type script.ps1 | powershell -
fonctionne cependant..ps1
et d'exécuter accidentellement quelque chose qu'ils ne voulaient pas. Cela se produirait avec les.bat
fichiersJ'ai eu un problème similaire et j'ai noté que la valeur par défaut
cmd
sur Windows Server 2012 , exécutait celle x64.Pour Windows 7 , Windows 8 , Windows 10 , Windows Server 2008 R2 ou Windows Server 2012 , exécutez les commandes suivantes en tant qu'administrateur :
x86 (32 bits)
Ouvrir
C:\Windows\SysWOW64\cmd.exe
Exécuter la commande
powershell Set-ExecutionPolicy RemoteSigned
x64 (64 bits)
Ouvrir
C:\Windows\system32\cmd.exe
Exécuter la commande
powershell Set-ExecutionPolicy RemoteSigned
Vous pouvez vérifier le mode en utilisant
echo %PROCESSOR_ARCHITECTURE%
[Environment]::Is64BitProcess
Références:
MSDN - Stratégies d'exécution Windows PowerShell
Windows - Explication du répertoire 32 bits vs 64 bits
la source
La plupart des réponses existantes expliquent le comment , mais très peu expliquent le pourquoi . Et avant de vous lancer dans l'exécution de code d'inconnus sur Internet, en particulier de code qui désactive les mesures de sécurité, vous devez comprendre exactement ce que vous faites. Voici donc un peu plus de détails sur ce problème.
Sur la page À propos des stratégies d'exécution de TechNet :
Les avantages énumérés par PowerShell Basics - Execution Policy and Code Signing sont les suivants:
Pour vérifier votre stratégie d'exécution actuelle, vous pouvez exécuter
Get-ExecutionPolicy
. Mais vous êtes probablement ici parce que vous voulez le changer.Pour ce faire, vous exécutez l'
Set-ExecutionPolicy
applet de commande.Vous aurez deux décisions importantes à prendre lors de la mise à jour de la politique d'exécution.
Type de politique d'exécution:
Restricted
† - Aucun script local, distant ou téléchargé ne peut être exécuté sur le système.AllSigned
- Tous les scripts exécutés doivent être signés numériquement.RemoteSigned
- Tous les scripts distants (UNC) ou téléchargés doivent être signés.Unrestricted
- Aucune signature pour aucun type de script n'est requise.Portée du nouveau changement
LocalMachine
† - La politique d'exécution affecte tous les utilisateurs de l'ordinateur.CurrentUser
- La politique d'exécution affecte uniquement l'utilisateur actuel.Process
- La stratégie d'exécution affecte uniquement le processus Windows PowerShell en cours.† = Par défaut
Par exemple : si vous vouliez changer la stratégie en RemoteSigned pour le CurrentUser uniquement, vous exécuteriez la commande suivante:
Remarque : Pour modifier la stratégie d'exécution, vous devez exécuter PowerShell en tant qu'administrateur . Si vous êtes en mode normal et essayez de modifier la stratégie d'exécution, vous obtiendrez l'erreur suivante:
Si vous souhaitez resserrer les restrictions internes sur vos propres scripts qui n'ont pas été téléchargés depuis Internet (ou du moins ne contiennent pas les métadonnées UNC), vous pouvez forcer la stratégie à exécuter uniquement des sripts signés. Pour signer vos propres scripts, vous pouvez suivre les instructions de l'article de Scott Hanselman sur la signature de scripts PowerShell .
Remarque : La plupart des gens sont susceptibles d'obtenir cette erreur chaque fois qu'ils ouvrent Powershell car la première chose que PS essaie de faire lors de son lancement est d'exécuter votre script de profil utilisateur qui configure votre environnement comme vous l'aimez.
Le fichier se trouve généralement dans:
Vous pouvez trouver l'emplacement exact en exécutant la variable PowerShell
Si vous ne vous souciez de rien dans le profil et que vous ne voulez pas vous soucier de vos paramètres de sécurité, vous pouvez simplement le supprimer et PowerShell ne trouvera rien qu'il ne puisse pas exécuter.
la source
Get-Content .\MyFile.ps1 | powershell.exe -NoProfile -
.-ExecutionPolicy ByPass
, quel est le but de cette politique de toute façon? Est-ce juste pour empêcher les utilisateurs d'ouvrir accidentellement une console PowerShell et d'exécuter un script malveillant? L'attaquant ne pourrait-il pas simplement utiliser un exécutable ou un script batch s'il voulait contourner cela? Même après avoir lu le commentaire de @BaconBits, je ne sais pas trop quel scénario cette politique est censée empêcher ...Sous Windows 7:
Accédez au menu Démarrer et recherchez «Windows PowerShell ISE».
Cliquez avec le bouton droit sur la version x86 et choisissez «Exécuter en tant qu'administrateur».
Dans la partie supérieure, collez
Set-ExecutionPolicy RemoteSigned
; exécutez le script. Choisissez "Oui".Répétez ces étapes pour la version 64 bits de Powershell ISE (la version non x86).
Je clarifie simplement les étapes auxquelles @Chad Miller a fait allusion. Merci Chad!
la source
L'exécution de cette commande avant que le script ne résout également le problème:
la source
RemoteSigned
avant de supprimer toutes les restrictions sur votre stratégie de sécurité. Si cela ne fonctionne pas, réévaluez vos problèmes de douleur et pourquoi cela ne fonctionne pas. Vous pouvez définirunrestricted
en dernier recours, mais cela ne devrait pas être votre point de départ.Remotesigned
.Si vous êtes dans un environnement où vous n'êtes pas administrateur, vous pouvez définir la politique d'exécution juste pour vous et elle ne nécessitera pas d'administrateur.
ou
Vous pouvez tout lire à ce sujet dans la rubrique d'aide.
la source
Set-ExecutionPolicy Unrestricted
en tant qu'administrateur ne semble pas "suffisamment restreint" pour vraiment aider.RemoteSigned: tous les scripts que vous avez créés vous-même seront exécutés et tous les scripts téléchargés sur Internet devront être signés par un éditeur de confiance.
OK, changez la politique en tapant simplement:
la source
Nous pouvons obtenir l'état du courant
ExecutionPolicy
par la commande ci-dessous:Par défaut, il est restreint . Pour permettre l'exécution de scripts PowerShell, nous devons définir cette ExecutionPolicy soit en contournant, soit sans restriction .
Nous pouvons définir la stratégie pour l'utilisateur actuel en utilisant
Bypass
ouUnrestricted
en utilisant l'une des commandes PowerShell ci-dessous:La politique sans restriction charge tous les fichiers de configuration et exécute tous les scripts. Si vous exécutez un script non signé qui a été téléchargé à partir d'Internet, vous êtes invité à demander l'autorisation avant de s'exécuter.
Alors que dans la stratégie de contournement , rien n'est bloqué et il n'y a aucun avertissement ou invite pendant l'exécution du script. Le contournement
ExecutionPolicy
est plus détendu queUnrestricted
.la source
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Bypass -Force;
AKA moyen rapide et sale de dire à VS2015 d'arrêter de se plaindre et d'exécuter mon script sanglant. Merci. bouée de sauvetage.J'utilise Windows 10 et je n'ai pas pu exécuter de commande. La seule commande qui m'a donné quelques indices était la suivante:
[x64]
Mais cela n'a pas fonctionné. C'était limité. Probablement de nouvelles politiques de sécurité pour Windows10. J'ai eu cette erreur:
J'ai donc trouvé un autre moyen ( solution ):
Maintenant, ouvrez PowerShell et profitez;)
la source
Set-ExecutionPolicy RemoteSigned
Unrestricted
. Il est préférable de l'utiliserRemoteSigned
La définition de la politique d'exécution est spécifique à l'environnement. Si vous essayez d'exécuter un script à partir de l' ISE x86 en cours d'exécution, vous devez utiliser le PowerShell x86 pour définir la stratégie d'exécution. De même, si vous exécutez l'ISE 64 bits, vous devez définir la stratégie avec PowerShell 64 bits.
la source
Win+ Ret tapez la commande copier-coller et appuyez sur OK:
Et exécutez votre script.
Puis annulez les modifications comme:
la source
Vous pouvez également contourner cela en utilisant la commande suivante:
Vous pouvez également lire cet article de Scott Sutherland qui explique 15 façons différentes de contourner PowerShell
Set-ExecutionPolicy
si vous ne disposez pas des privilèges d'administrateur:15 façons de contourner la stratégie d'exécution PowerShell
la source
la source
vous pouvez essayer ceci et sélectionner l'option "Tous"
la source
Dans l' éditeur PowerShell ISE , j'ai trouvé que l'exécution des premiers scripts autorisés de la ligne suivante.
la source
Dans PowerShell 2.0, la stratégie d'exécution a été définie sur désactivé par défaut.
Depuis lors, l'équipe PowerShell a apporté de nombreuses améliorations, et elle est convaincue que les utilisateurs ne casseront pas grand-chose lors de l'exécution de scripts. Donc, à partir de PowerShell 4.0, il est activé par défaut.
Dans votre cas, tapez à
Set-ExecutionPolicy RemoteSigned
partir de la console PowerShell et dites oui.la source
J'ai eu le même problème aujourd'hui. La stratégie d'exécution 64 bits n'était pas restreinte, tandis que 32 bits était restreinte.
Voici comment modifier à distance uniquement la stratégie 32 bits:
la source
Accédez au chemin de registre
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell
et définissezExecutionPolicy
surRemoteSigned
.la source
Je reçois un autre avertissement lorsque j'essaie de courir
Set-ExecutionPolicy RemoteSigned
J'ai résolu avec ces commandes
la source
Si vous êtes ici en raison de son exécution avec Ruby ou Chef et en utilisant `` l'exécution du système, exécutez comme suit:
Cette commande sert à obtenir le dossier "MyDocuments".
-ExecutionPolicy Unrestricted
fait l'affaire.J'espère que c'est utile pour quelqu'un d'autre.
la source
Plusieurs réponses indiquent une politique d'exécution. Cependant, certaines choses nécessitent également un "administrateur runas". C'est le plus sûr dans la mesure où il n'y a pas de modification permanente de la politique d'exécution et qui peut passer les restrictions d'administrateur antérieures. Utilisez avec schedtask pour démarrer un lot avec:
de Jack Edmonds ci-dessus, et Peter Mortensen / Dhana de poste Comment exécuter une application en tant que "exécuter en tant qu'administrateur" à partir de l'invite de commande?
la source
J'ai trouvé que cette ligne fonctionnait mieux pour l'un de mes serveurs Windows Server 2008 R2. Quelques autres n'ont eu aucun problème sans cette ligne dans mes scripts PowerShell:
la source
Ouvrez la console Powershell en tant qu'administrateur, puis définissez la stratégie d'exécution
la source
Vous pouvez utiliser un moyen spécial pour le contourner:
Il redirige le contenu du script powershell vers powershell.exe et l'exécute en contournant la stratégie d'exécution.
la source
Cela a résolu mon problème
Ouvrez la
PowerShell
commande Windows et exécutez la requête ci-dessous pour modifierExecutionPolicy
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
s'il vous demande de confirmer les modifications, appuyez sur 'Y' et appuyez sur Entrée.
la source
Exécuter la
Set-ExecutionPolicy RemoteSigned
commandela source
utilisez cette commande
la source
Ouvrez cmd au lieu de PowerShell. Cela m'a aidé ...
la source
Ouvrez la fenêtre PowerShell en tant qu'administrateur . Ça va marcher.
la source