PowerShellスクリプトを動かすための設定
公開日 更新日 2017/08/15
PowerShellは最近のWindowsで追加されたスクリプト言語で、今のWindowsなら一緒にインストールされてます。
PowerShellはBATファイルで記述する以上の複雑な事ができるため是非使い慣れておきたいところです。
PowerShellを使う場合、まず一番最初に、PowerShellを記述した拡張子PS1(テキスト形式)のファイルが実行できなくてつまづいてしまいがち。
最近、仕事で使う機会ができたということもあって何度も調べるのは億劫なため、PS1ファイルを実行させるための準備について簡単にまとめたいと思います。
なお本記事では、主に個人での利用として、ローカルに設置したPS1ファイルの実行を想定した内容ですので、以下の設定は省略しています。
- 署名をつけることで信頼のあるスクリプトの正当性の確認
- リモートやローカルの動作上の相違検証
こちらは、記事中で紹介した参考サイトに詳しい記載はありました。
Contents
実行ポリシーによる実行結果の違い
早速ですが、実行ポリシーが本件に影響するポイントのようで、この点について以下のサイトを参考にさせてもらいました。
つまり、実行ポリシーがきちんと設定されていないとPS1ファイルは実行できません。
またWindowsをインストールした直後のデフォルト値は動作しない設定になっているものだから、最初につまずくポイントになってしまっているんですね。
これを表にまとめると、こういうことなんだと思います。
実行ポリシー | 署名 | スクリプトの場所 | 実行結果 |
---|---|---|---|
Restricted | あり | ローカル | エラー |
リモート | |||
なし | ローカル | ||
リモート | |||
AllSigned | あり | ローカル | 実行OK |
リモート | |||
なし | ローカル | エラー | |
リモート | |||
RemoteSigned | あり | ローカル | 実行OK |
リモート | |||
なし | ローカル | ||
リモート | エラー | ||
Unrestricted | あり | ローカル | 実行OK |
リモート | 実行OK(確認つき) | ||
なし | ローカル | 実行OK | |
リモート | 実行OK(確認つき) |
かいつまんで順に見て行きたいと思います。
Restricted
Restricted – 実行できるスクリプトはありません。Windows PowerShell は対話型モードでのみ使用できます。
すべてのPS1ファイルの実行が禁止されているため、何も出来ない設定。これがWindowsのデフォルト値です。
AllSigned
AllSigned – 信頼できる発行元が署名したスクリプトのみを実行できます。
PS1スクリプトの場所によらず署名がついていれば実行可能。
RemoteSigned
RemoteSigned – ダウンロードしたスクリプトは信頼できる発行元が署名した場合にのみ実行できます。
ダウンロードしたスクリプトで、かつ、署名がついていない場合のみ実行不可。これ以外はすべてOK
Unrestricted
Unrestricted – 制限なし。すべての Windows PowerShell スクリプトを実行できます。
署名や場所のどの組み合わせでも実行可能。ただしダウンロードしたPS1スクリプトは実行前に実行許可の問診がある。
個人利用での設定
ローカルにあるPS1スクリプトは実行許可したいけど、インターネットからダウンロードしたPS1スクリプトファイルは、基本的には実行したくありません。
これを実現する設定は、RemoteSignedかUnrestrictedのいずれかです。
これらのどちらが良いのかについて、正直どちらが正解か調べきれてないですが、パッと見た感じで通常利用であれば個人的にはUnrestrictedでよいと思いました。
例えばRemoteSignedだと、ダウンロードしたPS1スクリプトは署名がないとエラーになりますが、署名付きだったら有無をいわさず動いてしまいます。
署名されているのだから問題ないはずだけど、個人利用なのだからそのようなスクリプトは普通は扱ってないと思います。
また、なんとなく勝手に動いてしまうというところに違和感があります。
対してUnrestrictedだと実行許可の確認があって、デフォルト値が実行しないになっているので、間違ってENTERキーを2回押してしまってもエラー終了してくれます。
という点から、普段はUnrestrictedで良いのかなと思います。
本当はRemoteSignedとUnrestrictedの中間にあるだろう良いとこどりの選択肢があれば良かった気がします。
つまり、ダウンロードしたスクリプトの場合、署名があれば確認つき実行許可、署名がなければエラー、と言う動きが一番欲しいんですよね…。
実行ポリシーの変更
大変な作業ではないですが、設定コマンドを転記。
なお設定コマンドは管理者権限が必要なのでPowerShellメニューを右クリックから「管理者として実行」で起動しておく必要があります。
1 2 3 4 5 6 |
PS > Set-ExecutionPolicy Unrestricted 実行ポリシーの変更 実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies のヘルプ トピックで説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか? [Y] はい(Y) [N] いいえ(N) [S] 中断(S) [?] ヘルプ (既定値は "Y"): Y |
レスポンシブ広告
関連記事
-
ログインページの表示を自分だけ許可することでセキュリティ確保
WordPressのログインページは、他一般的なWEBサービス同様にURLが固定 …
-
PowerShellでダイアログを表示し入力結果を取得
PowerShellの入門中です。 今回はPowerShellスクリプトからのW …
-
スマホやタブレットからパソコンを起動する
我が家のパソコンはリビングから離れた部屋にあるので、ちょっとした作業をするために …
-
PowerShellの開発速度の改善を考える
私はどちらかというとWindowよりもUNIXの方がなれてますが、仕事ではWin …
-
.NETダイアログが表示されずスクリプトが止まる問題の対策
PowerShell入門中です。 先日のこちらの記事(PowerShellでダイ …
-
WindowsへGitとSmartGit/Hgのインストール&セットアップ
SourceTreeは綺麗で使いやすかったのですが、Git-Flow機能がどうし …
-
Android Studioをインストール
せっかくタブレットをゲットしたので、勉強も兼ねてAndroidアプリ開発をはじめ …
-
WindowsへGitとSourceTreeのインストール&セットアップ
STINGERテンプレートへの独自の修正が多くなってしまったので、変更箇所の目的 …
-
MiniDV形式ビデオテープを撮影日時つきファイルでバックアップ[PowerShell版]
去年からちょいちょいPowerShellを使い出しました。 勉強の一環で、ちょっ …
-
Visual Studio CodeでPHPファイルのフォーマッタを使う
突然ですが、最近Visual Studio Codeを使ってPHPアプリの開発に …