Power Automate DesktopでActive Drectoryに新規ユーザーを作成するフローを構築する。


概要

この記事では、Power Automate Desktopのデスクトップフローを使用して
ADサーバーに接続し、新規ユーザー作成を行ってみたいと思います。

Power Automate Desktopには、Active Drectoryの操作を行うアクションが用意されています。
今回はその中の3つのアクションを使用してフローを作成してみたいと思います。

検証環境の構成イメージです。
Azure 仮想ネットワーク上に接続先となる
ADサーバーとデスクトップフローを実行するロボサーバーを構築しています。

流れとしてはFormsから登録申請があった場合にクラウドフローが実行され、
申請されたユーザー情報をデスクトップフローに受け渡して
ユーザー作成が行われる というものです。
登録が正常に完了した場合、Teamsによって通知を行います。

※クラウドフローの作成手順は割愛しますが、フロー内容は以下の通りです。

前提条件

本手順を行う前に前提条件として、下記2つが必要となります。
・Power Automate Desktopの有償ライセンス
※私は期間限定ですが試用版で構築しました!
・Power Automate Desktopを動かすマシンをPower Automateに登録できていること
(下図のようにPower Automateの「監視」→「マシン」に実行するマシンが登録されている状態です)

手順(1)入出力変数を作成する

Power Automate Desktopで
新しくフローを作成します。

フローデザイナー画面が表示されたら、右側にある「入出力変数」枠内の
追加ボタンをクリックします。

クラウドフローから値を受け取るための入力変数から作成するので、
「入力」を選択します。

入力変数の作成画面が表示されます。
変数名は初期値で「NewInput」となっているので、任意の値に変更します。

作成後、入出力変数に追加されたことを確認します。

同じ手順で、「LastName」の入力変数も作成します。

続いて、出力変数を作成します。
※出力変数の設定は必須ではありません。

出力変数には、ユーザー作成完了後にTeamsで送信する
メッセージを格納したいと思いますので、変数名・外部名を「TeamsMessage」として作成します。

出力変数が作成されたことを確認します。

手順(2)Active Directoryを操作するアクション設定

アクションの一覧から、「サーバーに接続」アクションを選択します。

設定画面で、各設定値を入力します。
LDAPパスは図に記載されていると通り、
「LDAP://<ドメイン名>」の形式で入力してください。
ユーザー名は「<ドメイン名>¥<ユーザー名>」の形式で入力してください。
※Active Directoryにユーザーを作成する権限のあるユーザーを指定してください。

アクションの設定後、テスト実行をしてみましょう。

続いて、アクションの一覧から、
[Active Directory]-[ユーザー]の配下にある「ユーザーを作成」を選択します。

各設定値を入力します。
親ディレクトリエントリ:
アクション「サーバーに接続」を作成した際に生成された変数
「%ParentDirectoryEntry%」
が自動的に設定されます。
場所:ユーザーを作成する場所を指定します。
指定方法は図の通り、「CN=xxx,DC=xxx,DC=xxx」の形式で入力します。
名:入力変数「FirstName」を設定します。
姓:入力変数「LastName」を設定します。
ユーザー名:入力変数「FirstName」と「LastName」を足した値を設定しています。
パスワード:作成するユーザーに設定するパスワードを入力します。

続いて、作成したユーザー情報にメールアドレスを設定したいと思います。
アクションの一覧から、
[Active Directory]-[ユーザー]の配下にある「ユーザー情報の更新」を選択します。

アクション「サーバーに接続」を作成した際に生成された変数
「%ParentDirectoryEntry%」
が自動的に設定されます。
識別名:情報を更新するユーザーの識別名を指定します。
指定方法は図の通り、「CN=<ユーザー名>,CN=xxx,DC=xxx,DC=xxx」
の形式で入力します。
ユーザーのメールアドレス:今回は入力変数「FirstName」「LastName」と
ドメイン名を組合わせた値を設定しています。

Active Directoryを操作するアクション設定は以上です。

手順(3)Teamsで送信するメッセージの設定

出力変数「TeamsMessage」の設定を行いたいと思います。
アクションの一覧から、「変数の設定」を選択します。

変数の設定画面で、設定する変数「TeamsMessage」を選択し、
「宛先」欄に任意のメッセージを入力します。

これでデスクトップフローの設定は完了です。保存しておきましょう。

手順(4)クラウドフローの設定・確認

作成したデスクトップフローをトリガー実行(Formsから申請を受けたときに実行)する場合
クラウドフローで対象のデスクトップフローを指定する必要があります。

実行するデスクトップフローの実行は
「デスクトップ用Power Automateで構築したフローを実行する」というアクションを設定します。
Desktopフロー:作成したデスクトップフローを選択する
実行モード:マシンの実行状態を指定します。
今回は「非アテンド型」(サインアウトされている状態)を指定します。
(アテンド型で設定するとうまくいかず・・・)
FirstName/LastName:デスクトップフローで作成した入力変数名が表示されるので、
Formsから受け取った値を設定します。

アクション「チャットまたはチャネルでメッセージを投稿する」で、
対象となるTeamsのチーム、チャネル、メッセージを設定します。
メッセージにはデスクトップフローで出力変数として設定した
「TeamsMessage」
を設定しています。

手順(5)動作を見てみましょう

作成したフローがちゃんと動くか確認してみましょう。
Formsで新規ユーザー登録を行ってみます。
FirstName:Merry
LastName:Xmas

Formsを実行後、クラウドフローが実行されていることを確認します。

正常に実行が完了したようです。

ADサーバーに接続し、Active Directoryのユーザーを確認すると
無事追加されていました。

メールアドレスも大丈夫そうです。

Teamsの指定したチャネルにもメッセージが届いていました。

所感

今回の手順はかなりべた書きにしてしまいましたが、
各設定値は変数に入れたほうが確実に良いです。(省いて申し訳ありません。)

もっとしっかり作るのであれば条件分岐を入れて
ユーザーが二重登録されていないか、同姓同名のユーザーの場合のフローなどは
設定する必要がありますね。