Power Apps や Power Automate で運用管理業務を効率化しよう

# はじめに

今回は、Power Apps や Power Automate を利用して運用管理業務を効率化する例について紹介します。
今回は、例として、以下のようなアカウントの作成依頼に対する運用管理業務を Power Apps、Power Automate、Azure Automation を組み合わせて効率化するアプローチについて紹介します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/5f4e9097-430c-8722-5cac-f96ea947b39b.png)

# 用意するデータ

今回は、以下のような感じで Microsoft Dataverse のテーブルデータを用意してみました。

|テーブル名  |用途  
|---|---|
|申請情報  |申請の基本情報、依頼者の情報、申請ステータス、希望納期等の情報を格納しています。  |
|申請ユーザー  |アカウントを作成してほしいユーザーの情報。1 回の申請で複数申請されてくる場合があるため、申請情報と紐づいています。|
|ライセンス  |ユーザーに付与してほしいライセンス。申請ユーザーと紐づいています。|
|テンプレートファイル  |一括申請する際に利用するテンプレートファイルです。こちらをダウンロードいただき、情報を埋めていただき申請いただく感じです。|

# 依頼の受付

凄く簡単な例ですが、以下のような感じでキャンバスアプリで申請が出来るようにします。
ヘルプに手順や留意点などを記載してもいいかもですね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/3ce16a6a-b6fd-f7ba-5f41-e34efaa08178.png)

# アカウント作成処理

まず、もろもろの管理はモデル駆動型アプリで行います。
必要に応じてビジネスプロセスフローを利用してもいいかもですね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/bfb13ad3-14a1-a010-c150-0637b981ff32.png)

メインの処理は、Power Automate 側となります。

まず、新規申請があったら、CSV を読み取って申請ユーザーテーブルにデータを格納します。
(手元の環境のため) 一旦省いていますが、必要に応じて Power Automate で承認処理を入れる、または、モデル駆動型アプリ側で情報を直接確認して承認するようなプロセスを入れてもいいかもですね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/ecfd480a-43ab-da6d-a44b-24250864a798.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/3ac7d421-11af-6807-e50b-45a963914c48.png)

:::note warn
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/3b01f7fd-b47a-b898-ebd4-691b4f6cc67b.png)

上記ライセンスや申請リレーションが設定してある列に Power Automate で値を入れる方法について、上記のように少しクセがあります。
:::


今回は、オンプレミス Active Directory と同期をしている前提で、まずは、オンプレミス側でアカウントを作成するようにしています (クラウドオンリーだともっと楽だと思います)。
オンプレミス Windows Server に接続するために参考にしたのはこの辺です。

https://learn.microsoft.com/ja-jp/azure/automation/automation-hybrid-runbook-worker

Power Automate クラウドフローについて、今回は、以下のような感じでスケジュールで実行しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/8c48e3cd-807c-76c3-1030-7a205bcb3a82.png)

肝となるのは以下の部分で、Azure Automation に申請ユーザー情報を引数として渡しております。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/67dbf896-2b58-7337-f9be-c735455a97ff.png)

Azure Automation 側は以下のような感じで、オンプレミスの AD に接続してアカウントを作成しています。
実行する PowerShell コマンドはオンプレミス AD 側でユーザーを作成する時と同じで非常にシンプルです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/06aa164a-213e-02b4-9410-9727dc117003.png)

※資格情報について、以下の通りセキュリティで保護されており、PowerShell のコードに ID やパスワードを埋め込む必要はないです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/a842d710-e79c-4212-6e0f-9252f4e0d821.png)

https://learn.microsoft.com/ja-jp/azure/automation/shared-resources/credentials?tabs=azure-powershell

AD のアカウントの作成が終わったら、アカウントの同期まで少し期間を空けて、クラウド側のプロビジョニングをするフローを実行するようにしています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/13d2ca37-6c25-83b1-64c7-2081963f61e9.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/8295ff03-8eb8-96dc-4c6d-3c7410ec03af.png)

一旦、ライセンスを付与するだけですが、例えば、少し間隔を空けて、Exchange Online のメールボックスの初期設定を Power Automate と Azure Automation を連携させて行うことも出来ると思います。

# まとめ

今回は、Power Apps や Power Automate と Azure Automation を組み合わせすることで、例として、
アカウントの作成依頼に対する運用管理業務を効率化する方法を紹介しました。

アカウントの作成に限らず、例えば、Microsoft 365 のサービスに関わる様々な依頼をメールなどで受け付けて、PowerShell のコマンドを実行するような対応をしており、時間を要している場合は、Power Apps、Power Automate、Azure Automation を組み合わせることで少なからず運用管理業務を効率化できると思います。