Power Platform から PowerShell スクリプトを実行したい

Power Platform にはたくさんのコネクタが揃えられておりますが、呼び出されるサービス側が API として対応していないので代わりに PowerShell で対応する必要があるケースってないでしょうか？

例えば、Exchange Online の **配布グループ** は 既成のコネクタ ([Office 365 Groups](https://learn.microsoft.com/ja-jp/connectors/office365groups/)) や Graph API を通して作成することはできませんが、Exchange Online Management モジュールを使った PowerShell を使えば作成できます。

https://learn.microsoft.com/ja-jp/graph/api/resources/groups-overview?view=graph-rest-1.0&tabs=http

https://learn.microsoft.com/ja-jp/exchange/recipients-in-exchange-online/manage-distribution-groups/manage-distribution-groups

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2375815/9813b058-568a-2d7e-d372-2bbb43552e2f.png)

Power Platform から PowerShell を実行したいときは、Azure Automation を使う方法を一つの選択肢として考えると良いかと思います。Power Platform では、Azure Automation のコネクタが提供されていますので活用しましょう。

では、以下の流れで配布グループを作成してみたいと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2375815/29967df0-0cb8-4466-c85f-928dd56beb25.png)

## ① Azure Automation アカウントの作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2375815/92fd9ddf-0e72-cd3f-92cb-ef977cbffed1.png)

## ② PowerShell Runbook の作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2375815/01c9e33b-bc39-4d47-8018-08600cffe458.png)

:::note warn
ランタイムバージョンは 5.1 を選択してください。
:::

#### Exchange Online Management モジュールのインストール
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2375815/e46633c8-74cc-134a-dabc-f9837ccd6ee4.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2375815/74279818-a7a7-e79d-a379-c9ef1ee481e1.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2375815/1d094df9-44d1-a0bb-8295-69b022f9b800.png)

:::note warn
ランタイムバージョンは 5.1 を選択してください。
:::

## ③ Runbook の内容の作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2375815/7b8bc10d-499f-8291-6f10-fc62bcc357c0.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2375815/7f1d0cf6-c66b-9979-5141-74e1c0e62285.png)

```PowerShell:PowerShell スクリプト例
Param
(
    [Parameter(Mandatory=$true)]
    [String] $Name,
    [Parameter(Mandatory=$true)]
    [String] $Alias
)
$credential = Get-AutomationPSCredential -Name "XXX"
Connect-ExchangeOnline -Credential $credential
New-DistributionGroup -Name $Name -Alias $Alias -MemberJoinRestriction open
```

:::note warn
認証（Connect-ExchangeOnline）はユーザー認証にしていますが、多要素認証が有効になっていると実行時にエラーになるので、ほかに [証明書を使った認証](https://learn.microsoft.com/ja-jp/powershell/exchange/app-only-auth-powershell-v2?view=exchange-ps) なども検討すると良いかと思います。
:::

## ④ Runbook の実行テストと確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2375815/8c98c1f8-a8e8-b018-3b49-80511abbde91.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2375815/02dd5f19-8d29-b6c6-f83d-fecf6a25422d.png)

## ⑤ Power Automate で③で作成した Runbook を起動する

コネクタ: Azure Automation
アクション: ジョブの作成

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2375815/42a9eb88-5ca5-182e-e725-0a0509ade3fe.png)

実行
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2375815/0dec60d6-061d-7e4a-d2a1-424ea05560ea.png)

問題なく作成されたことを確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2375815/fd2f6aac-cedb-e948-3a9d-0f6b29a9fc7d.png)


以上、ご参考になれば幸いです。