PowerShell(ps1)からbatを呼ぶ方法、batからPowerShellを呼ぶ方法

こんにちは。
けいぞうです。

今回は「PowerShell(ps1)からbatを呼ぶ方法とbatからPowerShellを呼ぶ方法」についての記事です。

PowerShell(ps1)からbatを呼ぶ方法

Start-Processで呼ぶ

Start-Processコマンドを使って呼ぶ方法です。最も正攻法なパターンがこれだと思われます。

Start-Process C:\work\test.bat

Start-Processにbatファイルのフルパスを指定することで、そのbatファイルを実行することができます。

また、相対パスで指定することも可能です。

例えば、カレントディレクトリ直下のbatを実行する場合、以下のように書きます。

Start-Process .\test.bat

Start-Processのプロパティ

プロパティ説明
-FilePath実行するファイルのパスを指定。省略して指定が可能。
-ArgumentList 実行ファイルに渡す引数の配列を指定。文字列の配列の指定が可能。
-Wait指定した実行ファイルの処理が完了するまで待機する時間。
-NoNewWindow別ウィンドウで立ち上げずにプロセスを起動する。
-WindowStyle別ウィンドウで立ち上げる際のウィンドウの開き方を指定する。NoNewWindowと併用は不可。

Normal:通常
Hidden:非表示
Minimized:最小化されたウィンドウ
Maximized :最大化されたウィンドウ

直指定で実効

Start-Processコマンドレットを省いて、batファイルを直指定で実行することも可能です。

フルパス指定の場合

C:\work\test.bat

相対パス指定で、カレントディレクトリ直下のbatを実行する場合

.test.bat

batからPowerShellを呼ぶ方法

おそらくこちらのシチュエーションの方が多いと思います。

batからPowerShellを呼ぶには、以下のように記述します。

powershell -file C:\work\test.ps1

powershellというコマンドに-fileの引数に対してps1ファイルを指定することで実行可能です。

また、こちらも相対パスで指定することが可能です。

powershell -file test.ps1

カレントディレクトリ直下のファイルを実行する際の指定方法が、PowerShellとbatで若干異なるのでご注意ください。