どうも!リョクちゃです。
今回は、PowerShellで外部アプリケーションを呼び出す方法を紹介していきます。
外部アプリケーションは例えば、自身で作成した.exeファイルや、
Pythonのスクリプトも該当しますね。
Windowsコマンドでも呼び出すことはできるのですが、
PowerShellでももちろん、呼び出すことができるので
ここで学んでしまいましょう。
ちなみに前回はこちら
目次
PowerShellで外部アプリケーションを呼び出す
外部アプリケーションを呼び出すには、既にコマンドがサポートされており、
以下のコマンドを使用することで外部アプリケーションを呼び出すことができます。
Start-Processを使用することで、外部アプリケーションを呼び出すことが可能です。
例) メモ帳を開いてみます。
メモ帳はWindowsでは”notepad“という名称でインストールされています。
1 |
Start-Process -FilePath "notepad" |
実行すると、メモ帳が開きます。
例えば、引数を渡したい場合もあると思います。
そんな時は、Start-Processコマンドのオプションに-ArgumentListというのがあります。
このオプションを設定することで外部アプリケーションに引数を渡すことができます。
1 |
Start-Process -ArgumentList "引数1", "引数2" |
他の呼び出し方
Start-Processで呼び出してもいいんですが、こちらで呼び出すと
外部アプリケーションが終了したときに返される終了コードを受け取ることができません。
そこで終了コードを受け取るには、以下の呼び出し方を検討してみましょう。
これらを使って、外部アプリケーションを呼び出します。
例) 外部アプリケーションを呼び出す、一連の流れ
1 2 3 4 5 6 7 8 9 10 11 |
$変数名(ProcessStartInfo) = New-Object System.Diagnostics.ProcessStartInfo $変数名(ProcessStartInfo).FileName = "呼び出したい外部アプリケーション名" # 引数を渡したい場合 → $変数名(ProcessStartInfo).Arguments = "引数" $変数名(ProcessStartInfo).UseShellExecute = $false # 外部アプリケーションを起動するときにシェルを使用するか否か $変数名(Process) = New-Object System.Diagnostics.Process $変数名(Process).StartInfo = $変数名(ProcessStartInfoのインスタンスを生成した変数) [void]$変数名(Process).Start() # 外部アプリケーションの実行 $変数名(Process).WaitForExit() # 外部アプリケーションの実行が終了するまで待機 $変数名(終了コードを受け取る) = $変数名(Process).ExitCode # 0以外の受け取り値はNGになります。 |
例) メモ帳を呼び出す流れ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# System.Diagnostics.ProcessStartInfoの設定 $testInfo = New-Object System.Diagnostics.ProcessStartInfo $testInfo.FileName = "notepad" $testInfo.UseShellExecute = $false $ System.Diagnostics.Processの設定 $test = New-Object System.Diagnostics.Process $test.StartInfo = $testInfo [void]$test.Start() $test.WaitForExit() # 終了コードを受け取る $exit = $test.ExitCode $exit |
実行すると、メモ帳が開き、何もせず終了すると
終了コード0が受け取れると思います。
まとめ
PowerShellで外部アプリケーションを呼び出す方法について、紹介していきました。
終了コードを受け取りたい場合には、Start-Processではなく、
System.Diagnostics.ProcessStartInfoと
System.Diagnostics.Processを検討しましょう。
使い方を覚えるとPowerShellだけで外部アプリケーションを呼び出せるようになるので、
便利っちゃ便利です。
また、外部アプリケーションを呼んで処理を任せたいときなんかにも有効ですね。
最後までお読みいただき、ありがとうございます。