🤖

Power Automate Desktopでパスワード自動生成

2 min read

3行でまとめると

  • テキストのランダム生成はパスワードにあまり向かないかも
  • サブフローでパスワード生成処理作って対応
  • パスワード生成だけならpython等のほうが速い。でもPower Automateのほうが拡張性あり

Power Automate Desktopのアクションのメニューを探索していると、「テキスト」に「ランダムテキストの作成」がありました。ヘルプメッセージには「パスワードの生成に役立ちます」と書かれています。

ふむふむ。パスワードの生成か。

システム管理者の業務に、新入社員が入ってきた時のユーザID及びパスワードの発行があります。システムごとにパスワードの要件が違うため、要件に合うパスワード自動生成サイトで生成し、コピペして対応していました。

よし、Power Automate Desktopで自動化してみよう。

要件

  • 以下の3システムに対するパスワードを自動生成する。システムごとにパスワードの必要要件が異なるのでそれぞれフローを作成する。
  • ドメインIDの初期パスワード。6文字、文字種指定なし
  • メールのパスワード。8文字、数字・小文字・大文字
  • 給与明細確認システムのパスワード。 12文字、数字・小文字・大文字・記号
  • 処理を簡便にするため、「それぞれの文字種を最低1文字含む」は実装しない

実装

標準で用意されている「ランダムテキストの作成」を3つ配置し、各種システム用に文字列の長さと複雑さを指定しました。そして実行してみると、以下のような形に。

うーん。きちんとパスワードが生成されていますが、間違えやすい文字やキーボードで打ちにくい文字が入っていますね。最初は印刷して渡すことが多いので、読み間違いが少なく、打ちやすい文字のみを使って作ることにします。

読み間違いしづらい文字は、、

種類 文字
数字 2,3,4,7
小文字 a,d,e,f,h,m,n,r,p
大文字 A,E,F,H,M,N,P,Q,R,T,U
記号 #,-,!

こんなところでしょうか。

パスワードの生成部分ですが、数回繰り返すので再利用しやすいように「サブフロー」にして作ってみましょう。

-「サブフロー」を押してから「+」を押し、サブフローの名前をつけます。

  • サブフローの中身は以下の通りです。

  • 文字種はCSV形式で指定されるのでカンマ区切りにしてリストに変換

  • リストをシャッフルし、最初の1文字をパスワード文字列の1文字目に設定

  • パスワードの文字数分、リストのシャッフルと1文字取り出しを行い、パスワード文字列に追加していく

  • 出来上がったパスワードをMainフローで保存用として生成したリストに追加

  • Mainフローに戻って、今回作成したサブフローを3回呼び出しましょう。

  • 「フローコントロール」にある、「サブフローの実行」ブロックを置きます。

※本当はサブフローに引数で渡したかったのですが、引数の指定ができないのでMainブロック内で条件を指定するようにします。
※フロー編集画面の右上にある、「入出力変数」は、Power Automateと連携するときに使うもので、Power Automate Desktopのみの利用の場合は使用しません。

  • フロー全体は以下のような形になります。
  • 出来上がったパスワードは、CSVファイルへ保存するようにしました。

ブロック編集画面で「実行」ボタンを押すと15秒ほどかかりますが、Power Automate Desktopのフロー一覧画面から「実行」を押すと、2秒ほどで処理が終わりました。

発行するアカウント数が少ない場合はあまりPower Automate Desktopの恩恵はありませんが、10名、20名とアカウントを発行する場合には今回のフローを拡張し、複数名に対応するように設定するとより効率的に作業を行えるようになると思います。

Discussion

ログインするとコメントできます