web-dev-qa-db-fra.com

Utilisation de Powershell comme terminal dans IntelliJ IDEA IDE comme PyCharm, PHPStorm ou RubyMine

J'ai essayé d'exécuter PowerShell comme mon terminal sur Windows dans pycharm, j'ai donc fait ce qui suit:

enter image description here

Cependant, quand j'essaye ceci, il indique qu'il ne peut pas exécuter mes scripts, et par conséquent j'obtiens l'erreur suivante: SecurityError et l'ID entièrement qualifié est: UnAuthorizedAccess.

Cela vient du fait que le terminal de pycharm ne peut pas exécuter mon Powershell_profile.ps1 fichier de profil.

Comment exécuter avec succès le terminal de Pycharm avec Powershell?

Ce que j'ai essayé jusqu'à présent, va dans mon répertoire PowerShell principal comme dans %windir%/system32/WindowsPowerShell/1.0/profile.ps1, puis modifiez-le pour inclure les éléments suivants:

Set-ExecutionPolicy Unrestricted

Cependant, cela n'aide pas et j'obtiens la même erreur lorsque j'essaie d'ouvrir le terminal de pycharm.

J'ai également essayé d'exécuter pycharm en tant qu'administrateur, mais cela ne résout pas non plus le problème, et j'obtiens l'erreur identique susmentionnée.

37
Games Brainiac

J'ai remplacé cmd.exe par powershell.exe d'une manière plus simple et j'espère que cela peut aider. J'utilise webstorm2017 et Win10 os.

1.Trouvez l'emplacement exact de powershell.exe. Dans le mien et je crois que dans la plupart des ordinateurs, l'emplacement serait C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe. Copiez le chemin entier dans votre presse-papiers.

2.Dans votre IDE ouvrez Fichier => Paramètre => Outils => Terminal, et collez le chemin dans le "Chemin du shell" vide.

3.Redémarrez le IDE et tout irait bien.

30
Halt
Set-ExecutionPolicy Unrestricted -Scope CurrentUser
19
ebelanger

Accédez à l'exécutable PowerShell, cliquez avec le bouton droit, exécutez en tant qu'administrateur.

Dans l'invite, utilisez la même commande que vous avez essayée:

Set-ExecutionPolicy Unrestricted

Une fois cela fait, fermez PowerShell et essayez de le réutiliser à partir de votre application.

