SEブログ

【PowerShell】実行ポリシーを変更する

こんにちは!

 

環境を作ったり記事を書いているうちに、PowerShell の実行ポリシーを変更する内容がいくつか出てきたので、記事毎に書くよりも、一か所に纏めたほうが良いかと思いました。

 

PowerShell を使う時にまずはじめにやる事は実行ポリシーを選択する事かと思います。

実行ポリシーが厳しすぎるとポリシーが実行されませんし、逆に甘すぎると、セキュリティ的に問題が発生する可能性が出てきます。

 

ですので、この実行ポリシーが適切なレベルに設定する必要があります。

 

マイクロソフトのサイトにも書いてありますが(以下引用です)、甘すぎる設定にする事は良くはないと思います。

実行ポリシーはユーザーの操作を制限するセキュリティ システムではありません。たとえば、ユーザーはスクリプトを実行できないとき、コマンド ラインでスクリプトの内容を入力すると、容易にポリシーを回避できます。一方で、実行ポリシーを使用して基本的な規則を設定することで、意図せずに違反することを防止することができます。

 

about_Execution_Policies | Microsoft Developers Network

https://technet.microsoft.com/library/hh847748.aspx

 

とはいえ、デフォルトは Restricted ではスクリプトを実行する事ができません。

 

という事で早速みてゆきましょう。

 

PowerShell の実行ポリシー

 

現在の実行ポリシーを確認する

 

現在の実行ポリシーの種類を確認します。

PS C:\WINDOWS\system32> Get-ExecutionPolicy
実行ポリシーの種類

 

実行ポリシー 説明 安全性

(個人的見解)

Restricted 個別のコマンドは許可しますが、スクリプトは実行できません。

(Windows Server 2012 R2 を除く全てのバージョンでのデフォルトになります。)

但しスクリプトは動作しません。

AllSigned スクリプトは実行できますが、デジタル署名が付いてなければなりません。

(そのスクリプトをローカル PC で書いても同じです。)

未署名のスクリプトを実行すると、実行を許可するか拒否するか確認ダイアログが表示されます。

(ユーザーが許可を選べば実行します。)

RemoteSigned スクリプトは実行できますが、以下の条件下になります。

インターネットからダウンロードしたスクリプト或いはコンフィグファイル、メールの添付ファイルに含まれているものも含めてデジタル署名が付いていなければなりません。(或いは、ユーザーがUnblock-File コマンド、またはファイルのプロパティからファイルのブロックを解除していなければなりません。)

ローカルコンピューターで書かれたスクリプトは実行できます。

(Windows Server 2012 R2 のデフォルトになります。)

Unrestricted 未署名のスクリプトでも実行できます。

インターネットからダウンロードしたファイルがブロック解除されていなければ、実行時に警告が表示されます。

(ユーザーが実行を許可すれば実行できます。)

Bypass 警告やユーザーへの確認なしに、全てのスクリプトが実行ができます。

 

実行ポリシーを変更する

 

PS C:\WINDOWS\system32> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

 

以上になります。いかがでしょうか。

実際は「とりあえず Bypass にしてしまおうという」という考え方よりも、「まずは RemoteSigned に設定して使えるにしてスクリプトが動くかどうか」といった感じでしょうか。

とはいえ、企業のセキュリティポリシーにも抵触する部分でもあるかと思われますので、気を付けたほうが良いかもしませんね。

 

では最後までお読みいただきありがとうございました!