2017/01/15

PowerShellの実行ポリシーがRestrictedでも外部スクリプトを実行する方法


PowerShell には実行ポリシーというものがあり、デフォルトでは Restricted になっています。これは外部スクリプトを実行できない非常に厳しいものです。

 

セキュリティの観点からは望ましいものですが、いざ自分が PowerShell のスクリプトを配布しようとすると非常にやっかいです。

 

なぜかというと、実行ポリシーの変更を行うには、PowerShell のコマンドプロンプトを管理者権限で起動する上に、PowerShell のコマンドを実行する必要があるからです。

 

ですが、実行ポリシーが Restricted でもバッチファイルを経由することにより PowerShell のスクリプトを実行できたのでその方法をご紹介します。

 

 

まず、PowerShell のコマンドプロンプトを起動して実行ポリシーを確認します。

 
> Get-ExecutionPolicy
Restricted

実行ポリシーが Restricted になっていて外部スクリプトが実行できないようになっていることが分かります。

ここで以下のような単純な PowerShell スクリプトの test.ps1 を用意します。

Write-Host "Hello!"
pause

このファイルと同じフォルダに以下の記述をした test.bat を作成します。

powershell -NoProfile -ExecutionPolicy Unrestricted .\test.ps1

.\test.ps1 は絶対パスを指定します。

test.bat を実行すると、以下のように問題なくスクリプトを実行でき、UACの画面も表示されませんでした。また、一時的に実行ポリシーを変更しているだけなので元に戻す必要もありません。

C:\temp>powershell -NoProfile -ExecutionPolicy Unrestricted .\test.ps1
Hello!
続行するには、Enter キーを押してください...:

問題なく実行できましたね。

こんな方法で実行ポリシーを迂回できるというのも微妙な気もしますし、batファイルを作成する必要があるのが手間ですが、これで実行ポリシーが Restricted な環境でも外部スクリプトを実行することができるようになりますね。

 

■参考サイト


スポンサーリンク


このエントリーをはてなブックマークに追加




Twitter ではブログにはない、いろんな情報を発信しています。


コメント

コメントを書く



プロフィール

  • 名前:fnya
    経歴:
    SE としての経験は15年以上。様々な言語と環境で業務系システム開発を行い、セキュリティ対策などもしていました。現在は趣味SE。

    Twitter では、ブログでは取り上げない情報も公開しています。


    ブログについて

    このブログは、IT、スマートフォン、タブレット、システム開発などに関するさまざまな話題を取り上げたり、雑感などをつづっています。


    >>ブログ詳細
    >>自作ツール
    >>運営サイト
    >>Windows 10 まとめ

    Twitter のフォローはこちらから Facebook ページはこちら Google+ページはこちら RSSフィードのご登録はこちらから