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

この例では、PowerShell プロセスで実行されるファイルPowerShell.exeSystem.Diagnostics.ProcessStartInfo オブジェクトを作成するために使用New-Objectします。 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 でデタッチされたプロセスを作成する

Windows では、 Start-Process 起動シェルとは独立して実行されたままの独立したプロセスが作成されます。 Windows 以外のプラットフォームでは、新しく開始されたプロセスが起動したシェルにアタッチされます。 起動シェルが閉じている場合、子プロセスは終了します。

Unix に似たプラットフォームで子プロセスが終了しないようにするには、次のように組み合わせることができますStart-Processnohup。 次の例では、起動セッションを閉じた後も存続する 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 コマンドを実行しています。 詳細については、 nohup の man ページを参照してください。

パラメーター

-ArgumentList

このコマンドレットがプロセスを開始するときに使用するパラメーターまたはパラメーター値を指定します。 引数は、引数をスペースで区切った単一の文字列として、またはコンマで区切られた文字列の配列として受け取ることができます。 コマンドレットは、配列を 1 つの文字列に結合し、配列の各要素を 1 つのスペースで区切ります。

ArgumentList 値が新しいプロセスに渡される場合、PowerShell 文字列の外側の引用符は含まれません。 パラメーターまたはパラメーター値にスペースまたは引用符が含まれている場合は、エスケープされた二重引用符で囲む必要があります。 詳細については、「about_Quoting_Rules」 参照してください。

最適な結果を得るには、すべての引数と必要な引用符文字を含む 1 つの ArgumentList 値を使用します。

Type:String[]
Aliases:Args
Position:1
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-Confirm

コマンドレットの実行前に確認を求めるメッセージが表示されます。

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:None
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
Accept pipeline input:False
Accept wildcard characters:False
-FilePath

プロセスで実行されるプログラムのオプションのパスとファイル名を指定します。 コンピューター上のプログラムに関連付けられている実行可能ファイルまたはドキュメント (ファイルなど.txt.doc) の名前を入力します。 このパラメーターは必須です。

ファイル名のみを指定する場合は、 WorkingDirectory パラメーターを使用してパスを指定します。

Type:String
Aliases:PSPath, Path
Position:0
Default value:None
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
Accept pipeline input:False
Accept wildcard characters:False
-NoNewWindow

現在のコンソール ウィンドウで新しいプロセスを開始します。 既定では、Windows では、PowerShell によって新しいウィンドウが開きます。 Windows 以外のシステムでは、新しいウィンドウは表示されません。

NoNewWindowWindowStyle パラメーターを同じコマンドで使用することはできません。

このパラメーターは、Windows 以外のシステムには適用されません。

Type:SwitchParameter
Aliases:nnw
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-PassThru

コマンドレットが開始した各プロセスのプロセス オブジェクトを返します。 既定では、このコマンドレットによる出力はありません。

Type:SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-RedirectStandardError

ファイルを指定します。 このコマンドレットは、プロセスによって生成されたエラーを、指定したファイルに送信します。 パスとファイル名を入力します。 既定では、エラーはコンソールに表示されます。

Type:String
Aliases:RSE
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-RedirectStandardInput

ファイルを指定します。 このコマンドレットは、指定したファイルから入力を読み取ります。 入力ファイルのパスとファイル名を入力します。 既定では、入力はキーボードから取得されます。

Type:String
Aliases:RSI
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-RedirectStandardOutput

ファイルを指定します。 このコマンドレットは、プロセスによって生成された出力を、指定したファイルに送信します。 パスとファイル名を入力します。 既定では、出力はコンソールに表示されます。

Type:String
Aliases:RSO
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-UseNewEnvironment

このコマンドレットで、プロセスに指定された新しい環境変数が使用されることを示します。 既定では、開始されたプロセスは、親プロセスから継承された環境変数で実行されます。

Windows では、 UseNewEnvironment を使用すると、 マシン スコープに定義されている既定の環境変数のみが含まれる新しいプロセスが開始されます。 これは、SYSTEM に設定されている側の $env:USERNAME 影響を受 けますユーザー スコープの変数は含まれません。

Type:SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-Verb

このコマンドレットがプロセスを開始するときに使用する動詞を指定します。 使用できる動詞は、プロセスで実行されるファイルのファイル名拡張子によって決まります。

次の表に、いくつかの一般的なプロセス ファイルの種類の動詞を示します。

ファイルの種類 動詞
.cmd 編集、開く、印刷、実行、RunAsUser
.exe Open、RunAs、RunAsUser
.txt 開く、印刷する、印刷する
.wav 開く、再生する

プロセスで実行されるファイルで使用できる動詞を見つけるには、コマンドレットを New-Object 使用してファイルの System.Diagnostics.ProcessStartInfo オブジェクトを作成します。 使用可能な動詞は、ProcessStartInfo オブジェクトの Verbs プロパティにあります。 詳細については、例を参照してください。

このパラメーターは、Windows 以外のシステムには適用されません。

Type:String
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-Wait

このコマンドレットは、指定されたプロセスとその子孫が完了するまで待機してから、より多くの入力を受け入れることを示します。 このパラメーターは、コマンド プロンプトを表示しないか、プロセスが完了するまでウィンドウを保持します。

Type:SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-WhatIf

コマンドレットの実行時に発生する内容を示します。 このコマンドレットは実行されません。

このパラメーターは、PowerShell 6.0 で導入されました。

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-WindowStyle

新しいプロセスに使用するウィンドウの状態を指定します。 このパラメーターで使用できる値は、 標準非表示最小化最大化です。 既定値は Normal です

WindowStyleNoNewWindow パラメーターを同じコマンドで使用することはできません。

このパラメーターは、Windows 以外のシステムには適用されません。 Windows 以外のシステムで使用する場合、新しいウィンドウは表示されません。

Type:ProcessWindowStyle
Accepted values:Normal, Hidden, Minimized, Maximized
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-WorkingDirectory

新しいプロセスを開始する場所を指定します。 既定では、起動中の実行可能ファイルまたはドキュメントの場所です。 ワイルドカードはサポートされていません。 パス名には、ワイルドカードとして解釈される文字を含めてはなりません。

Type:String
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

入力

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 メソッド」を参照してください。