PowerShellスクリプトが実行できない anchor.png

PowerShell用のスクリプトファイルを実行した時,以下のようなエラーがで実行出来ない。

D:\home\ueno> PowerShell .\test.ps1
.\test.ps1 : このシステムではスクリプトの実行が無効になっているため、ファイル D:\home\ueno\test.ps1 を読み込むことができません。詳細については,「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。
発生場所 行:1 文字:1
+ .\test.ps1
+ ~~~~~~~~~~
    + CategoryInfo          : セキュリティ エラー: (: ) []、PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

このエラーが発生する原因は,PowerShellのスクリプトの実行が実行ポリシーによって許可されていないことが原因。
Windows10のディフォルトだと,許可されていないようだ。

以下のコマンドで,PowerShellのスクリプトの実行ポリシーについて確認が出来る。

D:\home\ueno> PowerShell Get-ExecutionPolicy
Restricted

デフォルトではこのようにRestrictedという実行ポリシーとなっている。
この設定状態だと,すべてのスクリプトの実行が制限されていることになる。

実行ポリシーとしては,以下の状態がある。

実行ポリシー署名あり署名なし/ローカル署名なし/非ローカル説明
Restrictedすべてのスクリプトの実行を制限 (初期設定)
AllSigned署名のあるスクリプトのみ実行可能
RemoteSignedローカル上のスクリプトと非ローカル上の署名のあるスクリプトのみ実行可能
Unrestrictedすべてのスクリプトが実行可能だが非ローカル上のスクリプトは実行時に許可が必要
Bypassすべてのスクリプトが実行可能
Page Top

実行できるようにする anchor.png

実行できるように対処するには,以下の2つの方法がある。

  1. ExecutionPolicyオプションによる実行ポリシーの変更
    PowerShellのスクリプトの実行時に引数へExecutionPolicyを指定して実行する。
    D:\home\ueno> PowerShell -ExecutionPolicy RemoteSigned .\test.ps1
    test
    実行するスクリプトに対してのみ,指定した実行ポリシーが適用される。
  2. Set-ExecutionPolicyで実行ポリシーの変更を行う(恒久的)
    実行ポリシーを,恒久的に変更する。
    この操作はシステム全体に影響を与えので,管理者権限が必要となる。
    D:\home\ueno> PowerShell Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
    D:\home\ueno> PowerShell .\test.ps1
    test
    以降は指定した実行ポリシーが常に適用されるようになる。
Page Top

スコープについて anchor.png

実行ポリシーには適用範囲であるスコープがある。 上記のSet-ExecutionPolicyではScopeオプションを指定して適用範囲とともに設定を行います。

スコープ適用範囲
Process実行ポリシーは現在のWindows PowerShellプロセスにのみ影響します。
CurrentUser実行ポリシーは現在のユーザーにのみ影響します。
LocalMachine実行ポリシーはコンピューターのすべてのユーザーに影響します。
Page Top

実行ポリシーの設定値はどこに保存されるのか anchor.png

実行ポリシーの保存先は,設定のスコープによって変わる。

スコープ保存場所
Process環境変数PSExecutionPolicyPreference (プロセス起動時にシステムが付与する環境変数設定ではなく,プロセス内部で処理されるもの)
CurrentUserレジストリHEKY_CURRENT_USER:\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShellのExecutionPolicy
LocalMachineレジストリHKEY_LOCAL_MACHINE:\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShellのExecutionPolicy

Processでは環境変数にセットされるので注意する。


新しくコメントをつける

題名
ゲスト名
投稿本文
より詳細なコメント入力フォームへ

トップ   凍結 差分 バックアップ 複製 名前変更 リロード   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom
Counter: 85, today: 1, yesterday: 0
最終更新: 2023-11-07 (火) 15:20:48 (JST) (173d) by yuji