私はpycharmのwindowsでpowershellをターミナルとして実行しようとしているので、次のことをしました:
ただし、これを試みると、スクリプトを実行できないと表示されるため、次のエラーが表示されます。SecurityError
および完全修飾IDはUnAuthorizedAccess
です。
これは、pycharmの端末がPowershell_profile.ps1
プロファイルファイルを実行できないという事実から生じます。
PowershellでPycharmのターミナルを正常に実行するにはどうすればよいですか?
これまで試してきたことは、%windir%/system32/WindowsPowerShell/1.0/profile.ps1
のようにメインのpowershellディレクトリに移動してから、次のように変更します。
Set-ExecutionPolicy Unrestricted
しかし、これは役に立ちません。pycharmのターミナルを開こうとすると、同じエラーが表示されます。
また、管理者としてpycharmを実行しようとしましたが、これでも問題は解決せず、前述のsameエラーが発生します。
Cmd.exeをより簡単な方法でpowershell.exeに置き換えました。 webstorm2017とWin10 OSを使用しています。
1. powershell.exe
の正確な場所を見つけます。私の場合、ほとんどのコンピューターではC:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
になると思います。パス全体をクリップボードにコピーします。
2。IDE Open File => Setting => Tools => Terminalで、パスを「シェルパス」の空白に貼り付けます。
3. IDEを再起動すると、すべてが正常になります。
Set-ExecutionPolicy Unrestricted -Scope CurrentUser
PowerShell実行可能ファイルを参照し、右クリックして管理者として実行します。
プロンプトから、試したのと同じコマンドを使用します。
Set-ExecutionPolicy Unrestricted
それが完了したら、PowerShellを閉じて、アプリケーションから再度使用を試みます。
注:デフォルトの実行ポリシーではスクリプトを実行できないため、スクリプトから実行ポリシーを設定することはできません。 (たとえそれがプロファイルスクリプトであっても-まだスクリプトです)
IntelliJ->設定->ターミナルでpowershell.exeのパスを更新しました
管理者モードでpowershellインスタンスを開きました。
実行済みSet-ExecutionPolicy Unrestricted -Scope CurrentUser
IntelliJを再起動し、問題は解決しました。
ステップ3は ebelangerの答え からのものです。
Default Shell TextBoxでは、次のように実行ポリシーのコマンドラインオプションを追加できます。
powershell.exe -Executionpolicy Unrestricted
Windows 8 x64で実行している場合、以下の両方のコマンドを実行すると役立つ場合があります。それは私のために働いた。
Set-ExecutionPolicy Unrestricted
start-job { Set-ExecutionPolicy Unrestricted -Force } -RunAs32
ここにあるコメントの功績: Windows 7のPowershell:一般ユーザー向けのSet-ExecutionPolicy
他の回答で述べたように、powershell.exe
IntelliJでの設定として→設定→ツール→ターミナル→シェルパスがUnAuthorizedAccess
エラーをスローします。これを解決する通常の方法は、実行ポリシーを変更することです。
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
Unrestricted
レベルは最も安全性が低いことに注意してください。手動でRemoteSigned
を削除するまで、Webからダウンロードした署名のないスクリプトを無効にするために、通常Internet
を使用できます。またはIntranet
Zone.Identifier
から、通常はファイルプロパティの[ロック解除]ボタンで。
ただし、実行ポリシーを変更できない場合があります。通常、これは、Active Directoryの企業セキュリティ設定によるものです。 PowerShellでは、これはスコープMachinePolicy
およびUserPolicy
に対応します。この状況の主な症状は、次のメッセージです。
Set-ExecutionPolicy:Windows PowerShellは実行ポリシーを正常に更新しましたが、設定はより具体的なスコープで定義されたポリシーによって上書きされます。オーバーライドにより、シェルはAllSignedの現在の有効な実行ポリシーを保持します。 「Get-ExecutionPolicy -List」と入力して、実行ポリシー設定を表示します。詳細については、「Get-Help Set-ExecutionPolicy」を参照してください。
PowerShellまたはgpedit.mscを使用して、このスコープで実行ポリシーを設定することはできません。レジストリでこの設定を直接変更しようとしても効果はありません。再起動またはログイン時に適用されますが、同時にActive Directoryから再インポートされます。ただし、手動でのみ変更されるプロファイルやその他のローカルスクリプトについては、任意のPowerShellスクリプトを随時実行することはできませんが、 まだ解決策はあります :
PowerShellで次のコマンドを実行して、証明書ファイルroot.pvkおよびroot.cerを作成します。証明書のパスワードを定義してから確認するように求められます。
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
同じフォルダーで、次のコマンドを実行して、生成された証明書ファイルを自己署名証明書としてインポートします。上記で定義したパスワードを要求します。
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
次のコマンドを使用してプロファイルスクリプトに署名します。
Set-AuthenticodeSignature "[script path]" @(Get-ChildItem cert:\CurrentUser\My -codesign)[0]
自己証明書で初めて署名されたスクリプトを実行するとき、PowerShellは次のように証明書の信頼について尋ねます。
ファイル[スクリプトパス]はCN = PowerShellユーザーによって公開されます。この発行元はシステムで信頼されていません。信頼できる発行元からのスクリプトのみを実行してください。
[V]実行しない[D]実行しない[R]一度実行する[A]常に実行する[?]ヘルプ(デフォルトは「D」)
常に自己署名証明書を実行するには、A
と答えてください。
これで、プロファイルスクリプトでエラーが発生しなくなりました。ただし、証明書に署名すると、そのハッシュを含むスクリプトの最後に署名ブロックが追加されることに注意してください。スクリプトを変更しようとしている場合は、そのブロックを削除し、スクリプトの編集が完了したら、手順3を繰り返して再度署名します。
この記事の執筆時点(2018-9-20)では、PowerShellプラグインが利用可能になりました here 。
私はPyCharm v2018.2.3(Professional)にv1.1をインストールしました。
このプラグインは、PS1スクリプトのIntellisenseタイプのサポートと、統合されたPowerShellターミナルを提供します。ターミナルを開くには、[ツール]> [PowerShellコンソール...]に移動します。
動作させるために、あらゆる種類の設定や許可をいじる必要はないようです。それはちょうど動作します。