パスからは起動できないアプリケーションもある

前回はアプリケーションのパスを指定してPower Automateでアプリケーションを起動する方法を取り上げた。レコーダーを使わずに組み上げた最初のプログラムということになる。

しかし、Windowsで使うアプリケーションの中には直接パスを指定しても起動できないアプリケーションがある。Windowsが最初から提供しているシステム設定系のアプリケーションや、基幹に関与するアプリケーションがそれに該当する。最初にレコーダーで操作した「設定アプリケーション」もそのうちの1つだ。

試しに、前回と同じ方法で「設定アプリケーション」のパスを調べてみよう。まず、設定アプリケーションを起動していない状態で「タスクマネージャ」を起動する。

  • タスクマネージャ

    タスクマネージャ

この段階では設定アプリケーションは起動していないので、タスクマネージャには設定アプリケーションの存在は確認できない。

この状態で設定アプリケーションを起動する。

  • 設定アプリケーション

    設定アプリケーション

ここでタスクマネージャを確認すると、次のようにアプリの一覧に「設定」が追加されたことを確認できる。

  • タスクマネージャのアプリに「設定」の登場を確認

    タスクマネージャのアプリに「設定」の登場を確認

前回と同じ要領で、設定の「プロパティ」を選択する。

  • タスクマネージャ: 「設定」→「プロパティ」

    タスクマネージャ「設定」→「プロパティ」

起動してくるプロパティダイアログの「セキュリティ」タブから「オブジェクト名」を確認すると、次のようにパスを見つけられる。

  • 設定アプリケーションに関するプロパティダイアログ

    設定アプリケーションに関するプロパティダイアログ

  • 設定のプロパティ: 「セキュリティ」→「オブジェクト名」

    設定のプロパティ: 「セキュリティ」→「オブジェクト名」

「C:\Windows\ImmersiveControlPanel\SystemSettings.exe」が正しいパスに見えるが、ここからは起動できない。

設定アプリケーションはパスから起動できない

ターミナルアプリケーションを起動して、先ほど調べたパスを貼り付けて実行してみよう。

  • ターミナルアプリケーションで設定アプリケーションを起動

    ターミナルアプリケーションで設定アプリケーションを起動

しかし、何も起動しない。タスクマネージャで確認しても、設定アプリケーションの起動は確認できない。

設定アプリケーションを起動する方法はms-settings:

では、どのように起動するかを解説していく。、設定アプリケーションの起動方法はGoogle検索やChatGPTを使うとすぐにわかる。まず公式のドキュメントとしては「Launch the Windows Settings app - UWP applications | Microsoft Learn」に説明がまとまっている。

またはChatGPTを使うと、次のような答えが得られる(現在MicrosoftはWindowsのシェルとしてPowerShellを使うことを推奨しているため、PowerShellの使用を想定して質問している)。

  • Windowsの設定アプリケーションをPowerShellから起動する方法

    Windowsの設定アプリケーションをPowerShellから起動する方法

調査した内容に従って動作を確認してみよう。まずは指定された通りにコマンド(コマンドレット)を実行する。

  • 設定アプリケーションを起動するコマンド(コマンドレット)を実行

    設定アプリケーションを起動するコマンド(コマンドレット)を実行

すると今度は次のように設定アプリケーションが起動する。

  • Start-Process ms-settings:で起動してきた設定アプリケーション

    Start-Process ms-settings:で起動した設定アプリケーション

Launch the Windows Settings app - UWP applications | Microsoft Learn」を読むとわかるように、この方法で起動する場合「:(コロン)」の後にさらに単語を続けることで特定のページの指定が可能になる。こうして、設定アプリケーションを開くことができる。

たとえば「Start-Process ms-settings:personalization」のように実行すると、次のように「個人用設定」のページで設定アプリケーションが起動する。

  • Start-Process ms-settings:personalizationを実行

    Start-Process ms-settings:personalizationを実行

  • Start-Process ms-settings:personalizationで起動してきた設定アプリケーション

    Start-Process ms-settings:personalizationで起動した設定アプリケーション

これまでは設定アプリケーションの「個人用設定」→「背景」を自動化の対象として操作していたが、このページも次のように直接開くことができる。

  • Start-Process ms-settings:personalization-backgroundを実行

    Start-Process ms-settings:personalization-backgroundを実行

  • Start-Process ms-settings:personalization-backgroundで起動してきた設定アプリケーション

    Start-Process ms-settings:personalization-backgroundで起動した設定アプリケーション

ここまでわかればあとはPower Automateで自動化できそうだが、このままだと自動化できない。今回は、自動化できないところまでを確認してみよう。

「Start-Process ms-settings:」はパスではないので使えない

Power Automateのアクション「アプリケーションの実行」には、実行するアプリケーションのパスを指定する必要がある。試しに、パスの部分を「Start-Process ms-settings:personalization」に変えてみよう。

  • Power Automate: 「アプリケーションの実行」→「アプリケーションパス」を「Start-Process ms-settings:personalization」に設定

    Power Automate: 「アプリケーションの実行」→「アプリケーションパス」を「Start-Process ms-settings:personalization」に設定

この状態で「▷」を押してフローを実行する。

  • 「▷」を押してフローを実行

    「▷」を押してフローを実行

すると次のようにエラーが表示されて自動処理は失敗してしまう。

  • 実行はエラーは失敗

    エラーリストが表示される

詳しい説明は省くが、「Start-Process ms-settings:personalization」という指示は、コマンドレット経由でPowerShellに処理をさせるものだ。実際に処理するのはpowershell.exeまたはpwsh.exeというコマンドであり、Start-Process.exeというコマンドは存在しない。

要するにPower Automateのアクション「アプリケーションの実行」を実行するためのアプリケーションパスには実行できるパスを指定する必要があるので、「Start-Process ms-settings:personalization」と入力しても失敗するわけだ。

PowerShell経由で処理しなければいけないケースは少なくない

このように、実行したいものの実際に対応する実行ファイルが存在しないアプリケーションや機能のようなものは他にも存在している。その場合には上記に説明したようにPowerShell経由で処理を行うというのが1つの方法だ。Windowsの自動化においてもこの方法は知っておく必要があるので、最初に習得しておきたい。

設定アプリケーションをPower Automateから直接起動するための具体的な方法については、次回取り上げる。