世の中には、パスの指定では起動できず、Powershellなどから特定のコマンドやコマンドレットを実行する必要があるアプリケーションが存在する。今回は、そうしたアプリケーションの起動をPower Automateで自動化する方法を取り上げる。

PowerShell経由で実行する

結論から書くと、Power Automate でアプリケーションパスとしてPowerShellを指定し、その引数に実行したいコマンドやコマンドレットを指定する。この方法であれば、パスの指定では起動できないアプリケーションをPower Automateの「アプリケーションの実行」から起動できるようになる。

PowerShellのパスを調べる

今回、Power Automateの「アプリケーションの実行」にPowerShellのパスを指定する必要がある。しかし、ここは多少状況が複雑なので説明が必要だ。

まず、Windows 10やWindows 11には「Windows PowerShell」と呼ばれるPowerShellがインストールされている。実行ファイル名は「powershell.exe」だ。バージョンは5.1系で、このPowerShellは今後も提供されることが約束されている。ただし、MicrosoftはすでにWindows Powershellの開発を終了しており、このシェルは後方互換性の維持を目的に提供されているものだ。そのため、積極的な利用は推奨されていない。

代わりにMicrosoftはオープンソースで開発を行っている「PowerShell 7」の利用を推奨している。実行ファイル名は「pwsh.exe」だ。バージョンは7系で、基本的にはこちらの利用がお薦めだ。しかし、このバージョンは最初からはインストールされておらず、Microsoft StoreやWingetを経由して自分でインストールする必要がある。最初からはインストールされていないケースがほとんどだと思う。

自分の使っている環境にどのバージョンがインストールされているかは、PowerShellで次のようにGet-Commandコマンドレットを実行することで確認できる(ターミナルアプリケーション、もしくはWindows PowerShellを起動すると、実行するアプリケーションが起動するので、そこで実行する)。

  • Get-Command pwsh.exe|Format-Listと実行

    Get-Command pwsh.exe | Format-Listと実行

  • Get-Command powershell.exe|Format-Listと実行

    Get-Command powershell.exe | Format-Listと実行

上記の実行結果はどちらもインストールされていることを示している。存在していなければコマンドレットの結果はエラーになる。

上記結果から得られるパスは次の通りだ(環境が違うとパスが異なることがあるので、お手元で表示されたパスを使っていただきたい)。

  • PowerShell 7 - C:\Program Files\PowerShell\7\pwsh.exe
  • Windows PowerShell - C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe

違いがわからない場合には「powershell.exe」のパスを調べて使えばよい。ただ、推奨されているのはpwsh.exeなので、可能であればPowerShell 7をインストールしてpwsh.exeを使える状態にしておこう。

Power Automate「アプリケーションの実行」を書き換える

それではPower Automateの「アプリケーションの実行」アクションを編集してみよう。まず、次のようにアプリケーションパスにpwsh.exeのパスを、コマンドライン引数に「Start-Process ms-settings:personalization-background」を入力する。

  • アプリケーションの実行アクションの編集

    アプリケーションの実行アクションの編集

保存後の編集ウィンドウは次のようになる。

  • 編集後の編集ウィンドウ

    編集後の編集ウィンドウ

ここで「▷」を押して実行しても、設定アプリケーションは起動しない。実は先ほどの入力では指定が不足している。次のスクリーンショットのように、コマンドライン引数の指定を「-Command Start-Process ms-settings:personalization-background」と変更する。

  • アプリケーションの実行アクションの編集

    アプリケーションの実行アクションの編集

保存後の編集ウィンドウは次のようになる。

  • 編集後の編集ウィンドウ

    編集後の編集ウィンドウ

ここで「▷」を押して実行すると、次のスクリーンショットのように設定アプリケーションが起動する。

  • Power Automateから起動された設定アプリケーション

    Power Automateから起動された設定アプリケーション

PowerShell 7 (pwsh.exe)は起動時にコマンドを処理させる方法として「-Command」というパラメータを提供しており、このパラメータを経由してコマンドやコマンドレットを指定しないと無視されて処理が行われない。間違えやすいポイントなので注意しよう。

参考までにWindows PowerShell (powershell.exe)を使う場合のサンプルも掲載しておく。次のように「アプリケーションの実行」のアプリケーションパスを変更する。コマンドライン引数はpwsh.exeで指定したものと同じでよい。

  • アプリケーションの実行アクションの編集

    アプリケーションの実行アクションの編集

保存後の編集ウィンドウは次のようになる。

  • 編集後の編集ウィンドウ

    編集後の編集ウィンドウ

ここで「▷」を押して実行すると、次のスクリーンショットのように設定アプリケーションが起動する。

  • Power Automateから起動された設定アプリケーション

    Power Automateから起動された設定アプリケーション

この方法はPower Automateのみならず、他のアプリケーションでも利用できる。基本的な方法なのでここで使えるようになっておこう。

「アプリケーションの実行」を使うように書き換える

今回の方法を使って、これまでに作成したフローをシンプル化してみよう。例えば、最初に作成したスクリーンショット撮影用の背景色やテーマに変更する「スクリーン ホワイトモード」を編集する。

  • 「スクリーン ホワイトモード」フロー

    「スクリーン ホワイトモード」フロー

  • 「スクリーン ホワイトモード」フロー

    「スクリーン ホワイトモード」フロー

「スクリーン ホワイトモード」フローは19個のアクションでできている。このフローの1と19は削除可能で、2から6までは「アプリケーションの実行」で置き換えができる。その置き換えを実行したフローが次のようになる。

  • 「スクリーン ホワイトモード」フロー改良後

    「スクリーン ホワイトモード」フロー改良後

  • 「スクリーン ホワイトモード」フロー改良後

    「スクリーン ホワイトモード」フロー改良後

改良後のフローは13個までアクションが減っている。実行してみると、設定アプリケーションを起動するまでの時間が短縮されているので、その分処理も高速になる。アクションは少ない方が、後から見返したときに理解しやすい。

Power Automateのプログラミングの基本はこれだけ

Power Automateで扱う自動化の「プログラミング」は基本的には今回取り上げたようなものだけだ。アクションを追加し、そのアクションの設定ダイアログの内容を適切なものにし、そしてまたアクションを追加し、という操作を繰り返していく。これで最終的にいろいろな自動化を実現することができる。

使いこなすにはWindows自体の知識が必要になるのだが、そこは逆説的にPower Automateを使う際に調べて覚えればよい。次回からはより実用的なサンプルを取り上げて自動化の方法を紹介していく。