【Blue Prism】Powershellでコマンド実行してみよう

# はじめに
Blue PrismでPowershellを使ってコマンド実行したい、と思ったことはありませんか？
これから業務でPowershellの自動化をする方、「コマンドプロンプトよりもPowershellの方が慣れている」という方もいるのではないでしょうか。

この記事では、Blue PrismでPowershellを使ってコマンドを実行する方法をご紹介します。

# 前提条件
Blue Prism　ver6.8
※筆者の環境が6.8のため上記としていますが、6.10.2でも動作確認済みです。

# Start Processを使おう
Blue PrismでPowershellを実行するには、アクション「**Start Process**」を使います。
オブジェクト1つと、プロセス1つを作っていきます。

## オブジェクト
まず、下図のようなオブジェクト「**Powershell**」を作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2780586/f0f3d638-b2aa-af6d-828e-c61fd44c73eb.png)
データアイテムは3つ作成します。
※初期値は全て空でOK
| データアイテム名 | データ型 |
|:-:|:-:|
| Powershellの実行ファイルパス |  テキスト |
| テキストファイルパス | テキスト |
| 引数 | テキスト |

　
Start Processを使うには、対象システムに実行させたいコマンドを渡す必要があります。　
コマンドをオブジェクトのデータアイテムやアクションのパラメータに
直接書き込んでも動作しますが、再利用性には欠けてしまいます。
そこで、別途用意した、コマンドを入力済みのテキストファイルを
読み取る「**コマンドを読み取り**」アクションを追加しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2780586/d2dc5cdf-e73b-fb0a-bef1-8744b9fd9d43.png)
使用するアクション：Utility-File Management::Read All Text from File
入力パラメータは以下を指定します。
| 入力 | 値 |
|:-:|:-:|
| File Name | データアイテム「テキストファイルパス」 |

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2780586/b45e9b69-ae63-bff6-2386-995093bcd7bd.png)
出力パラメータは以下を指定します。
この「引数」の中身が、Start Processで実行する時に参照するコマンドの内容です。
| 出力 | 保存先 |
|:-:|:-:|
| Text  |  　データアイテム「引数」 　|

　

Powershellに実行してもらうコマンドを取得したら、Start Processにコマンドを引き渡します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2780586/1462a950-f40f-1167-c92b-6fb96655b84c.png)
使用するアクション：Utility-Environment::Start Process
入力パラメータは以下を指定します。
| 入力 | 値 |
|:-:|:-:|
| Application  | データアイテム「Poweshellの実行ファイルパス」 |
|  Arguments | データアイテム「引数」|

　
これでオブジェクトは完成…ではなく、最後に
開始ステージに入力パラメータを設定しましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2780586/ba78a2f4-d468-6aae-6412-4e8c19725e2c.png)

| 氏名(名称) | 値 |
|:-:|:-:|
| テキストファイルパス  | データアイテム「テキストファイルパス」 |
| Powershell実行パス | データアイテム「Poweshellの実行ファイルパス」 |

 
プロセスから何かしらの値やデータを受け取るには、
予めオブジェクトの開始ステージに、入力パラメータを定義しておく必要があります。

## プロセス　
次に、プロセス「Powershell実行」を作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2780586/a556fd10-4f26-433a-d334-509670468b23.png)
データアイテムは2つ作成します。

| データアイテム名 | データ型 | 初期値 |
|:-:|:-:|:-:|
| Powershellの実行ファイルパス | テキスト | Powershellの実行ファイル完全パス |
| テキストファイルパス | テキスト | コマンドが書かれているテキストファイルの完全パス |

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2780586/ab2669af-1642-bee9-b5fb-94f31647b3a8.png)

使用するアクション：Powershell::powershell　※上で作成したオブジェクトですね！
入力パラメータは以下を指定します。

| 入力 | 値 |
|:-:|:-:|
| テキストファイルパス  | データアイテム「テキストファイルパス」 |
| Powershell実行パス | データアイテム「Poweshellの実行ファイルパス」 |

※Powershellの実行ファイルパスは原則変わらないので、環境変数での設定を推奨します。

オブジェクト作成の最後で設定した、開始ステージの入力パラメータは
このアクションから値を受け取ります。ちゃんとリンクしていますね！
　

これで準備が整いました。
なお、今回読み取るコマンドは以下の内容です。
実行後に画面が消えて結果が分からなくならないように「pause」を入れています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2780586/7385b7fa-cfd1-5d25-7bd4-b20d8b9a6ca3.png)

実行した結果です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2780586/858ce595-2d7a-f5e5-8c99-5cffd5061570.png)

![Powershell.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2780586/b793910f-066f-09df-df54-e03f37287b28.png)


無事に実行できました！
「HELLO」と「こんにちは」がちゃんと表示されています。


# 終わりに

・PowershellをBlue Prismで実行したい場合は、「Start Process」アクションを使う
・読み取るコマンドは、「Read All Text from File」を使うと便利

こちらの2点を押さえて、ぜひご活用ください！

# 参考記事
[【RPA】Blue Prismでコマンドを実行する。これでネットワークドライブ接続とか、いろいろ捗るな。](https://ciprogram.jp/rpa/blueprism_cmd/)