(1) バッチからPowershellを実行する方法
(1-1) 構文①
(1-2) 構文②
(2) バッチから引数を与えてPowershellを実行する方法
(2-1) 引数を表現する「%N」の記述について
(2-2) サンプルプログラム
(1) バッチからPowershellを実行する方法
書き方が2通りほどあり、1つはPowershellの実行ファイル(Powershell.exe)に引数を与えて実行する方法と、その短縮表記の「powershell」にファイルを指定して実行する方法があります。
(1-1) 構文①
(構文①)
Powershell.exe -File [フォルダパス]\[PowerShellファイル名].ps1
(表)頻出の引数についての補足
オプション | 概要 |
-File | 実行するPowershellのファイルパスを指定します。 |
-ExecutionPolicy | ・「ExecutionPolicy」はどの種類のPowershellがシステム上で実行できるか?を決定づける「安全制御」のための設定です。 ・Windowsではユーザーや特定のセッションに対して、この「実行ポリシー(Execution Policy)」を設定できます。 ・設定情報はレジストリに保存されており、Powershellのプロファイルでは特に設定する必要がありません。 ・デフォルトでは「Restricted」に設定されており、何も実行できない設定になっています。 ・ただし、これはユーザのアクションを制限できる設定ではなく、簡単にバイパスする事ができます。そのため、あくまでデフォルト値をセットして「誤作動」を防止する目的の設定となります。 ・取り得る値は「Bypass」や「Unrestricted」などを指定できます。 |
(1-2) 構文②
(構文②)
こちらの表記ではファイルパスをダブルクォーテーション「”」で囲っています。
powershell "[フォルダパス]\[PowerShellファイル名].ps1;"
(2) バッチから引数を与えてPowershellを実行する方法
(2-1) 引数を表現する「%N」の記述について
コマンドライン引数を表す特殊な表記です。「%1」は1つ目のコマンドライン引数、「%2」は2つ目のコマンドライン引数、といった具合で「%9」まで9個用意されています。
また「%0」のみ特殊な意味を持っており、バッチファイル自身を呼ぶためのコマンドです。形式は「xxx.bat、…\xxx.bat」など様々です。
(表)引数を表現する「%N」の意味
%0 | バッチファイル自身を呼ぶためのコマンドです。形式は「xxx.bat、…\xxx.bat」など様々です。 |
%1 | 1つ目のコマンドライン引数 |
%2 | 2つ目のコマンドライン引数 |
%3 | 3つ目のコマンドライン引数 |
%4 | 4つ目のコマンドライン引数 |
%5 | 5つ目のコマンドライン引数 |
%6 | 6つ目のコマンドライン引数 |
%7 | 7つ目のコマンドライン引数 |
%8 | 8つ目のコマンドライン引数 |
%9 | 9つ目のコマンドライン引数 |
(2-2) サンプルプログラム
「構文①」と「構文②」それぞれでサンプルを分けてご紹介します。処理内容は「構文①」バージョンも「構文②」バージョンも同じで、バッチ処理の中で引数を与えてPowershellを呼び出している点は全く同じです(表記法の違いのみ)。
(図220)
(呼び出し先のPowershell)
$w = $args[0] echo "### Test3.ps1 is executed" echo "### argument value is : " $w
(呼び出し元の「.bat」構文①バージョン)
@echo off setlocal ENABLEDELAYEDEXPANSION echo ### Test1.bat is executed rem ===(1) 実行中のバッチファイル自身の名前を取得 set val= %~nx0 echo !val! rem ===(2) バッチから引数を与えてPowershellを実行 powershell "C:\Temp2\IT0222\Test3.ps1 !val!"
(図221)実行結果
(呼び出し元の「.bat」構文②バージョン)
@echo off setlocal ENABLEDELAYEDEXPANSION echo ### Test2.bat is executed rem ===(1) 実行中のバッチファイル自身の名前を取得 set val= %~nx0 echo !val! rem ===(2) バッチからPowershellを実行 Powershell.exe -File C:\Temp2\IT0222\Test3.ps1 !val!
(図222)実行結果