Remarque: Vous ne pouvez pas définir la politique d'exécution à partir d'un script, car la politique d'exécution par défaut vous empêche d'exécuter des scripts. (même si c'est le script de profil - toujours un script)

9
Calvin Allen
  1. J'ai mis à jour le chemin powershell.exe dans IntelliJ -> Paramètres -> Terminal

  2. Ouverture d'une instance PowerShell en mode Admin.

  3. Réalisé Set-ExecutionPolicy Unrestricted -Scope CurrentUser

  4. Redémarrage d'IntelliJ et le problème a été résolu.

L'étape 3 est de réponse de ebelanger .

Screenshot of application settings. Shows the Shell path, the Tab name (Local), and all the options below are checked.

5
John

Dans la zone de texte par défaut du shell, vous pouvez ajouter l'option de ligne de commande de la stratégie d'exécution comme suit:

powershell.exe -Executionpolicy Unrestricted

4
akwebb1

Si vous utilisez Windows 8 x64, l'exécution des deux commandes ci-dessous peut vous aider. Ça a marché pour moi.

Set-ExecutionPolicy Unrestricted
start-job { Set-ExecutionPolicy Unrestricted -Force } -RunAs32

Crédit à un commentaire trouvé ici: Powershell sur Windows 7: Set-ExecutionPolicy pour les utilisateurs réguliers

3
kraihn

Comme mentionné dans d'autres réponses, si après avoir défini powershell.exe comme votre terimal dans IntelliJ → Paramètres → Outils → Terminal → Chemin du shell qu'il lance UnAuthorizedAccess erreurs, la manière normale de résoudre ce problème consiste à modifier la politique d'exécution:

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

Notez que le niveau Unrestricted est le moins sûr de tous, et vous pouvez généralement utiliser RemoteSigned afin de désactiver les scripts non signés téléchargés à partir du Web jusqu'à ce que vous supprimiez manuellement Internet ou IntranetZone.Identifier d'eux, généralement avec le bouton Déverrouiller dans les propriétés du fichier.

Cependant, vous pouvez vous présenter à une occasion où vous ne pouvez pas modifier la stratégie d'exécution. Cela est généralement dû aux paramètres de sécurité de l'entreprise dans Active Directory. Dans PowerShell, cela correspond aux étendues MachinePolicy et UserPolicy. Un des principaux symptômes de cette situation est le message suivant:

Set-ExecutionPolicy: Windows PowerShell a correctement mis à jour votre stratégie d'exécution, mais le paramètre est remplacé par une stratégie définie à une portée plus spécifique. En raison de la substitution, votre Shell conservera sa politique d'exécution effective actuelle d'AllSigned. Tapez "Get-ExecutionPolicy -List" pour afficher vos paramètres de stratégie d'exécution. Pour plus d'informations, veuillez consulter "Get-Help Set-ExecutionPolicy".

Vous ne pouvez pas définir de stratégies d'exécution sur ces étendues avec PowerShell ou gpedit.msc. Les tentatives de modification de ces paramètres directement dans le registre sont également inefficaces: elles sont appliquées au redémarrage ou à la connexion, mais en même temps, elles sont réimportées depuis Active Directory. Cependant, bien que vous ne puissiez pas exécuter des scripts PowerShell arbitraires tout autour, pour les profils et autres scripts locaux qui ne sont modifiés que manuellement il y a toujours une solution :

  1. Exécutez la commande suivante dans PowerShell pour créer les fichiers ceritificate root.pvk et root.cer - il vous demandera de définir puis de confirmer le mot de passe du certificat:

    makecert -n "CN=PowerShell Local Certificate Root" -a sha1 -eku 1.3.6.1.5.5.7.3.3 -r -sv root.pvk root.cer -ss Root -sr localMachine
    
  2. Dans le même dossier, exécutez la commande suivante pour importer les fichiers de certificat générés en tant que certificat auto-signé - il vous demandera le mot de passe défini ci-dessus:

    makecert -pe -n "CN=PowerShell User" -ss MY -a sha1 -eku 1.3.6.1.5.5.7.3.3 -iv root.pvk -ic root.cer
    
  3. Signez votre script de profil avec la commande suivante:

    Set-AuthenticodeSignature "[script path]" @(Get-ChildItem cert:\CurrentUser\My -codesign)[0]
    
  4. Lorsque vous exécutez un script signé avec l'auto-certification pour la première fois, PowerShell vous demandera de faire confiance au certificat comme ceci:

    Le fichier [chemin du script] est publié par CN = PowerShell User. Cet éditeur n'est pas approuvé sur votre système. Exécutez uniquement les scripts des éditeurs de confiance.

    [V] Ne jamais exécuter [D] Ne pas exécuter [R] Exécuter une fois [A] Toujours exécuter [?] Aide (la valeur par défaut est "D")

    Répondez A pour toujours exécuter des certificats auto-signés.

Maintenant, votre script de profil ne causera aucune erreur. Cependant, notez que la signature d'un certificat ajoute un bloc de signature à la fin de votre script contenant son hachage. Si vous êtes sur le point de modifier le script, supprimez ce bloc et, une fois la modification du script terminée, signez-le à nouveau en répétant l'étape 3.

1
P. Frolov

Au moment d'écrire ces lignes (2018-9-20), un plugin PowerShell est désormais disponible ici .

J'ai installé la v1.1 dans PyCharm v2018.2.3 (Professional), et cela semble fonctionner comme un charme, sans jeu de mots.

Ce plugin fournit une prise en charge de type Intellisense des scripts PS1, ainsi qu'un terminal PowerShell intégré. Pour ouvrir le terminal, allez dans Outils> Console PowerShell ...

Il ne semble pas nécessaire de se moquer de tout type de paramètres ou d'autorisations pour le faire fonctionner. Ça marche.

1
John Dibling

Pour WebStorm et PowerShell 6+ sur Windows 10. Suivez simplement cette capture d'écran et changez le cmd.exe par défaut en pwsh.exe dans les paramètres. Redémarrez enfin l'ide. Terminé!

enter image description here

0
sybozz