「Windows 10ミニTips」は各回の作成時点で最新のWindows 10環境を使用しています。
スクリプトの実行を抑止するWindows 10の設定
Windows PowerShellを起動すると「Execution_Policies」というエラーが発生することがある。実はWindows PowerShellではセキュリティの観点からスクリプトを実行する際の「ExecutionPolicy(実行ポリシー)」を設けている。Windows 10の既定ではスクリプトをRestricted(制限)しているため、個々のコマンドは実行可能だが、スクリプトの実行は許可していない。
スクリプトに関する設定変更は複数用意されている。一番簡単なのは「設定」を使う方法だ。以下の手順を実行すると、CurrentUser(現在のユーザー)の実行ポリシーが、ローカルスクリプトとリモート署名を持つスクリプトを許可するRemoteSigned(リモート署名済み)に変化する。
Windows PowerShellでは、実行ポリシーの範囲をMachinePolicy(グループポリシーによるマシンポリシー)、UserPolicy(グループポリシーによるユーザーポリシー)、Process(プロセス単位: 現在のWindows PowerShellセッションのみ)、CurrentUser(現在のユーザー: 設定をHKEY_CURRENT_USERに格納)、LocalMachine(ローカルマシン: 設定をHKEY_LOCAL_MACHINEに格納)の5段階に定めている。
ローカルマシンよりも現在のユーザー、現在のユーザーよりもプロセス単位の実行ポリシーを優先する仕組みだ。
なお、実行ポリシーとして指定できるのはRemoteSignedの他に、危険なスクリプトも実行できる「AllSigned」、一切ブロックしない「Bypass」、スクリプトにリモート署名を必要とする「RemoteSigned」、未定義状態に戻す「Undefined」、制限を設けないがイントラネットゾーンなどに置かれたスクリプト実行時は警告を発する「Unrestricted」がある。実行ポリシーに関する詳しい情報は公式ドキュメントも合わせて参照してほしい。