目次
はじめに
こんにちは!
先月はUiPathのメール送信についての記事を投稿しましたが、お役に立ちましたでしょうか?
今回は、UiPathでPowerShellを呼び出し、バッチファイルを実行する方法をご紹介いたします!
既に業務中にバッチファイルを使用しているという方は、その実行を自動化することで、さらなる業務効率化を実現することが出来ます!
実際にやってみましょう!
① 【事前準備】バッチファイルの作成
UiPathから実行するためのバッチファイルを作成します。
今回はWindowsのバージョンを表示する処理と、引数を表示する処理を作成します。

作成したバッチファイルは任意の場所に保存していただいて結構です!
② 「PowerShellを呼び出し」アクティビティを追加する
① で作成したバッチファイルをUiPathで実行するため、アクティビティを追加しましょう!
アクティビティを検索し、「PowerShellを呼び出し」アクティビティを追加します。

指定した入力パラメーターを使用して PowerShell コマンドを実行します。
引用元:https://docs.uipath.com/activities/lang-ja/docs/invoke-power-shell
次に、オプションの「入力 > コマンドテキスト」に以下のコードを設定します。
$OutputEncoding = [Console]::OutputEncoding; ①で作成したバッチファイルのパス テスト | clip

・$OutputEncoding = [Console]::OutputEncoding;
PowerShellのエンコーディングを、Shift-JISに変更します。引数に日本語を指定する場合、このコードを書いていないと文字化けを起こしてしまいますので、注意が必要です。
・①で作成したバッチファイルのパス テスト
実行するバッチファイルのパスと、処理で使用する引数(この例では「テスト」)を指定します。
パスの指定方法は、絶対パスと相対パスどちらでも問題ありません。
引数を指定する場合、パスと引数の間に半角スペースを置くのを忘れないようにしてください。
なお、引数が必要ないバッチファイルを実行する場合、引数の記載は必要ありません。
・ | clip
PowerShellに出力された内容を取得するため、「|(パイプ)」を使用して次のコマンドに出力内容を渡し、「clip」コマンドでその内容をクリップボードにコピーします。
最後に、「その他 > TypeArgument」に「String」を設定し、「その他 > スクリプト入力」を有効にします。

以上で、「PowerShellを呼び出し」アクティビティの設定は完了です!
③ 出力内容を取得し、ログとして出力する
続いて、②でクリップボードに取得した出力内容を、ログに出力する処理を追加しましょう!
アクティビティを検索し、「クリップボードから取得」アクティビティを追加します。
出力先の変数の設定も併せて行います。今回は「log」変数にクリップボードの内容を格納します。


最後に「1行を書き込み」アクティビティを追加し、「その他 > テキスト」に「log」変数を設定すれば準備完了です!

④ 実行する
作成した処理を実行してみましょう!
処理実行後、画面左下の「出力」タブをクリックすると、出力内容を確認できます。

UiPathで引数付きのバッチファイルを実行することが出来ました!
出力内容をメールで通知することも、もちろん可能です。是非お試しください!
【補足】対話式のバッチファイルを実行する
処理を実行した後に文章を入力する必要がある、対話式バッチファイルを実行する方法も併せてご紹介します。
UiPathで対話式のバッチファイルをそのまま実行すると、入力を待ち合わせて処理がストップしてしまいます。
その対策として、バッチの実行前に「echo」と「|」を使用して、値を渡す必要があります。
① 【事前準備】バッチファイルの作成
対話式のバッチファイルを作成し、任意の場所に保存します。

② 「PowerShellを呼び出し」アクティビティを修正する
「PowerShellを呼び出し」アクティビティの「入力」に、以下のコードを設定します。
今回の例では「echo テスト |」というコマンドにより、バッチファイルの処理に値を受け渡しています。
$OutputEncoding = [Console]::OutputEncoding; echo テスト | ①で作成したバッチファイルのパス | clip
実行結果は以下のようになります。

まとめ
今回はUiPathを用いてバッチファイルを実行する方法についてご紹介させていただきました。
UiPathは単体でも大変便利なツールですが、バッチファイルによる処理と組み合わせることにより、グッと自由度が向上します。もしUiPathだけでは実現が難しいと感じた場合は、処理の一部をバッチファイルに切り出してあげることで、シンプルに実現できるかもしれません。
当ブログでは、こういった技術系の解説記事を投稿しております。今後も様々な情報を更新予定ですので、よろしくお願いいたします