Start-Process
ローカル コンピューター上の 1 つ以上のプロセスを開始します。
構文
Start-Process
[-FilePath] <String>
[[-ArgumentList] <String[]>]
[-Credential <PSCredential>]
[-WorkingDirectory <String>]
[-LoadUserProfile]
[-NoNewWindow]
[-PassThru]
[-RedirectStandardError <String>]
[-RedirectStandardInput <String>]
[-RedirectStandardOutput <String>]
[-WindowStyle <ProcessWindowStyle>]
[-Wait]
[-UseNewEnvironment]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Start-Process
[-FilePath] <String>
[[-ArgumentList] <String[]>]
[-WorkingDirectory <String>]
[-PassThru]
[-Verb <String>]
[-WindowStyle <ProcessWindowStyle>]
[-Wait]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
説明
コマンドレットは Start-Process
、ローカル コンピューター上で 1 つ以上のプロセスを開始します。 既定では、 は、 Start-Process
現在のプロセスで定義されているすべての環境変数を継承する新しいプロセスを作成します。
プロセスで実行されるプログラムを指定するには、実行可能ファイルまたはスクリプト ファイル、またはコンピューター上のプログラムを使用して開くことができるファイルを入力します。 実行可能でないファイルを指定した場合は、 Start-Process
コマンドレットと同様に、ファイルに関連付けられているプログラムを Invoke-Item
起動します。
のパラメーターを使用して、ユーザー プロファイルの Start-Process
読み込み、新しいウィンドウでのプロセスの開始、代替資格情報の使用などのオプションを指定できます。
例
例 1: 既定値を使用するプロセスを開始する
次の使用例は、現在のフォルダー内の ファイルを使用する Sort.exe
プロセスを開始します。 コマンドでは、既定のウィンドウ スタイル、作業フォルダー、資格情報など、すべての既定値が使用されます。
Start-Process -FilePath "sort.exe"
例 2: テキスト ファイルを印刷する
次の使用例は、ファイルを印刷するプロセスを C:\PS-Test\MyFile.txt
開始します。
Start-Process -FilePath "myfile.txt" -WorkingDirectory "C:\PS-Test" -Verb Print
例 3: 項目を新しいファイルに並べ替えるプロセスを開始する
次の使用例は、ファイル内のアイテムを並べ替え、 TestSort.txt
ファイル内の並べ替えられたアイテムを返すプロセスを Sorted.txt
開始します。 エラーはすべてファイルに SortError.txt
書き込まれます。 UseNewEnvironment パラメーターは、プロセスが独自の環境変数で実行されることを指定します。
$processOptions = @{
FilePath = "sort.exe"
RedirectStandardInput = "TestSort.txt"
RedirectStandardOutput = "Sorted.txt"
RedirectStandardError = "SortError.txt"
UseNewEnvironment = $true
}
Start-Process @processOptions
この例では、スプラッティングを使用してパラメーターをコマンドレットに渡します。 詳細については、「 about_Splatting」を参照してください。
例 4: 最大化されたウィンドウでプロセスを開始する
この例では、プロセスを開始します Notepad.exe
。 ウィンドウが最大化されて、プロセスが完了するまでそのまま維持されます。
Start-Process -FilePath "notepad" -Wait -WindowStyle Maximized
例 5: 管理者として PowerShell を起動する
この例では、[ 管理者として実行 ] オプションを使用して PowerShell を起動します。
Start-Process -FilePath "powershell" -Verb RunAs
例 6: さまざまな動詞を使用してプロセスを開始する
この例では、プロセスの開始時に使用できる動詞を検索する方法を示します。 使用可能な動詞は、プロセスで実行されるファイルのファイル名拡張子によって決まります。
$startExe = New-Object System.Diagnostics.ProcessStartInfo -Args powershell.exe
$startExe.verbs
open
runas
runasuser
この例では、 を使用New-Object
して、PowerShell プロセスで実行される ファイルの powershell.exe
System.Diagnostics.ProcessStartInfo オブジェクトを作成します。 ProcessStartInfo オブジェクトの Verbs プロパティは、Open 動詞と RunAs
動詞を、 または ファイルを実行.exe
する任意のプロセスでpowershell.exe
使用できることを示しています。
例 7: プロセスへの引数の指定
どちらのコマンドも Windows コマンド インタープリターを起動し dir
、 フォルダーでコマンドを Program Files
発行します。 このフォルダー名にはスペースが含まれているため、値はエスケープされた引用符で囲む必要があります。
最初のコマンドでは、 引数リストとして文字列を指定します。 2 番目のコマンドは文字列配列です。
Start-Process -FilePath "$env:comspec" -ArgumentList "/c dir `"%SystemDrive%\Program Files`""
Start-Process -FilePath "$env:comspec" -ArgumentList "/c","dir","`"%SystemDrive%\Program Files`""
例 8: Linux でデタッチされたプロセスをCreateする
Windows では、 Start-Process
起動シェルとは独立して実行されたままの独立したプロセスが作成されます。 Windows 以外のプラットフォームでは、新しく開始されたプロセスが起動したシェルにアタッチされます。 起動シェルが閉じている場合、子プロセスは終了します。
Unix のようなプラットフォームで子プロセスが終了しないようにするには、 とnohup
を組み合わせますStart-Process
。 次の例では、起動セッションを閉じても有効な状態を維持する、Linux 上の PowerShell のバックグラウンド インスタンスを起動します。 コマンドは nohup
、現在のディレクトリ内のファイル nohup.out
で出力を収集します。
# Runs for 2 minutes and appends output to ./nohup.out
Start-Process nohup 'pwsh -noprofile -c "1..120 | % { Write-Host . -NoNewline; sleep 1 }"'
この例では、 Start-Process
は、デタッチされたプロセスとして起動する pwsh
Linux nohup
コマンドを実行しています。 詳細については、Wikipedia の nohup に関する記事を参照してください。
パラメーター
-ArgumentList
このコマンドレットがプロセスを開始するときに使用するパラメーターまたはパラメーター値を指定します。 引数は、引数をスペースで区切った 1 つの文字列として、またはコンマで区切られた文字列の配列として受け取ることができます。 コマンドレットは、配列を 1 つの文字列に結合し、配列の各要素を 1 つのスペースで区切ります。
ArgumentList 値が新しいプロセスに渡されるときに、PowerShell 文字列の外部引用符は含まれません。 パラメーターまたはパラメーター値にスペースまたは引用符が含まれている場合は、エスケープされた二重引用符で囲む必要があります。 詳細については、「 about_Quoting_Rules」を参照してください。
最適な結果を得るには、すべての引数と必要な引用符文字を含む 1 つの ArgumentList 値を使用します。
Type: | String[] |
Aliases: | Args |
Position: | 1 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Confirm
コマンドレットの実行前に確認を求めるメッセージが表示されます。
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Credential
この処理を実行するアクセス許可を持つユーザー アカウントを指定します。 既定では、コマンドレットは現在のユーザーの資格情報を使用します。
User01 や Domain01\User01 などのユーザー名を入力するか、コマンドレットによって生成された PSCredential オブジェクトをGet-Credential
入力します。 ユーザー名を入力すると、パスワードの入力を求められます。
資格情報は PSCredential オブジェクトに 格納され、パスワードは SecureString として格納されます。
注意
SecureString データ保護の詳細については、「SecureString のセキュリティ保護方法」を参照してください。
Type: | PSCredential |
Aliases: | RunAs |
Position: | Named |
Default value: | Current user |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-FilePath
プロセスで実行されるプログラムの省略可能なパスとファイル名を指定します。 コンピューター上のプログラムに関連付けられている実行可能ファイルまたはドキュメントの名前 (ファイルや .doc
ファイルなど.txt
) を入力します。 このパラメーターは必須です。
システム コマンドに対応しないファイル名のみを指定する場合は、 WorkingDirectory パラメーターを使用してパスを指定します。
Type: | String |
Aliases: | PSPath, Path |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-LoadUserProfile
このコマンドレットは、現在のユーザーのレジストリ キーに HKEY_USERS
格納されている Windows ユーザー プロファイルを読み込むことを示します。 パラメーターは、Windows 以外のシステムには適用されません。
このパラメーターは、PowerShell プロファイルには影響しません。 詳細については、「about_Profiles」を参照してください。
Type: | SwitchParameter |
Aliases: | Lup |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-NoNewWindow
現在のコンソール ウィンドウで新しいプロセスを開始します。 Windows では、既定で PowerShell によって新しいウィンドウが開きます。 Windows 以外のシステムでは、新しいウィンドウは表示されません。
同じコマンドで NoNewWindow パラメーターと WindowStyle パラメーターを使用することはできません。
パラメーターは、Windows 以外のシステムには適用されません。
Type: | SwitchParameter |
Aliases: | nnw |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-PassThru
コマンドレットが開始した各プロセスのプロセス オブジェクトを返します。 既定では、このコマンドレットは出力を生成しません。
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-RedirectStandardError
ファイルを指定します。 このコマンドレットは、プロセスによって生成されたエラーを、指定したファイルに送信します。 パスとファイル名を入力します。 既定では、エラーはコンソールに表示されます。
Type: | String |
Aliases: | RSE |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-RedirectStandardInput
ファイルを指定します。 このコマンドレットは、指定したファイルから入力を読み取ります。 入力ファイルのパスとファイル名を入力します。 既定では、入力はキーボードから取得されます。
Type: | String |
Aliases: | RSI |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-RedirectStandardOutput
ファイルを指定します。 このコマンドレットは、プロセスによって生成された出力を、指定したファイルに送信します。 パスとファイル名を入力します。 既定では、出力はコンソールに表示されます。
Type: | String |
Aliases: | RSO |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-UseNewEnvironment
このコマンドレットが、プロセスに指定された新しい環境変数を使用することを示します。 既定では、開始プロセスは、親プロセスから継承された環境変数で実行されます。
Windows では、 UseNewEnvironment を使用すると、 マシン スコープに定義されている既定の環境変数のみが含まれる新しいプロセスが開始されます。 これには、 が SYSTEM に設定されている$env:USERNAME
副作用があります。 User スコープの変数は含まれません。
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Verb
このコマンドレットがプロセスを開始するときに使用する動詞を指定します。 使用できる動詞は、プロセスで実行されるファイルのファイル名拡張子によって決まります。
次の表に、いくつかの一般的なプロセス ファイルの種類の動詞を示します。
ファイルの種類 | 動詞 |
---|---|
.cmd | Edit , Open , Print , RunAs , RunAsUser |
.exe | Open , RunAs , RunAsUser |
.txt | Open , Print , PrintTo |
.wav | Open , Play |
プロセスで実行されるファイルで使用できる動詞を見つけるには、 コマンドレットを New-Object
使用して、ファイルの System.Diagnostics.ProcessStartInfo オブジェクトを作成します。 使用可能な動詞は、ProcessStartInfo オブジェクトの Verbs プロパティにあります。 詳細については、例を参照してください。
パラメーターは、Windows 以外のシステムには適用されません。
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Wait
このコマンドレットは、指定したプロセスとその子孫が完了するまで待機してから、より多くの入力を受け入れることを示します。 このパラメーターは、コマンド プロンプトを抑制するか、プロセスが完了するまでウィンドウを保持します。
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WhatIf
コマンドレットの実行時に発生する内容を示します。 コマンドレットは実行されません。
このパラメーターは、PowerShell 6.0 で導入されました。
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WindowStyle
新しいプロセスに使用されるウィンドウの状態を指定します。 既定値は Normal
です。
このパラメーターの有効値は、次のとおりです。
Normal
Hidden
Minimized
Maximized
同じコマンドで WindowStyle パラメーターと NoNewWindow パラメーターを使用することはできません。
パラメーターは、Windows 以外のシステムには適用されません。 Windows 以外のシステムで を使用する場合、新しいウィンドウは表示されません。
Type: | ProcessWindowStyle |
Accepted values: | Normal, Hidden, Minimized, Maximized |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WorkingDirectory
新しいプロセスを開始する場所を指定します。
指定しない場合、コマンドレットの既定値は FilePath パラメーターで指定された完全修飾場所になります。 FilePath パラメーターの値が完全修飾されていない場合、既定では呼び出し元プロセスの現在の作業ディレクトリになります。
ワイルドカードはサポートしていません。 パスには、ワイルドカードとして解釈される文字を含めてはなりません。
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
入力
None
オブジェクトをこのコマンドレットにパイプすることはできません。
出力
None
既定では、このコマンドレットは出力を返しません。
PassThru パラメーターを使用すると、このコマンドレットは Process オブジェクトを返します。
メモ
PowerShell には、 の次のエイリアスが Start-Process
含まれています。
- すべてのプラットフォーム
saps
- Windows
start
ネイティブ コマンドは、オペレーティング システムにインストールされている実行可能ファイルです。 これらの実行可能ファイルは、PowerShell などの任意のコマンド ライン シェルから実行できます。 通常は、bash
や cmd.exe
の場合とまったく同じようにコマンドを実行します。 コマンドレットは Start-Process
、任意のネイティブ コマンドを実行するために使用できますが、コマンドの実行方法を制御する必要がある場合にのみ使用する必要があります。
Start-Process
は、Windows 以外のプラットフォームで GUI プログラムを実行する場合に便利です。 たとえば、 を実行 Start-Proces gedit
して、GNOME デスクトップ環境に共通するグラフィカルテキストエディタを起動します。
既定では、 Start-Process
はプロセスを 非同期的に起動します。 新しいプロセスがまだ実行されている場合でも、制御は即座に PowerShell に返されます。
- ローカル システムでは、起動されたプロセスは呼び出し元プロセスから独立して実行されます。
- リモート システムでは、コマンドの直後にリモート セッションが終了すると、新しいプロセスが
Start-Process
終了します。 そのため、起動されたプロセスがセッションを上回ることを期待して、リモート セッションで を使用Start-Process
することはできません。
リモート セッションで を使用 Start-Process
する必要がある場合は、 Wait パラメーターを使用して呼び出します。 または、他の方法を使用して、リモート システムに新しいプロセスを作成することもできます。
Wait パラメーターを使用する場合は、Start-Process
プロセス ツリー (プロセスとそのすべての子孫) が終了するまで待機してから、制御を返します。 これは、指定されたプロセスの Wait-Process
終了のみを待機するコマンドレットの動作とは異なります。
Windows では、 の最も一般的なユース ケース Start-Process
は 、Wait パラメーターを使用して、新しいプロセスが終了するまで進行状況をブロックすることです。 Windows 以外のシステムでは、コマンド ライン アプリケーションの既定の動作は と同等 Start-Process -Wait
であるため、これはほとんど必要ありません。
このコマンドレットは、System.Diagnostics.Process クラスの Start メソッドを使用して実装されます。 このメソッドの詳細については、「 Process.Start メソッド」を参照してください。