PowerShellで「このシステムでスクリプトの実行が無効になっています」エラーを修正する方法
Powershellは、Microsoftが開発および公開したタスク自動化および管理フレームワークです。 コマンドラインシェルと関連言語で構成されます。 ユーザーはプログラムで多数のコマンドレットを実行できます。 ただし、ごく最近、ユーザーがスクリプトを実行できず、「 このシステムでスクリプトの実行が無効になっています 」または「 このシステム でスクリプトの実行が無効になっています 」というエラーがPowershellに表示されるという報告が多く寄せられています。
この記事では、このエラーがトリガーされる理由と、永続的に修正するための実行可能な解決策について説明します。 競合を避けるために、手順を慎重かつ正確に実行してください。
「このシステムでスクリプトの実行が無効になっています」エラーの原因は何ですか?
複数のユーザーから多数のレポートを受け取った後、問題を調査することを決定しましたが、調査の結果、エラーは次の問題が原因であることが示唆されました。
- 無効なスクリプト: Powershellで実行するすべてのスクリプトは、動作するために信頼できるソースからのある程度の検証が必要です。 ただし、場合によっては、スクリプトに検証が含まれていても、アクセスが制限されているため、スクリプトの実行は停止されます。 問題は、Windowsには「実行ポリシー」があり、スクリプトを実行するためにスクリプトをバイパスする必要があるということです。 実行ポリシーが「制限」に設定されている場合、コンピューターでスクリプトを実行できません。
問題の性質について基本的な理解が得られたので、解決策に進みます。
解決策1:コードを追加する
実行ポリシーを変更する手間をかけずにコンピューターで特定のスクリプトを実行する場合は、いつでもポリシーにスクリプトアクセスを許可するコマンドにコードを追加できます。 そのために:
- 「 Windows 」+「 R 」を押して、実行プロンプトを開きます。
- 「 Powershell 」と入力し、「 Shift 」+「 Ctrl 」+「 Enter 」を同時に押して管理アクセスを許可します。
「Powershell」と入力し、「Shift」+「Alt」+「Enter」を押す - コマンドを入力して、次のコマンドのような特定のスクリプトを実行します。
c:\> powershell -ExecutionPolicy ByPass -File script.ps1
- 「 Enter 」を押して、問題が解決するかどうかを確認します。
解決策2:実行ポリシーを変更する
実行ポリシーは特定のスクリプトを実行するためにPowershellへのアクセスを提供するため、制限されている場合、すべてのスクリプトの実行がブロックされます。 状況に応じてポリシーを設定できるさまざまなモードがあります。 これらのモードは次のとおりです。
- 制限付き:このモードでは、コンピューターでスクリプトを実行できません。
- AllSigned:このモードを選択すると、信頼できる発行元によって署名されたポリシーのみがコンピューターで実行できます。
- RemoteSigned:ダウンロードされたすべてのスクリプトは、信頼できる発行元によって署名されている必要があります。
- 無制限:スクリプトに制限はありません。
実行ポリシーを設定できるレベルがわかったので、要件に応じて最適なものを簡単に選択できます。 実行ポリシーを変更するには:
- 「 Windows 」+「 R 」を押して、実行プロンプトを開きます。
- 「Powershell」と入力し、「 Shift 」+「 Ctrl 」+「 Enter 」を同時に押して管理アクセスを許可します。
「Powershell」と入力し、「Shift」+「Alt」+「Enter」を押す - 次のコマンドを入力し、Enterキーを押して実行します。
Set-ExecutionPolicy Remotesigned
注: 「 RemoteSigned 」という語は、上記のように必要なセキュリティレベルに置き換えられます。
- [ Y ]を押して[はい]を示すと、グループポリシーが目的のレベルに変更されます。
グループポリシーの変更 - 問題が解決しないか確認してください。