分かりやすく、使いやすく。

バッチファイル(*.bat)からパワーシェルファイル(*.ps1)を実行する方法

スポンサーリンク

バッチファイル(*.bat)からパワーシェルファイル(*.ps1)を実行するには、バッチファイル内で powershell コマンドを呼び出しその引数にパワーシェルのスクリプトファイルのパスを指定します。

  1. 引数を渡さない場合
  2. 引数を渡す場合
  3. 名前付き引数を渡す場合


尚、バッチファイルから powershell のファイルを呼び出すには実行ポリシーが適切に設定されている必要があります。現在設定されている実行ポリシーの確認や変更については次のページを参照してください。

実行ポリシーの設定は変更せず、処理を実行する際のみ一時的に実行ポリシーを変更したい場合は次のページを参照してください。

引数を渡さない場合

次の例は test.bat と test.ps1 が同じフォルダにある場合です。 test.bat を実行すると、 test.ps1 を呼び出して実行します。

test.ps1
1
2
# バッチファイルから呼び出される側のパワーシェルファイルです。
Write-Host 'powershell のバッチからの呼び出しに成功しました。' 
test.bat
1
2
3
4
5
6
REM パワーシェルを呼び出すバッチファイルです。
REM test.ps1 が test.bat と同じフォルダにある場合です。
powershell .\test.ps1
 
REM 実行結果を見るために一時停止させます。
PAUSE 

test.bat の実行結果は次の通りです。

powershell のバッチからの呼び出しに成功しました。 

引数を渡す場合

引数を渡す場合、渡された引数は $Args[n] から取り出します。

test.ps1
1
2
3
4
# バッチファイルから呼び出される側のパワーシェルファイルです。
Write-Host ('渡された引数1個目:' + $Args[0])
Write-Host ('渡された引数2個目:' + $Args[1])
Write-Host ('渡された引数3個目:' + $Args[2]) 
test.bat
1
2
3
4
5
6
REM パワーシェルを呼び出すバッチファイルです。
REM test.ps1 が test.bat と同じフォルダにある場合です。
powershell .\test.ps1 first second third
 
REM 実行結果を見るために一時停止させます。
PAUSE  

test.bat の実行結果は次の通りです。

渡された引数1個目:first
渡された引数2個目:second
渡された引数3個目:third 

名前付き引数を渡す場合

名前付きの引数を渡す場合、値の前に引数名をハイフン付きで指定します。

test.ps1
1
2
3
4
5
6
7
8
9
# バッチファイルから呼び出される側のパワーシェルファイルです。
Param(
    [string]$first_name
  , [string]$last_name
  , [int]$age
)
 
Write-Host ('名前:' + $last_name + ' ' + $first_name)
Write-Host ('年齢:' + $age) 
test.bat
1
2
3
4
5
6
REM パワーシェルを呼び出すバッチファイルです。
REM test.ps1 が test.bat と同じフォルダにある場合です。
powershell .\test.ps1 -age 30 -last_name 田中 -first_name 太郎 
 
REM 実行結果を見るために一時停止させます。
PAUSE  

test.bat の実行結果は次の通りです。

名前:田中 太郎
年齢:30 
スポンサーリンク
スポンサーリンク