Windows PowerShell でプロセスの開始
Start-Process
コマンドレットは、制御および管理された方法で 1つ以上のプロセスを開始するために使用される PowerShell コマンドです。既定では、開始されたプロセスは現在のすべての PowerShell 環境を継承します。
Start-Process
コマンドレットは、実行可能ファイル、バッチスクリプト、MS-DOS および PowerShell コマンド、さらには Java アプリケーションを実行または実行できます。さらに、Windows PowerShell は、Start-Process
コマンドレットを使用して、ユーザープロファイル、Windows ステータス、資格情報などを指定できます。
この記事では、Start-Process
コマンドレットがどのように機能し、スクリプトを作成するときにそれを利用するかについて説明します。
PowerShell の Start-Process
コマンドレット
Start-Process
コマンドレットは、1つ以上のプロセス、実行可能ファイルまたはスクリプトファイル、またはインストールされたソフトウェアがコンピューター上で開くことができる任意のファイルを実行します。
Start-Process
コマンドレットには、Windows PowerShell を使用する場合の基本的な構文が以下に示されています。
Start-Process <string>
Start-Process
コマンドレットパラメータ
Start-Process
コマンドレットは、パラメーターを使用して、コマンドレットにさらに強力な機能と柔軟性を追加できます。
新しいプロセスまたは実行可能ファイルを開始する
前述のように、Start-Process
コマンドの最も基本的な使用法は、実行可能ファイル、バッチまたはスクリプトファイル、または以下の構文のようなコマンドを提供することです。たとえば、次の構文で呼び出されると、メモ帳アプリケーションが開きます。
Start-Process notepad.exe
または、コマンドレットで -FilePath
パラメーターを使用して、実行するファイルの場所を指定することもできます。
Start-Process -FilePath notepad.exe
実行可能ファイルまたはバッチファイルの完全なパスを以下で指定することもできます。次の例では、次の例の D:\scripts
ディレクトリの下にあるバッチファイルを実行します。
Start-Process -FilePath "D:\scripts\backup.bat"
標準入力をファイルとして設定
提供された標準入力コンテンツが指定されたプロセスにリダイレクトされる場合、標準入力を使用してプロセス入力を指定できます。この場合、-RedirectStandardInput
パラメーターは、新しく作成されたプロセスへの入力としてファイルを設定できます。
Start-Process -FilePath "D:\scripts\backup.bat" -RedirectStandardInput test.txt
上記の構文例では、backup.bat
実行可能入力はファイル test.txt
から取得されます。
標準出力をファイルとして設定
プロセスが実行されると、端末、画面、またはファイルに出力できる出力が作成される場合があります。-RedirectStandardOuput
パラメーターを使用して、ファイルへの出力を指定できます。
Start-Process -FilePath "D:\scripts\backup.bat" -RedirectStandardOutput test.txt
backup.bat
実行可能出力は、上記の構文例のファイル test.txt
から取得されます。
標準エラー出力をファイルとして設定
プロセスの実行中にエラーが発生する可能性があり、これらのエラーに関する情報はデフォルトでコンソールまたは端末に出力されます。-RedirectStandardError
パラメータを使用すると、出力を次のようなファイルにリダイレクトできます。
Start-Process -FilePath "D:\scripts\backup.bat" -RedirectStandardError errors.txt
上記の構文例では、backup.bat
実行可能ファイルの実行中にエラーが発生した場合、エラーはファイル errors.txt
に出力されます。
作業ディレクトリを設定する
デフォルトでは、新しいプロセスは現在の作業ディレクトリで実行されます。これは通常、システムドライブ C:
です。ただし、-WorkingDirectory
パラメータを使用して、以下の新しい作業ディレクトリを設定できます。
Start-Process notepad.exe -WorkingDirectory "D:\"
この例では、
新しい環境を作成する
この記事で説明した以前のパラメーターと一緒に、それらを 1つのスクリプトブロックにマージできます。
-UseNewEnvironment
パラメーターは、プロセスがその環境変数を使用して実行されることを指定します。
$processOptions = @{
FilePath = "sort.exe"
RedirectStandardInput = "TestSort.txt"
RedirectStandardOutput = "Sorted.txt"
RedirectStandardError = "SortError.txt"
UseNewEnvironment = $true
}
Start-Process @processOptions
最大化されたウィンドウの Start-Process
Start-Process
コマンドは、コマンドラインプロセスまたは GUI を備えた GUI プロセスを開始できます。
スクリプトは、-WindowStyle
パラメータを使用して GUI ウィンドウサイズを設定できます。このパラメータは、新しいプロセスウィンドウを最大化するために最大化として設定できます。
Start-Process notepad.exe -WindowStyle Maximized
別のユーザーとの Start-Process
デフォルトでは、開始されたプロセスは現在のユーザー権限として実行されます。ただし、Start-Process
コマンドレットは、プロセスを実行する新しいユーザーを提供することにより、-Credential
パラメーターを使用してプロセスの特権を変更できます。
ユーザー名を入力すると、パスワードの入力を求められます。
Start-Process notepad.exe -Credential <username>
管理者として Start-Process
を実行する
- Verb
パラメーターを使用して、管理者としてアプリケーションを実行できます。
Start-Process notepad.exe -Verb RunAs
指定された引数を持つ Start-Process
コマンド、プロセス、またはバッチファイルは、入力データを取得するために単一または複数の引数を受け入れる場合があります。
この入力データは引数と呼ばれ、Start-Process
コマンドは -ArgumentList
を使用して開始されたプロセスに引数を提供できます。引数としてプロセスに渡される提供された引数リスト。
Start-Process -FilePath "$env:comspec" -ArgumentList "/c","dir","`"%systemdrive%\program files`""
PowerShell の利点 Start-Process
- スクリプトファイルはローカルでのみ開くことができます。これは、Windows PowerShell スクリプトを使用したリモート攻撃を防ぐセキュリティ技術です。
- コマンドレットは、Microsoft がサポートするスクリプト環境で実行されます。Windows PowerShell がサポートされている限り、Microsoft は、更新プログラムを使用して、言語を最新の状態に保つためのリソースを提供します。
- 広大な開発者コミュニティは、特に
Start-Process
コマンドレットと知識を容易に共有します。 - コマンドレットとシステムデータストアは、標準の一貫した構文と命名規則を使用して、データを簡単に共有します。
- このコマンドレットを使用すると、オペレーティングシステムのナビゲーションが簡素化され、ユーザーはファイルシステム、レジストリ、およびその他のデータに慣れることができます。
- オブジェクトは簡単に直接操作したり、他のツールやデータベースに送信したりできます。
- ソフトウェアベンダーと開発者は、カスタムツールを構築できます。
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn