PowerShellスクリプトを実行するには

スポンサーリンク
このブログではアフィリエイト広告を利用しています。

PowerShellスクリプト(.ps1ファイル)は、デフォルトでは起動できません。

PowerShellのスクリプトが実行できない画像

ダブルクリックをした場合でも、メモ帳が開くだけで、バッチファイルのように実行されません。

これはセキュリティが強化され、ウィルスなどが知らない間にPowerShellスクリプトを実行することを防ぐためです。ここではPowerShellスクリプトを実行する方法を紹介します。

スポンサーリンク

PowerShellスクリプトの実行ポリシー

PowerShellスクリプトは実行ポリシーで制御されており、全部で5種類存在します。

 
実行ポリシー説明署名あり署名なし
ローカル
署名なし
リモート
Restrictedすべてのスクリプトの実行を禁止(デフォルト設定)
AllSigned署名されているスクリプトのみ実行可能
RemoteSignedローカル上のスクリプトとリモート(非ローカル)上の署名のあるスクリプトのみ実行可能
Unrestrictedすべてのスクリプトが実行可能、リモート(非ローカル)上のスクリプトは実行時に許可が必要
許可要
Bypassすべてのスクリプトが実行可能

デフォルトでは「Restricted」となっているため、PowerShellスクリプトは実行できません。

署名ありスクリプト/署名なしスクリプト

スクリプトには認証局から発行してもらった証明書や、自己証明書を使用して電子署名をつけることができます。署名されたスクリプトのみを実行できるように制限しておくことで、悪意のあるスクリプトが実行される可能性を低くすることができます。

悪意のあるスクリプトを防ぐと言い切れないのは、署名がついているからといって安全なスクリプトとは限らないためです。

ローカルスクリプト/リモートスクリプト

スクリプトが保存されている場所によってローカルかリモートに分けることができます。

「ローカルスクリプト」は物理ディスク上に保存されているだけでなく、そのPCからディスクとして見れる領域はすべてローカルとみなされます。

たとえば、ファイルサーバをネットワークドライブとしてマッピングしている場合や、UNCパス(「\\」で始まるパス)で接続できる領域に保存しているスクリプトもローカルスクリプトとなります。

「リモートスクリプト」はインターネット(URL)から取得したファイルを指します。ダウンロードして保存したものでも「リモートスクリプト」とみなされます。

PowerShellスクリプトを実行するには

PowerShellスクリプトを実行するには実行ポリシーを適切なものに変更する必要があります。

変更する実行ポリシーは、PowerShellスクリプトに署名することができるのであれば「AllSigned」、難しいのであれば「RemoteSigned」で問題ないのではないかと思います。

PowerShellスクリプトの署名方法がわからない場合は、以下の記事をご覧ください。

実行ポリシーを変更する

実行ポリシーを変更する場合は、PowerShellを管理者権限で開いておく必要があります。

  1. 「スタートボタン」右クリックするか、ショートカットキーの[Windows]キー + [X]キーを押下してアドバンストメニューを開きます。
  2. [Windows PowerShell (管理者)]をクリックします。
    アドバンストメニューを開く画像

実行ポリシーは以下のコマンドで変更できます。

Set-ExecutionPolicy [実行ポリシー]

コマンドを実行すると、確認メッセージが表示されるため「Y」を入力します。

Set-ExecutionPolicyコマンドを実行する画像

実行ポリシーを変更するとスクリプトが実行できるようになります。

スクリプトを実行した画像

実行ポリシーの確認方法

現在の実行ポリシーがわからない場合は以下のコマンドで確認できます。

Get-ExecutionPolicy
Get-ExecutionPolicyコマンドを実行した画像

実行ポリシーを指定してPowerShellを起動する

PowerShellはオプションで実行ポリシーを指定して起動することができます。セキュリティが心配で、PowerShellスクリプトを実行する時だけ実行ポリシーを変更したい場合は、毎回設定変更するのは面倒なため、この方法で起動することをおすすめします。

powershell -ExecutionPolicy [実行ポリシー]

実行方法は色々な方法があります。

など

PowerShellやコマンドプロンプト上でコマンドを実行した場合は、新しい画面で開くのではなく、その画面の中で指定した実行ポリシーのPowerShellが開く形になります。

実行ポリシーを変更してPowerShellを起動した画像

右クリックから実行する

PowerShellスクリプトを実行するには実行ポリシーの変更が必要と記載しましたが、実行ポリシーを変更しなくても実行する方法があります。

方法は簡単でPowerShellスクリプトファイルを右クリックし、表示されたメニューから[PowerShellで実行]を選択します。

右クリックメニューからPowerShellスクリプトを実行する画像

実行ポリシーの変更が必要ない理由としては、レジストリで実行ポリシーが「AllSigned」ではない場合は「Bypass」で起動するように設定されているためです。

※ Windowsのバージョンによって異なる可能性があります。

コメント