信頼できる発行者によって署名されていない PowerShell スクリプトを実行しようとすると、次のセキュリティ エラーが発生することがあります:
“script.ps1 :File pathscript.ps1 cannot be loaded. ファイルpathscript.ps1はデジタル的に署名されていません。 現在のシステムでは、このスクリプトを実行できません。”
このセキュリティエラーは、PowerShell の実行ポリシーが Allsigned または Remotesigned に設定されており、スクリプトが署名されていない場合に発生する可能性があります。 スクリプトを実行する前に、スクリプトに署名した発行者を信頼するかどうかを確認するよう求められます。
リモート実行ポリシーでは、ダウンロードしたスクリプトのうち署名されていないものの実行が制限されます。 ローカル コンピューターから実行されるスクリプトは署名する必要はありません。
解決策
このエラーを克服するには、さまざまな方法があります。 PowerShell スクリプトに署名する、実行ポリシーを変更する、ポリシーをバイパスする、またはファイルのブロックを解除してそのセッションで一度だけ実行できるようにする、などの方法があります。
実行ポリシーの確認
まず最初に、Get-ExecutionPolicy
PS C:\> Get-ExecutionPolicyAllSigned
コマンドレットのリストパラメーターは、各スコープに対する実行ポリシーを教えてくれます。 Windows 2012 R2のデフォルトの実行ポリシーはRemoteSignedです。
Changing Execution Policy Permanently
このエラー メッセージを取り除く最も簡単ですが安全でない方法は、SetExecutionPolicyコマンドレットを使用してExecutionPolicyを変更する方法です。 次のコマンドは、実行ポリシーを無制限に設定します。
PS C:\> Set-ExecutionPolicy unrestricted
プロンプトが表示されたら、Y を押して変更を確認します。 ポリシーの変更はレジストリで更新され、再度変更するまで残ります。
Changing Execution Policy Temporarily
永久的に実行ポリシーを変更する代わりに、単一の PowerShell セッションに異なるポリシーを設定することができます。 これは、powershell.exe
の ExecutionPolicy パラメータを使用して行います。
C:\> powershell.exe -executionpolicy -bypass
上記のコマンドは、そのセッションの実行ポリシーを Bypass に設定した PowerShell セッションを開き、何もブロックされないことを意味します。
ダウンロードしたファイルのブロックを解除する
実行ポリシーがRemoteSignedの場合、安全でないスクリプトを実行しないように、インターネットからダウンロードしたファイル(または電子メール)はブロックされます。 スクリプトの内容が安全であると信じる場合、Unblock-Fileコマンドレット
PS C:\> Unblock-File -Path C:\Downloads\script1.ps1
セッションまたは特定のスクリプトの実行ポリシーを永久的または一時的に変更した後、スクリプトを引き続き実行できますが、その前にスクリプトの内容がコンピューターに損害を与えないことを確認する必要があります
。