PowerShellのStart-Processの使用方法とは? Start-Processを使いこなそう!

PowerShellのStart-Processの使用方法とは? Start-Processを使いこなそう!のアイキャッチイメージ

PowerShellで新しいプロセスを立ち上げるには?


今回は、PowerShellから他のプログラムを立ち上げる方法について説明します。

PowerShellでプログラムを作っているなら、できればPowerShell内で完結させたいと思う方もいますが、PowerShellだけではできないこともあります。または、PowerShellで作ろうとしていた一部のプログラムが既に出来上がっていたら、あとは起動してしまえば再度作る必要もなくなります。

また、パラメータや動詞を使用して立ち上げ時の条件を詳細に指定できます。バックグラウンドで起動したり、起動後に印刷処理をするようなシステムを立ち上げる際にも使います。

それでは、活用例を示しながら説明していきます。

新しいプロセスを立ち上げてみよう


Start-Processコマンドレットを使うことで、新しいプロセスを起動することができます。つまり、PowerShell実行中に別のプログラムを指定して起動できます。

起動できるものは、実行可能ファイルやスクリプトファイルです。プログラムを指定して開くことも可能です。例えば、既に保存済みのテキストファイルを開いたり、バックグラウンドで起動するプログラムを実行できます。

実行ファイルを指定してプロセスを開始する

実行ファイルを指定してプロセスを開始する場合はFilePathパラメータを使用してファイルのパスを指定します。

Start-Process -FilePath 【実行ファイルのパス】

で実現できます。

では早速、メモ帳を起動してみましょう。メモ帳はパス「C:\Windows\System32\」に保存されています。ファイル名は「notepad.exe」です。

例)Start-Process -FilePath C:\Windows\System32\notepad.exe

これでメモ帳が起動されます。

現在の作業フォルダが実行ファイルの場所を指定している場合はファイル名のみでOKです。

実行ファイル以外のファイルを指定すると?

例えば、テキストファイルとして保存したファイルを指定したい場合もコマンドレットは同様です。テキストファイルのパスを指定すれば起動します。

この時、そのファイルに関連づけられている既定プログラムで起動します。つまり、ファイルをダブルクリックして開いた時と同じように起動します。

そのファイルの既定のプログラムが何かを知りたい場合は、ファイル上で右クリック→プロパティで確認できます。

Macをお使いの場合はファイル上で右クリック→情報を見る→「このアプリケーションで開く」の欄で確認してください。

では、Cドライブのtempフォルダ内にあるhoge.txtというファイルを起動してみましょう。

例)Start-Process -FilePath C:\temp\hoge.txt

これでファイルを既定のプログラムで開けます。

プロセスに対して引数を指定する

引数を指定してプロセスを起動したい場合は
Start-Process -FilePath 【実行ファイルのパス】 -ArgumentList 【引数を指定】

で実現できます。

例えば、シングルサインオン機能を作る時に便利です。Start-Processを使って外部プログラムを起動する際、引数としてパスワードやIDを設定します。すると、外部プログラム側で引数を受け入れるような改修をするだけで連携したシステムを作ることが可能です。

他社製品と連携しているようなシステムの場合、ユーザは使うシステムを変えるたびにログインし直すことを嫌う傾向にあります。そういった際にシングルサインオンの機能が重宝されます。

応用編!パラメータを使っていろんな方法でプロセスを立ち上げてみよう


ここまで、Start-Processに関するいくつかのパラメータを使った説明をしましたが、使用可能なパラメータは他にもあります。

ここからは、パラメータを複数指定してプロセスを立ち上げる応用について説明します。

尚、Start-Processで使用可能なパラメータについてはMicrosoft公式ドキュメントで取り上げられています。PowerShellについて記述していますので、参考にしたい場合は確認してみてください。(英文のためブラウザの翻訳機能の使用をお勧めします。)

【応用編】テキストファイルを開いて印刷するプロセスを立ち上げてみよう

では、テキストファイルを開いて内容を印刷するようプロセスを起動してみましょう。テキストファイルは、Cドライブのtempフォルダ内にあるhoge.txtとします。

Start-Process -FilePath “hoge.txt” -WorkingDirectory “C:\temp” -Verb Print

新しく出てきたパラメータについて解説していきます。

「WorkingDirectory」パラメータは、新しいプロセスの場所を開始フォルダとして指定します。このパラメータを使って作業フォルダを指定した場合、FilePathパラメータではフルパスでなくファイル名のみの指定となります。

「Verb」パラメータはプロセスが立ち上がる時の動詞(動き)を指定します。いくつかの動詞がありますが、立ち上がるファイルの拡張子によって使えるものが限られます。ただし、Windows以外のOSでは適用されませんので注意しましょう。

ここでは「印刷する」という意味の動詞であるPrintを指定しました。

Verbパラメータについてもっと知りたい

Verbパラメータで使える動詞は数多くあります。どのような動詞が使用可能かを知りたい場合は以下のコマンドレットを使うことで一覧の取得が可能です。

Get-Verb

また、ファイルの拡張子によって使える動詞が決まっています。基本的なファイルの種類と使える動詞は以下のとおりです。

拡張子 動詞
.exe Open(開く)、RunAs(管理者権限で実行)、RunAsUser(別のユーザとして実行)
.cmd Edit(編集)、Open、Print(印刷)、RunAs、RunAsUser
.txt Open、Print

【応用編】最大化したウインドウでプロセスを立ち上げてみよう

ここではメモ帳を新しいプロセスとして立ち上げてみましょう。その際、ウインドウを最大化し、プロセスが終わるまでの間ウインドウを保持してみます。

指定するメモ帳はCドライブのtempフォルダ内にあるhoge.txtとします。

Start-Process -FilePath C:\temp\hoge.txt -Wait -WindowStyle Maximized

解説していきます。「Wait」パラメータはプロセスが終了するまでウインドウを保持し続けます。その間は他の入力を受け付けません。

「WindowStyle」パラメータは、立ち上げたプロセスのウインドウの状態を指定します。Windows以外のOSでは適用されない点に注意しましょう。以下の4つをパラメータの値として定義できます。

意味 備考
Normal 通常 デフォルト値
Hidden 非表示 バックグラウンドジョブ起動時に使用
Minimized 最小化 画面を最小化した状態で起動する際に使用
Maximized 最大化 画面を最大化した状態で起動する際に使用

Start-Processを使って応用の効くシステムを作ってみよう!


ここまでPowerShellのStart-Pocessコマンドレットの使用方法について説明しました。他のコマンドレットでも同じことですが、パラメータを駆使することで様々な条件でプロセスが起動できます。

更に、PowerShellの利点の一つですが、Verbパラメータの動詞を使うことでより詳細な動作を指定できる点も押さえておきたいところです。

これらのパラメータや動詞を使って応用の効いたシステムを作ってみましょう。

インフラエンジニア専門の転職サイト「FEnetインフラ」

FEnetインフラはサービス開始から10年以上『エンジニアの生涯価値の向上』をミッションに掲げ、多くのエンジニアの就業を支援してきました。

転職をお考えの方は気軽にご登録・ご相談ください。