晴耕雨読

working in the fields on fine days and reading books on rainy days

[PowerShell] バッチファイルからPowerShellを呼び出す

PowerShellファイルをバッチファイルから実行する方法について説明します。 バッチファイルを作ることでcmdをダブルクリックするだけでPowerShellが実行できるようになります。

例として、必須引数1つと任意引数2つを取るPowerShellスクリプトを用意して、 これをバッチファイルから実行する例を示します。

PowerShell側 (test.ps1):

param(
  [parameter(Mandatory = $true)] [string] $filename,
  [string] $option1,
  [string] $option2
)

Write-Host $filename
Write-Host "opt1: $option1"
Write-Host "opt2: $option2"

バッチファイル側 (test.cmd、普通に引数に渡す場合):

@echo off
powershell .\test.ps1 SampleFile 123
pause

実行結果:

SampleFile
opt1: 123
opt2:

バッチファイル側 (test.cmd : 名前付き引数で渡す場合):

@echo off
powershell .\test.ps1 -option1 123 -option2 456 -filename SampleFile
pause

実行結果

SampleFile
opt1: 123
opt2: 456

補足

もし、実行時にセキュリティエラーが発生する場合は、システムでスクリプトを実行が無効になっている可能性があるので、次のコマンドを管理者権限のPowerShellコマンドプロンプトで入力してから実行してください。

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

以上です。