PowerShell で デジタル署名されていないため実行できない時の対処

Uncategorized
534 words

今回 PowerShell で スクリプトを実行しようとしたところ、エラーで実行できませんでした。

1
ファイル ~ はデジタル署名されていません。このスクリプトは現在のシステムでは実行できません。スクリプトの実行および実行ポリシーの設定の詳細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。

PSSecurityException

「PSSecurityException」と言うエラーです。

原因

PowerShell のスクリプトの実行が、実行ポリシー によって許可されていないことが原因です。

対処方法

設定による 実行ポリシー の変更

Windows の設定画面から 実行ポリシー の変更をします。

スタートメニューから「設定」を選択して、Windows の設定画面を開きます。

設定

設定項目の中から「更新とセキュリティ」を選択します。

更新とセキュリティ

左メニューの中から「開発者向け」を選択します。

開発者向け

PowerShell 項目の 実行ポリシー の変更 にチェックを入れて「適用」を押せば完了です。

PowerShell実行ポリシーの変更

これで、デジタル署名されていない スクリプト も実行できるようになります。

元に戻す

上記方法で 実行ポリシー を変更した場合、Windows の設定画面からは戻せなくなります。

レジストリエディタ で対象のキーと値を削除して、デジタル署名されていない スクリプト を実行できなくします。

「Win」キーと「R」キーを押して、ファイル名を指定して実行ダイアログを開き「regedit」と入力し レジストリエディタ を起動します。

ファイル名を指定して実行

レジストリエディタ の アドレスバーに 下記パスを入力します。

1
コンピューター\HKEY_CURRENT_USER\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell

レジストリエディタ

「ExecutionPolicy」を選択して削除します。

レジストリエディタ

削除確認ダイアログが出るので「はい」を押せば レジストリ が削除されて、元の状態に戻ります。

値の削除の確認

おわりに

戻せるけど、レジストリエディタ を使うので 特別な理由が無い限り、無闇矢鱈と変更しない方がいいかもしれません。

自己責任でお願いします。