Start-Process
ローカル コンピューターで 1 つ以上のプロセスを開始します。
構文
Default (既定)
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>]
UseShellExecute
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 動詞を PowerShell.exe で使用したり、.exe ファイルを実行する任意のプロセスで使用できることを示しています。
例 7: プロセスへの引数の指定
どちらのコマンドも Windows コマンド インタープリターを起動し、dir フォルダーで Program Files コマンドを発行します。 このフォルダー名にはスペースが含まれているため、値はエスケープされた引用符で囲む必要があります。
最初のコマンドは、ArgumentList として文字列指定します。 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 でデタッチされたプロセスを作成する
Windows では、 Start-Process は起動シェルとは別に実行されたままの独立したプロセスを作成します。 Windows 以外のプラットフォームでは、新しく開始されたプロセスが起動したシェルにアタッチされます。 起動シェルが閉じられると、子プロセスが終了します。
Unix に似たプラットフォームで子プロセスが終了しないように、 Start-Process を nohupと組み合わせることができます。 次の例では、起動セッションを閉じた後も存続する PowerShell on Linux のバックグラウンド インスタンスを起動します。
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 は Linux nohup コマンドを実行しています。これにより、デタッチされたプロセスとして pwsh が起動されます。 詳細は、 nohup のマニュアルページを参照してください。
パラメーター
-ArgumentList
このコマンドレットがプロセスを開始するときに使用するパラメーターまたはパラメーター値を指定します。 引数は、スペースで区切られた引数を持つ単一の文字列として、またはコンマで区切られた文字列の配列として受け取ることができます。 コマンドレットは、配列を 1 つの文字列に結合し、配列の各要素を 1 つのスペースで区切ります。
PowerShell 文字列の外側の引用符は、 ArgumentList 値が新しいプロセスに渡されるときには含まれません。 パラメーターまたはパラメーター値にスペースまたは引用符が含まれている場合は、エスケープされた二重引用符で囲む必要があります。 詳細については、about_Quoting_Rulesを参照してください。
最良の結果を得るには、すべての引数と必要な引用符文字を含む 1 つの ArgumentList 値を使用します。
パラメーターのプロパティ
| 型: | String[] |
| 規定値: | None |
| ワイルドカードのサポート: | False |
| DontShow: | False |
| Aliases: | 引数 |
パラメーター セット
(All)
| 配置: | 1 |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-Confirm
コマンドレットを実行する前に確認を求めるメッセージが表示されます。
パラメーターのプロパティ
| 型: | SwitchParameter |
| 規定値: | None |
| ワイルドカードのサポート: | False |
| DontShow: | False |
| Aliases: | cf |
パラメーター セット
(All)
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-Credential
このアクションを実行するアクセス許可を持つユーザー アカウントを指定します。 既定では、コマンドレットは現在のユーザーの資格情報を使用します。
User01 や Domain01\User01などのユーザー名を入力するか、 コマンドレットによって生成された Get-Credential オブジェクトを入力します。 ユーザー名を入力すると、パスワードの入力を求められます。
資格情報は PSCredential オブジェクトに格納され、パスワードは SecureStringとして格納されます。
注
SecureString データ保護についての詳細は、「SecureString はどのくらい安全ですか? 」を参照してください。.
パラメーターのプロパティ
| 型: | PSCredential |
| 規定値: | Current user |
| ワイルドカードのサポート: | False |
| DontShow: | False |
| Aliases: | RunAs |
パラメーター セット
Default
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-FilePath
プロセスで実行されるプログラムのオプションのパスとファイル名を指定します。 コンピュータ上のプログラムに関連付けられている実行可能ファイルまたはドキュメント ( .txt ファイルや .doc ファイルなど) の名前を入力します。 このパラメーターは必須です。
ファイル名のみを指定する場合は、WorkingDirectory パラメーターを使用してパスを指定します。
パラメーターのプロパティ
| 型: | String |
| 規定値: | None |
| ワイルドカードのサポート: | False |
| DontShow: | False |
| Aliases: | PSPath, 経路 |
パラメーター セット
(All)
| 配置: | 0 |
| 必須: | True |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-LoadUserProfile
このコマンドレットは、現在のユーザーの HKEY_USERS レジストリ キーに格納されている Windows ユーザー プロファイルを読み込みます。 このパラメーターは、Windows 以外のシステムには適用されません。
このパラメーターは、PowerShell プロファイルには影響しません。 詳細については、about_Profilesを参照してください。
パラメーターのプロパティ
| 型: | SwitchParameter |
| 規定値: | None |
| ワイルドカードのサポート: | False |
| DontShow: | False |
| Aliases: | Lup |
パラメーター セット
Default
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-NoNewWindow
現在のコンソール ウィンドウで新しいプロセスを開始します。 Windows の既定では、PowerShell によって新しいウィンドウが開きます。 Windows 以外のシステムでは、新しいウィンドウは表示されません。
NoNewWindow パラメータと WindowStyle パラメータを同じコマンドで使用することはできません。
このパラメーターは、Windows 以外のシステムには適用されません。
パラメーターのプロパティ
| 型: | SwitchParameter |
| 規定値: | None |
| ワイルドカードのサポート: | False |
| DontShow: | False |
| Aliases: | 北北西 |
パラメーター セット
Default
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-PassThru
コマンドレットが開始した各プロセスのプロセス オブジェクトを返します。 既定では、このコマンドレットは出力を生成しません。
パラメーターのプロパティ
| 型: | SwitchParameter |
| 規定値: | None |
| ワイルドカードのサポート: | False |
| DontShow: | False |
パラメーター セット
(All)
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-RedirectStandardError
ファイルを指定します。 このコマンドレットは、プロセスによって生成されたエラーを、指定したファイルに送信します。 パスとファイル名を入力します。 既定では、エラーはコンソールに表示されます。
パラメーターのプロパティ
| 型: | String |
| 規定値: | None |
| ワイルドカードのサポート: | False |
| DontShow: | False |
| Aliases: | RSE |
パラメーター セット
Default
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-RedirectStandardInput
ファイルを指定します。 このコマンドレットは、指定されたファイルから入力を読み取ります。 入力ファイルのパスとファイル名を入力します。 既定では、プロセスはキーボードから入力を取得します。
パラメーターのプロパティ
| 型: | String |
| 規定値: | None |
| ワイルドカードのサポート: | False |
| DontShow: | False |
| Aliases: | RSI(反復性ストレス障害) |
パラメーター セット
Default
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-RedirectStandardOutput
ファイルを指定します。 このコマンドレットは、プロセスによって生成された出力を、指定したファイルに送信します。 パスとファイル名を入力します。 既定では、出力はコンソールに表示されます。
パラメーターのプロパティ
| 型: | String |
| 規定値: | None |
| ワイルドカードのサポート: | False |
| DontShow: | False |
| Aliases: | RSO |
パラメーター セット
Default
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-UseNewEnvironment
このコマンドレットが、プロセスに指定された新しい環境変数を使用することを示します。 既定では、開始プロセスは、親プロセスから継承された環境変数で実行されます。
Windows では、 UseNewEnvironment を使用すると、新しいプロセスが開始されるのは、 Machine スコープに定義されている既定の環境変数のみです。 これは、 $env:USERNAME が SYSTEMに設定されるという副作用があります。
User スコープの変数は含まれません。
パラメーターのプロパティ
| 型: | SwitchParameter |
| 規定値: | None |
| ワイルドカードのサポート: | False |
| DontShow: | False |
パラメーター セット
Default
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-Verb
このコマンドレットがプロセスを開始するときに使用する動詞を指定します。 使用できる動詞は、プロセスで実行されるファイルのファイル名拡張子によって決まります。
次の表は、一般的なプロセス ファイルの種類の動詞を示しています。
| ファイルの種類 | 動詞 |
|---|---|
| .cmd | 編集、開く、印刷、RunAs、RunAsUser |
| .exe | 開く、RunAs、RunAsUser |
| .txt | 開く、印刷、印刷する |
| .wav | 開く、遊ぶ |
プロセスで実行されるファイルで使用できる動詞を検索するには、New-Object コマンドレットを使用して、ファイルの System.Diagnostics.ProcessStartInfo オブジェクトを作成します。 使用可能な動詞は、ProcessStartInfo オブジェクトの Verbs プロパティにあります。 詳細については、例を参照してください。
このパラメーターは、Windows 以外のシステムには適用されません。
パラメーターのプロパティ
| 型: | String |
| 規定値: | None |
| ワイルドカードのサポート: | False |
| DontShow: | False |
パラメーター セット
UseShellExecute
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-Wait
このコマンドレットは、指定されたプロセスとその子孫が完了するまで待機してから、より多くの入力を受け入れることを示します。 このパラメーターは、コマンド プロンプトを抑制するか、プロセスが完了するまでウィンドウを保持します。
パラメーターのプロパティ
| 型: | SwitchParameter |
| 規定値: | None |
| ワイルドカードのサポート: | False |
| DontShow: | False |
パラメーター セット
(All)
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-WhatIf
コマンドレットを実行した場合の動作を示します。 コマンドレットは実行されません。
このパラメーターは、PowerShell 6.0 で導入されました。
パラメーターのプロパティ
| 型: | SwitchParameter |
| 規定値: | None |
| ワイルドカードのサポート: | False |
| DontShow: | False |
| Aliases: | ウィスコンシン |
パラメーター セット
(All)
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-WindowStyle
新しいプロセスに使用されるウィンドウの状態を指定します。 このパラメーターに指定できる値は、 Normal、 Hidden、 Minimized、 および Maximized です。 既定値は 通常 です。
WindowStyle パラメータと NoNewWindow パラメータを同じコマンドで使用することはできません。
このパラメーターは、Windows 以外のシステムには適用されません。 Windows 以外のシステムで使用する場合、新しいウィンドウは表示されません。
パラメーターのプロパティ
| 型: | ProcessWindowStyle |
| 規定値: | None |
| 指定可能な値: | Normal, Hidden, Minimized, Maximized |
| ワイルドカードのサポート: | False |
| DontShow: | False |
パラメーター セット
(All)
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-WorkingDirectory
新しいプロセスを開始する場所を指定します。 既定値は、起動中の実行可能ファイルまたはドキュメントの場所です。 ワイルドカードはサポートされていません。 パス名には、ワイルドカードとして解釈される文字を含めることはできません。
パラメーターのプロパティ
| 型: | String |
| 規定値: | None |
| ワイルドカードのサポート: | False |
| DontShow: | False |
パラメーター セット
(All)
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
CommonParameters
このコマンドレットでは、一般的なパラメーター -Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction、-WarningVariable の各パラメーターがサポートされています。 詳細については、about_CommonParametersを参照してください。
入力
None
パイプを使用してこのコマンドレットに入力を渡すことはできません。
出力
None, System.Diagnostics.Process
このコマンドレットは、PassThru パラメーターを指定すると、System.Diagnostics.Process オブジェクトを生成します。 それ以外の場合、このコマンドレットは出力を返しません。
メモ
既定では、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 メソッドの」を参照してください。