Azure Logic AppsからPowerShellを実行する

2021.01.05

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

いわさです。

Azure Logic Apps でPowerShellスクリプトを実行したいシーンがありました。
しかし、LogicAppsコネクタからPowerShellをコード実行は出来ません。

今回は、PowerShell実行タスクとなるサービスのコネクタを設定して試しました。
Azure Functions と Azure Automation です。

Azure Functionsの作成

ラインタイムスタックはPowerShell Coreを選択します。

現時点でオペレーティングシステムはWindowsしか選択できず、プランはApp Serviceプランしか選択できません。(東日本)

HTTP triggerテンプレートのデフォルトスクリプトを今回は使用します。

Azure Automation Runbookの作成

次に、Automation Runbookを作成します。
Runbookの種類で"PowerShell"を選択します。

スクリプト作成後にテストしてみます。
"テストウインドウ"を選択します。

動きましたね。

作成後、"公開"を忘れないようにしてください。

Azure Logic Appsの作成

今回はTwitter投稿をトリガーにしてみます。

Logic AppsからTwitterへのアクセス許可を行います。

私のTwitterアカウントで"hoge"とツイートすると、PowerShellを実行するようにしてみました。
PowerShellスクリプトはFunctionsはデフォルトのログが出るだけのもので、Automationも"hoge"と出力するだけのものです。

フロー上で並列でアクション作成を行います。
アクションで検索すると、Azure Function呼び出しと、Azure Automationジョブ作成のコネクタが選択でき、先程作成したリソースを選択できるので設定してください。

ツイートしてみます。ほげ。

3回ツイートしました。

まずは、LogicAppsの実行履歴を確認してみましょう。

Logic Appsのフローが3回実行されています。
PowerShell実行環境はどうでしょうか。

Azure Functionsの実行履歴を確認してみます。

3回実行されていて、PowerShellスクリプトで出力しているログが出力ウインドウに表示されていました。

Azure Automationのジョブ履歴も見てみます。

こちらも3回実行されており、ログ出力されていました。

さいごに

今回はパラメータの受け渡し等の無い単純なパターンを試してみました。
出力結果をLogicAppsに返すにはキューなど別のリソースを介して別のフローを実行する形になると思いますが、それはまた別の機会にやってみたいと思います。