Windows:Power Automate DesktopでAWSのEC2サーバへリモートデスクトップ

Windows

AWSのEC2サーバをElastic IPなどを使わずに使用しているため起動のたびにIPを取得してリモートデスクトップ接続をしていた。
今回はそのIP取得とリモートデスクトップ接続をRPAで自動化してみた。

事前準備:EC2起動・停止 のフロー

前回作ったテスト用のフローをちょっと変更して、EC2インスタンスを起動するフローと、停止するフローを作成。

参考

Windows: Power Automate DesktopでAWS起動・停止
Power Automate Desktopを導入したので試験的にいじってみる。まずはAWSの起動と停止から。

EC2起動
起動後すぐにあがってこないため、10秒の待ち時間を調整用に追加。
(もっと適切な方法はありそう。)

EC2停止

EC2インスタンスIP取得のフロー

前提として、下記の条件あり。

  • 前日のEC2のサーバが起動している状態で使用。
  • AWSコンソールへのログイン情報はブラウザ側で記憶。

フローは下記のようにした。

新しいChromeを起動する

初期URLにAWSコンソールのURLを設定。
ウィンドウの状態は「最大化」に設定。これは一部Webリンクがうまいこと使えなかったため、固定のサイズにして「マウスクリックの送信」で指定座標でクリックさせるため。

マウスクリックの送信

AWSコンソールへのサインインがうまいこといかなかったので、サインインのボタンの座標を指定して、マウスを左クリックさせた。

Webページのリンクをクリックします

「EC2」→「インスタンス(実行中)」→「【インスタンス名】」とクリックされるように設定。
Web UI要素の取得がうまくいかなかったが、ブラウザの拡張機能を入れ直したらうまくいった。
(たまに失敗するので、「エラー発生時」で再試行する設定をONにした)

マウスクリックの送信

再びマウスクリックを利用してパブリックIPをコピーするアイコンに座標を指定し、クリック。

Webブラウザを閉じる

一応ブラウザは閉じておきます。

クリップボード テキストを取得

クリップボードに取ったパブリックIPを変数として格納。

テキストをファイルに書き込む

ここで、適当なテキストファイルにIP、ID、パスワードがカンマ区切りとなるように書き込む。
 ※パスワードを書き込む際のエスケープ文字は”%”

%ClipboardText%,Administrator,【パスワード】

これでいったんリモートデスクトップに必要な情報は取得。

Powershellでリモートデスクトップ実行

この部分もPower Automate Desktopでできそうだが、既存のPowershellがあったので流用。下記のPowershellで無事接続できるようになった。

$info = Import-Csv 【Power Automate Desktopで作成したファイル】 -Encoding Default -Header "IP","ID","PW"
$IP = ${info}.IP
$ID = ${info}.ID
$PW = ${info}.PW
cmdkey /generic:TERMSRV/${IP} /user:${ID} /pass:${PW}
mstsc /v:$IP

コメント

タイトルとURLをコピーしました