カテゴリー
Azure

Power Automate Desktopで自動化してたときのちょっとしたコツをまとめてみる

複数のフローを小分けにして分岐する

メインフローとは別にサブフローを作って、Mainの中で条件分岐することで全体の見通しをよくすることが出来ます。

ウインドウに対して複雑なキー操作を送信する

パスワード文字列などを入力するときはちょっと独特なテキスト形式で設定します。

https://docs.microsoft.com/ja-jp/power-automate/desktop-flows/actions-reference/mouseandkeyboard#sendkeys にもキーの一覧があるのですがぱっと見分かりにくいと思うので代表的なキー設定の例を下に並べておきます。

  • @マーク → {Oem3}
  • 大文字Q → {LShiftKey}({Q})
  • 小文字x → {x}
  • 数字キー2 → {D2}
  • エンターキー → {return}
  • タブキー → {tab}

ちなみにOEM1~8等の特殊扱いされているキーについては、Windowsの仮想キーコードの一覧などを見た方が対応付けがわかりやすいと思います。

参考 https://bsakatu.net/doc/virtual-key-of-windows/

ウインドウの特定の場所をクリックする

詳細のところを押すと、ウインドウの中での相対位置を指定できます。例えば真ん中にチェックを入れると、ウインドウの上下左右中央からの差分(Xは下方向、Yは右方向)でクリック位置を調整できます。

ウインドウ内部の表示内容から文字を自動的に読み取る (OCR)

OCR機能を使うと、ウインドウの中で並んでいる表示内容から文字列を抽出することが出来ます。

(1) OCRエンジンを作成する

(2) OCRエンジンにテキスト抽出させる

(3) 必要に応じて空白文字などを削除する

上記では空白文字(%’ ‘%)を空文字(%”%)に置換することで削除している

(4) 行区切りのリストに変換する

正規表現の\nを使うことで1行ごとに分割したリストに変換している

(5) Loopを使って行区切りのリストから必要な行だけ取り出して加工する

上記では、画面上に「1234」と表示された文字列を後で別なウインドウに数字キーとして送信するために、「{D1}{D2}{D3}{D4}」とループしながら1文字ずつ加工している。
※ 正規表現の置換 (Replace) を上手く使おうと思ったのだが、後方参照が出来ないようで苦肉のやり方。

ウインドウに特定の表示が出てくるまで待機する

ボタンを押したりして画面遷移しても一定時間経たないと入力画面が出てこない場合などに待機する場合、秒数指定で待つことも出来るがその場合は不意に処理速度が遅かったり、ネットワーク上で応答待ちになった時に不都合になることが多い。

人間であれば、画面を眺めていて入力できそうになるまで見て判断することが出来るが、Power Automate Desktopでも同様に特定の画像と一致する表がなされるまで待機することが出来る。

カテゴリー
Azure

Power Automate Desktopをインストールしてみた。

職場または学校アカウントのユーザでPower Automate Desktopをインストールしてみました。すると、Microsoft Dataverseデータベースが見つからないとのメッセージが。

画像

Power Platform管理センター上で環境に対してデータベースを追加してあげないといけないようです。

画像

会社や学校テナントのOffice 365管理者とかPower Platform管理者とかって、情報システム部門の奥底にいたりするので、もしもPower PlatformやDynamics 365を全然使っていない会社や学校でPower Automate Desktopをユーザが使いたくなったとしてもこの追加作業をしてもらうのには敷居があるかもしれないです。

管理者目線ではいろいろとセキュリティやアクセス出来るデータの範囲を設定することが出来そうです。

画像

管理者側でDataverseを追加してから10分くらい位待ってはじめてPower Automate Desktopでデスクトップフローが作成出来るようになりました。

画像

個人的に気になったAWSやAzure周りのアクションは画面キャプチャしたとおりです。そこまで多くないので、AWS CLIとかazコマンドを作った方が明らかに良いです。

画像

とりあえず、週1回やってる定型作業(Azure Portalからコスト一覧をダウンロードするタスク)を自動化してみました。

画像
カテゴリー
Azure

Azure AD B2Bで招待したゲストユーザのアカウント情報をオンプレミスのActive Directory上にWritebackする

ゲスト ユーザーを Active Directory に Writeback してみる – その 1 https://note.com/shmiyaza/n/n978fcc156f3e に書かれているスクリプトを実際に手元環境で動かしてみました。

大まかな流れは上記のブログに書かれている通り+スクリプトのZIPファイルに添付されているPDFファイルの手順書に従って出来たのですが、いくつかエラーが発生したので回避手順をメモしておきます。

New-ADServiceAccount で「キーが見つかりません」(Key does not exist)エラーが出る

New-ADServiceAccount : Key does not exist https://social.technet.microsoft.com/Forums/ie/en-US/82617035-254f-4078-baa2-7b46abb9bb71/newadserviceaccount-key-does-not-exist?forum=winserver8gen のこのコメントに従って対処しました。

Add-KdsRootKey –EffectiveTime ((get-date).addhours(-10))    

Install-ADServiceAccountで「アクセス権がありません」(Access Denied)エラーが出る

Group Managed Service Accounts – Install-ADServiceAccount returns “Access Denied” https://social.technet.microsoft.com/Forums/en-US/16eb477a-85ce-4daa-8087-3c23e7dc5c41/group-managed-service-accounts-installadserviceaccount-returns-access-denied?forum=winserver8gen に従って対処。

Set-ADServiceAccount TestgMSA -PrincipalsAllowedToRetrieveManagedPassword SRV01$