PowerShellスクリプトファイルをダブルクリックで実行する方法

toc目次

はじめに

セキュリティ上の理由から、デフォルトの状態ではPowerShellスクリプトファイル(.ps1ファイル)をダブルクリックして実行することはできません。

PowerShellスクリプトをダブルクリックで実行するには、以下のいずれかの方法で対応します。

Windowsのバッチファイルから実行する

PowerShellスクリプトファイル(sample.ps1)と同一階層にsample.batを作成します。

@echo off

powershell -ExecutionPolicy Bypass -File "sample.ps1"

pause
Write-Host "Hello, World!"

sample.batを実行するとPowerShellスクリプトが実行されます。

Hello, World!
続行するには何かキーを押してください . . .

WindowsのバッチファイルにPowerShellスクリプトを埋め込む

バッチファイル(.batファイル)の1行目に下記コードを記載すると、2行目以降にPowerShellスクリプトを記載して実行することが可能です。

@PowerShell -NoProfile -ExecutionPolicy Bypass "&([ScriptBlock]::Create((cat \"%~f0\" | ?{$_.ReadCount -gt 1}) -join \"`n\"))" %* & pause & goto:eof
@PowerShell -NoProfile -ExecutionPolicy Bypass "&([ScriptBlock]::Create((cat \"%~f0\" | ?{$_.ReadCount -gt 1}) -join \"`n\"))" %* & pause & goto:eof
# 2行目以降にPowerShellスクリプトを記載
Write-Host "Hello, World!"

sample.batを実行するとPowerShellスクリプトが実行されます。

Hello, World!
続行するには何かキーを押してください . . .

実行後に画面を閉じたい場合は一行目の「& pause & goto:eof」を「& goto:eof」に変更してください。

PowerShellスクリプトファイルの関連付けを変更する(非推奨)

※ PowerShellスクリプトファイルの関連付けを変更することで、ダブルクリックでPowerShellスクリプトを実行できるようになりますが、セキュリティ上問題があるため本設定は慎重に行ってください。

PowerShellを管理者権限で起動し、次のコマンドを実行して実行ポリシーを変更します。

Set-ExecutionPolicy RemoteSigned

実行時に確認では「Y」を選択します。

PS > Set-ExecutionPolicy RemoteSigned

Execution Policy Change
The execution policy helps protect you from scripts that you do not trust. Changing the execution policy might expose
you to the security risks described in the about_Execution_Policies help topic at
https:/go.microsoft.com/fwlink/?LinkID=135170. Do you want to change the execution policy?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "N"): Y

スクリプトファイル(.ps1)を右クリックして「プロパティ」を選択し、「全般」タブにあるプログラムの「変更」ボタンをクリックします。
PowerShell

「このPCで別のアプリを探す」を選択します。
PowerShell

PowerShell(C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe)を選択します。
PowerShell

PS1ファイルがPowerShellに関連付けされ、ダブルクリックで実行できるようになります。
PowerShell