Windowsでアプリケーションを起動させたい時には、マウスを動かす。Windows 11のWinボタンで表示されるスタートメニューから目的のソフトウェアを探すというのが一般的ではないだろうか。デスクトップに作成・保存したショートカットから起動するなど様々な呼び出し方があるが、ターミナルで操作しながらこれらを呼び出すときに少し面倒くさい。

GUIのような視覚で選択する場合には、ターミナルでの操作に比べて情報量が多いので微細な認知負荷を感じてしまう。ターミナルから手軽に呼び出せるようにしておきたいものだと感じた。PowershellのStart-Process(公式API)を使えば呼び出せる。

Start-Process "C:\Program Files (x86)\Hidemaru\Hidemaru.exe"
  • Start-Process "exeファイルへの絶対パス"で秀丸エディター起動

    Start-Process "exeファイルへの絶対パス"で秀丸エディター起動

環境変数やレジストリにあらかじめ設定されているようなブラウザの場合は

Start-Process chrome "https://www.google.com"

とURL指定で入力してやれば、Google chromeがhttps://www.google.comを開いた状態で起動する。

  • Start-Process chrome "https://www.google.com"で実行

    Start-Process chrome "https://www.google.com"で実行

環境変数($env:PATH)やレジストリ(Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths'やGet-ChildItem 'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths'で表示)登録されていれば、絶対パスを使わずに呼び出せるので、よく使うものや使い勝手の良さそうなアプリを選んでStart-Processで呼び出すというの手だ。

筆者の場合、HKLM (HKEY_LOCAL_MACHINE)を開くと

Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths'

NameにあるものがStart-Processでほぼ呼び出せる。使っていないが、面白そうなものや久しぶりなものも、あったりするので、これはこれで楽しめる。

  • HKEY\_LOCAL\_MACHINEの登録をGet-ChildItemで表示

    HKEY\_LOCAL\_MACHINEの登録をGet-ChildItemで表示

ここでは、Excelを開いてみよう。先のレジストリ表示のNameでExcelはexcel.exe登録されているので、名前だけで呼びだせる。

  • ターゲットのexcelを発見、excelで呼び出せる

    ターゲットのexcelを発見、excelで呼び出せる

Start-Process excel
  • Start-Process excelでExcelが起動した

    Start-Process excelでExcelが起動した

OneNoteも同様にOneNoteで呼び出せるので、

Start-Process OneNote

としてやると

  • OneNoteも同様に可能だ

    OneNoteも同様に可能だ

やはり、コマンドラインから開けると手早い。ステルスな操作ストレスを短縮してくれる。ここに個人的な価値を感じるので極めて短いがPowerShellのプロフィールに登録しておこう。


function excel {
    Start-Process excel
    }
function onenote {
    Start-Process OneNote
    }

  • notepad $PROFILEでexcel、onenoteと名付けてそれぞれ登録.$PROFILEで反映させておくと

    notepad $PROFILEでexcel、onenoteと名付けてそれぞれ登録.$PROFILEで反映させておくと

  • excel、onenoteでササっとPowerShellから呼び出せる

    excel、onenoteでササっとPowerShellから呼び出せる

各ブラウザにURLパラメータ付きでコマンド登録する

SaaSによる業務処理が多い昨今である。ブラウザとURLを組み合わせてコマンドラインで開きたいというケースもある。そのような場合でも同様にコマンド化しておけば便利なケースもあるだろう。ブラウザの場合URLをStart-Processのパラメーラーに指定できる。

chrome https://www.youtube.com/
msedge https://copilot.microsoft.com/
firefox https://github.com/trending

これらをPowerShellのコマンドとして登録するのであれば、こんな感じだろう。

function youtube {
    Start-Process chrome https://www.youtube.com/
    }
function copilot {
    Start-Process msedge https://copilot.microsoft.com/
    }
function githubtrend {
    Start-Process firefox https://github.com/trending
    }

さきほど同様にnotepad $PROFILEで上記を設定し、.$PROFILEで反映すると、

  • youtubeコマンドでChromeでYoutube

    youtubeコマンドでChromeでYoutube

  • copilotコマンドでEdgeでcopilot

    copilotコマンドでEdgeでcopilot

  • githubtrendコマンドでGitHubのトレンディングページ

    githubtrendコマンドでGitHubのトレンディングページ

のようなことも可能になる。業務でブラウザを固定したほうがいいような場合に機能を発揮するし、自身がつけたコマンド名から特定Webサイトを開くというエクスペリエンスも活用幅を広げそうである。