共用方式為


Start-Process

啟動本機電腦上的一或多個處理程序。

Syntax

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>]

Description

Cmdlet 會在 Start-Process 本機計算機上啟動一或多個進程。 根據預設, Start-Process 建立新的進程,以繼承目前進程中定義的所有環境變數。

如果要指定在處理程序中執行的程式,請輸入可執行檔或指令碼檔案,或可使用電腦上的程式開啟的檔案。 如果您指定非可執行檔, Start-Process 請啟動與檔案相關聯的程式,類似於 Invoke-Item Cmdlet。

您可以使用 的參數 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

Start-Process -FilePath "Sort.exe" -RedirectStandardInput "Testsort.txt" -RedirectStandardOutput "Sorted.txt" -RedirectStandardError "SortError.txt" -UseNewEnvironment

UseNewEnvironment 參數會指定進程以自己的環境變數執行。

範例 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.exe建立 System.Diagnostics.ProcessStartInfo 物件,這是在 PowerShell 進程中執行的檔案。 ProcessStartInfo 物件的 Verbs 屬性會顯示您可以搭配 使用 OpenRunAs 動詞命令PowerShell.exe,或搭配執行檔案的任何進程.exe

範例 7:指定進程的自變數

這兩個 dir 命令都會啟動 Windows 命令解釋器,並在資料夾上 Program Files 發出命令。 因為這個 foldername 包含空格,所以值需要以逸出引號括住。 請注意,第一個命令會將字串指定為 ArgumentList。 第二個命令是字串數位。

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 的平台上終止子進程,您可以結合 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 執行 Linux nohup 命令,它會以中斷連結的程序啟動 pwsh 。 如需詳細資訊,請參閱 nohup 的 man 頁面。

參數

-ArgumentList

指定此 Cmdlet 啟動行程時要使用的參數或參數值。 自變數可以接受為單一字串,其中自變數是以空格分隔,或是以逗號分隔的字串陣列。

如果參數或參數值包含空格,則必須以逸出雙引號括住。 如需詳細資訊,請參閱 about_Quoting_Rules

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

-Confirm

在執行 Cmdlet 前提示您確認。

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Credential

指定具有執行此動作權限的使用者帳戶。 根據預設,Cmdlet 會使用目前使用者的認證。

輸入用戶名稱,例如User01Domain01\User01,或輸入 Cmdlet 所產生的 Get-CredentialPSCredential 物件。 如果您輸入使用者名稱,系統會提示您輸入密碼。

認證會儲存在 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

指定在進程中執行之程式的選擇性路徑和檔名。 輸入與計算機上程式相關聯的可執行檔或檔名稱,例如 .txt.doc 檔案。 此為必要參數。

如果您只指定檔名,請使用 WorkingDirectory 參數來指定路徑。

Type:String
Aliases:PSPath, Path
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-LoadUserProfile

指出此 Cmdlet 會載入儲存在目前使用者的登錄機碼中的 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

在目前的主控台視窗中啟動新的處理程序。 根據預設,PowerShell 會在 Windows 上開啟新的視窗。 在非 Windows 系統上,您永遠不會收到新的終端機視窗。

您不能在同一個命令中同時使用 NoNewWindowWindowStyle 參數。

參數不適用於非 Windows 系統。

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

-PassThru

傳回此 Cmdlet 啟動之每個處理程序的處理程序物件。 根據預設,此 Cmdlet 不會產生任何輸出。

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

-RedirectStandardError

指定檔案。 此 Cmdlet 會將進程所產生的任何錯誤傳送至您指定的檔案。 輸入路徑和檔名。 根據預設,錯誤會顯示在主控台中。

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

-RedirectStandardInput

指定檔案。 此 Cmdlet 會從指定的檔案讀取輸入。 輸入輸入檔的路徑和檔名。 根據預設,處理程序會從鍵盤取得其輸入。

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

-RedirectStandardOutput

指定檔案。 此 Cmdlet 會將進程所產生的輸出傳送至您指定的檔案。 輸入路徑和檔名。 根據預設,輸出會顯示在主控台中。

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

-UseNewEnvironment

表示此 Cmdlet 會使用為進程指定的新環境變數。 根據預設,啟動的進程會以繼承自父進程的環境變數來執行。

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

-Verb

指定此 Cmdlet 啟動行程時要使用的動詞。 可用的動詞是由處理程序中執行之檔案的擴展名所決定。

下表顯示一些常見之處理程序檔案類型的動詞。

檔案類型 動詞
.cmd 編輯、開啟、列印、RunAs、RunAsUser
.exe Open、RunAs、RunAsUser
.txt Open、Print、PrintTo
.wav 開啟、播放

若要尋找可與進程中執行的檔案搭配使用的動詞,請使用 New-Object Cmdlet 建立檔案的 System.Diagnostics.ProcessStartInfo 物件。 可用的動詞位於 ProcessStartInfo 物件的 Verbs 屬性中。 如需詳細資訊,請參閱範例。

參數不適用於非 Windows 系統。

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

-Wait

表示此 Cmdlet 會等候指定的進程及其子系完成,再接受更多輸入。 此參數會隱藏命令提示字元,或保留視窗,直到進程完成為止。

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

-WhatIf

顯示執行 Cmdlet 後會發生的情況。 Cmdlet 並不會執行。

此參數是在 PowerShell 6.0 中引進。

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

-WindowStyle

指定用於新處理程序之視窗的狀態。 此參數可接受的值為: NormalHiddenMinimizedMaximized。 預設值為 Normal

您不能在同一個命令中同時使用 WindowStyleNoNewWindow 參數。

參數不適用於非 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

指定新進程應該啟動的位置。 預設值是正在啟動之可執行檔或檔的位置。 不支援萬用字元。 路徑名稱不得包含會解譯為通配符的字元。

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

輸入

None

您無法使用管線傳送輸入至此 Cmdlet。

輸出

None, System.Diagnostics.Process

如果您指定 PassThru 參數,此 Cmdlet 會產生 System.Diagnostics.Process 物件。 否則,此 Cmdlet 不會傳回任何輸出。

備註

  • 這個 Cmdlet 是使用 System.Diagnostics.Process 類別的 Start 方法來實作。 如需這個方法的詳細資訊,請參閱 Process.Start 方法

  • 在 Windows 上,當您使用 UseNewEnvironment 時,新的進程只會開始包含針對 計算機 範圍定義的默認環境變數。 這有將 設定為 SYSTEM 的側邊影響$env:USERNAME。 不包含 用戶 範圍中的變數。

  • 在 Windows 上,最常見的使用案例 Start-Process 是使用 Wait 參數來封鎖進度,直到新的進程結束為止。 在非 Windows 系統上,這很少需要,因為命令行應用程式的預設行為相當於 Start-Process -Wait

  • 在非 Windows 系統上使用 Start-Process 時,您永遠不會取得新的終端機視窗。