cheshire-boy

システム・サービス

【Start-Process】PowerShellでプロセスをバックグラウンド起動する方法

投稿日:2017年1月10日 更新日:

こんにちは。チェシャ男です。(-皿-)

今回は、

【PowerShell で別プロセスをバックグラウンド起動する方法】

についてご紹介します。

Start-Process コマンドレットでは "-WindowStyle" オプションで起動時のウィンドウ状態を指定することができます。

Start-Process で新たにプロセスを立ち上げてアプリケーションを動かす場合、「バックグラウンドで処理させたいなぁ」という時にこのオプションを活用しましよう!

別プロセスを立ち上げる基本的な方法についてはこちら↓の記事をご参考ください。

 

スポンサーリンク

WindowStyle オプションの指定方法

プロセスを開始するコマンドレット

Start-Process

の使い方は以下をご覧ください。

【コマンドレット】

Start-Process

【オプション】

パターン1
-FilePath <実行ファイルパス>
-ArgumentList <開始プロセスの引数>
-Credential <ユーザ情報>
-WorkingDirectory <string>
-LoadUserProfile
-NoNewWindow
-PassThru
-RedirectStandardError <プロセス上のエラー出力先>
-RedirectStandardInput <プロセスへの入力ファイル>
-RedirectStandardOutput <プロセスからの出力ファイル>
-WindowStyle <ウィンドウの状態>
-Wait
-UseNewEnvironment

パターン2
-FilePath <実行ファイルパス>
-ArgumentList <開始プロセスの引数>
-WorkingDirectory <プロセスの実行場所>
-PassThru
-Verb <プロセス開始時の動作>
-WindowStyle <ウィンドウの状態>
-Wait

【入力】

None

【出力】

None
System.Diagnostics.Process

【エイリアス】

saps
start

プロセスとは何か」については「プロセスとは...」をご覧下さい。

まずは WindowStyle オプションの動作について順を追って解説します。

"Normal" を指定して通常起動する

WindowStyle オプションで「Normal」を指定することでプロセスを通常起動させることができます。つまり、いつものようにクリックして起動したときと同じですね。

指定方法は

Start-Process 起動対象 -WindowStyle Normal

です。

試しに別プロセスとして「PowerShell」をもう1つ起動してみましょう。

PowerShell の実行ファイルにはパスが通っているので "-FilePath" オプションに「powershell」を指定します。

また、今回は別プロセスとして起動したPowerShellと区別するために "-PassThru" オプションを使用します。

"-PassThru" オプションとは通常戻り値が発生しないコマンドレットに対して戻り値(オブジェクト)を返させるというものです。

実行結果を見ると新たにプロセスが立ち上がっていることがわかります。

実際に起動してきた PowerShell 画面を見てみると下のように通常サイズであることがわかります。

通常サイズ起動-チェシャわら
通常サイズ起動-チェシャわら

"Maximized" を指定して最大化で起動する

WindowStyle オプションで「Maximized」を指定することでプロセスを最大化状態で起動させることができます。最大化状態で起動させたい時や最大化する手間を省きたい時に使えますね。

指定方法は

Start-Process 起動対象 -WindowStyle Maximized

です。

先ほどと同様に別プロセスとして「PowerShell」をもう1つ起動してみましょう。

今回も別プロセスとして起動した PowerShell と区別するために "-PassThru" オプションを使用します。

実行結果を見ると新たにプロセスが立ち上がっていることがわかります。

実際に起動してきた PowerShell 画面を見てみると下のように最大化状態であることがわかります。右上のボタンが「元に戻す(縮小)」になっていますね。

最大サイズ起動-チェシャわら
最大サイズ起動-チェシャわら

"Minimized" を指定して最小化で起動する

最小化状態とはタスクバー上に格納された状態(ウィンドウが隠された状態)の事を指します。

下の画像のボタンを押したときに最小化されます。

最小化ウィンドウとは-チェシャわら
最小化ウィンドウとは-チェシャわら

WindowStyle オプションで「Minimized」を指定することでプロセスの起動時に最小化させることができます。

指定方法は

Start-Process 起動対象 -WindowStyle Minimized

です。

同じく別プロセスとして「PowerShell」をもう1つ起動します。

今回も別プロセスとして起動した PowerShell と区別するために "-PassThru" オプションを使用します。

実行結果を見ると新たにプロセスが立ち上がっていることがわかりますが実際にはウィンドウは立ち上がってきません。

しかしタスクバーを見てみると下の画像のように PowerShell が2つ起動していることがわかります。

最小化のPowershell起動-チェシャわら
最小化のPowershell起動-チェシャわら

(※見やすいように画像を一部加工しています)

"Hidden" を指定してバックグラウンドで起動する

さて、本題のバックグラウンド起動する方法についてです。

WindowStyle オプションで「Hidden」を指定することでプロセスをバックグラウンド起動させることができます。

バックグラウンド起動させた場合は最小化状態での起動とは違いタスクバーにも表示されません。

指定方法は

Start-Process 起動対象 -WindowStyle Hidden

です。

別プロセスとして「PowerShell」をもう1つ起動します。

今回も別プロセスとして起動した PowerShell と区別するために "-PassThru" オプションを使用します。

実行結果を見ると新たにプロセスが立ち上がっていますがウィンドウは立ち上がってきません。

また、最小化の時とは異なりタスクバーを見ても Poweshell が二重起動している様子はありません。

完全にバックグラウンドつまり私たちからは見えないところで起動されています。

今回のように Powershell 自体をバックグラウンド起動しても何も恩恵はありませんが

  • スクリプトをで実行する
  • 定期的にバックアップを実行させる

といったウィンドウを表示させる必要が無い場合に使用します。

ちなみに停止したい時は「Stop-Process」でプロセスIDを指定して実行します。

実際に実行してみます。

このように、バックグラウンドで実行されている見えないプロセスでも停止することができます。

よく似た NoNewWindow オプションとは

"WindowStyle" オプションとよく似た "NoNewWindow" オプションというものが存在します。

このオプションの意味は、

新たにウィンドウを立ち上げない

というものです。

つまり現在操作中のプロンプト画面に新しいプロセスを立ち上げるということです。

入れ子構造で起動すると考えるとイメージしやすいかもしれません。

"WindowStyle" と混同しやすいので注意が必要です。

また "WindowStyle" オプションと "NoNewWindow" オプションは同時に使用することができないので

と、このように両方を指定した場合はエラーとなります。

まとめ

プロセス起動時にウィンドウ状態を指定する場合は

Start-Process 起動対象 -WindowStyle ○○

を使用する。

○○に以下の4つの中から状態を指定できる

Normal  => 通常サイズ
Minimized=> 最大化
Maximized=> 最小化
Hidden  =>バックグラウンド

バックグラウンド起動するには ”-WindowStyle Hidden” を指定する。

また、"WindowStyle" と "NoNewWindow" オプションは併用できない

スポンサーリンク

-システム・サービス
-, , , ,

Copyright© 【チェシャわら】PowerShellとは、から学ぶ入門者の教科書-脱コマンドプロンプト- , 2018 AllRights Reserved Powered by micata2.