Start-Process
Spustí jeden nebo více procesů v místním počítači.
Syntaxe
Start-Process
[-FilePath] <string>
[[-ArgumentList] <string[]>]
[-Credential <pscredential>]
[-WorkingDirectory <string>]
[-LoadUserProfile]
[-NoNewWindow]
[-PassThru]
[-RedirectStandardError <string>]
[-RedirectStandardInput <string>]
[-RedirectStandardOutput <string>]
[-WindowStyle <ProcessWindowStyle>]
[-Wait]
[-UseNewEnvironment]
[-Environment <hashtable>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Start-Process
[-FilePath] <string>
[[-ArgumentList] <string[]>]
[-WorkingDirectory <string>]
[-PassThru]
[-Verb <string>]
[-WindowStyle <ProcessWindowStyle>]
[-Wait]
[-Environment <hashtable>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
Rutina Start-Process
spustí jeden nebo více procesů v místním počítači. Ve výchozím nastavení vytvoří nový proces, Start-Process
který dědí všechny proměnné prostředí definované v aktuálním procesu.
Chcete-li určit program, který se spustí v procesu, zadejte spustitelný soubor nebo soubor skriptu nebo soubor, který lze otevřít pomocí programu v počítači. Pokud zadáte spustitelný soubor, Start-Process
spustí program přidružený k souboru, podobně jako rutina Invoke-Item
.
Parametry můžete použít Start-Process
k určení možností, jako je načtení profilu uživatele, spuštění procesu v novém okně nebo použití alternativních přihlašovacích údajů.
Příklady
Příklad 1: Spuštění procesu, který používá výchozí hodnoty
Tento příklad spustí proces, který používá Sort.exe
soubor v aktuální složce. Příkaz používá všechny výchozí hodnoty, včetně výchozího stylu okna, pracovní složky a přihlašovacích údajů.
Start-Process -FilePath "sort.exe"
Příklad 2: Tisk textového souboru
Tento příklad spustí proces, který vytiskne C:\PS-Test\MyFile.txt
soubor.
Start-Process -FilePath "myfile.txt" -WorkingDirectory "C:\PS-Test" -Verb Print
Příklad 3: Zahájení procesu řazení položek do nového souboru
Tento příklad spustí proces, který seřadí položky v TestSort.txt
souboru a vrátí seřazené položky v souborech Sorted.txt
. Všechny chyby se zapíšou SortError.txt
do souboru. Parametr UseNewEnvironment určuje, že proces běží s vlastními proměnnými prostředí.
$processOptions = @{
FilePath = "sort.exe"
RedirectStandardInput = "TestSort.txt"
RedirectStandardOutput = "Sorted.txt"
RedirectStandardError = "SortError.txt"
UseNewEnvironment = $true
}
Start-Process @processOptions
V tomto příkladu se k předání parametrů rutině používají splatting. Další informace najdete v tématu about_Splatting.
Příklad 4: Spuštění procesu v maximalizovaném okně
Tento příklad spustí Notepad.exe
proces. Maximalizuje okno a zachová okno, dokud se proces dokončí.
Start-Process -FilePath "notepad" -Wait -WindowStyle Maximized
Příklad 5: Spuštění PowerShellu jako správce
Tento příklad spustí PowerShell pomocí možnosti Spustit jako správce .
Start-Process -FilePath "powershell" -Verb RunAs
Příklad 6: Spuštění procesu pomocí různých příkazů
Tento příklad ukazuje, jak najít příkazy, které lze použít při spuštění procesu. Dostupné příkazy jsou určeny příponou názvu souboru, který se spouští v procesu.
$startExe = New-Object System.Diagnostics.ProcessStartInfo -Args powershell.exe
$startExe.verbs
open
runas
runasuser
Příklad používá New-Object
k vytvoření objektu System.Diagnostics.ProcessStartInfo pro powershell.exe
soubor, který běží v procesu PowerShellu. Verbs vlastnost ProcessStartInfo objekt ukazuje, že můžete použít Open a RunAs
slovesa s powershell.exe
, nebo s jakýmkoli procesem, který spouští .exe
soubor.
Příklad 7: Zadání argumentů procesu
Oba příkazy spustí interpret příkazu systému Windows, který dir
ve složce vydá příkaz Program Files
. Vzhledem k tomu, že tento název složky obsahuje mezeru, musí být hodnota obklopena řídicími uvozovkami.
Všimněte si, že první příkaz určuje řetězec jako ArgumentList. Druhým příkazem je pole řetězců.
Start-Process -FilePath "$env:comspec" -ArgumentList "/c dir `"%SystemDrive%\Program Files`""
Start-Process -FilePath "$env:comspec" -ArgumentList "/c","dir","`"%SystemDrive%\Program Files`""
Příklad 8: Vytvoření odpojeného procesu v Linuxu
Ve Windows vytvoří nezávislý proces, Start-Process
který zůstane spuštěný nezávisle na spouštěcím prostředí. Na platformách jiných než Windows je nově spuštěný proces připojený k prostředí, které se spustilo. Pokud je spouštěcí prostředí zavřené, podřízený proces se ukončí.
Chcete-li zabránit ukončení podřízeného procesu na platformách unixového typu, můžete kombinovat Start-Process
s nohup
. Následující příklad spustí instanci PowerShellu na pozadí v Linuxu, která zůstane aktivní i po zavření relace spuštění. Příkaz nohup
shromažďuje výstup v souboru nohup.out
v aktuálním adresáři.
# Runs for 2 minutes and appends output to ./nohup.out
Start-Process nohup 'pwsh -noprofile -c "1..120 | % { Write-Host . -NoNewline; sleep 1 }"'
V tomto příkladu běží příkaz Linuxu Start-Process
nohup
, který se spustí pwsh
jako odpojený proces. Další informace naleznete v článku nohup na Wikipedii.
Příklad 9: Přepsání proměnné prostředí pro proces
Při použití Start-Process
se ve výchozím nastavení vytvoří nový proces se stejnými proměnnými prostředí jako aktuální relace. Pomocí parametru Prostředí můžete přepsat hodnoty těchto proměnných.
V tomto příkladu se proměnná FOO
prostředí přidá do relace s foo
hodnotou.
Příklad se spustí Start-Process
třikrát a vrátí hodnotu FOO
pokaždé. První příkaz nepřepíše proměnnou prostředí. V druhém příkazu FOO
je nastaven na bar
hodnotu . Ve třetím příkazu FOO
je nastavena na $null
hodnotu , která ji odebere.
$env:FOO = 'foo'
Start-Process pwsh -NoNewWindow -ArgumentList '-c', '$env:FOO'
Start-Process pwsh -NoNewWindow -ArgumentList '-c', '$env:FOO' -Environment @{
FOO = 'bar'
}
Start-Process pwsh -NoNewWindow -ArgumentList '-c', '$env:FOO' -Environment @{
FOO = $null
}
foo
bar
Parametry
-ArgumentList
Určuje parametry nebo hodnoty parametrů, které se mají použít při spuštění tohoto procesu. Argumenty lze přijmout jako jeden řetězec s argumenty oddělenými mezerami nebo jako pole řetězců oddělených čárkami. Rutina spojí pole do jednoho řetězce s každým prvkem pole odděleným jedním mezerou.
Vnější uvozovky řetězců PowerShellu nejsou zahrnuty, pokud jsou hodnoty ArgumentList předány do nového procesu. Pokud parametry nebo hodnoty parametrů obsahují mezeru nebo uvozovky, musí být ohraničeny řídicími dvojitými uvozovkami. Další informace najdete v tématu about_Quoting_Rules.
Nejlepších výsledků dosáhnete tak, že použijete jednu hodnotu ArgumentList obsahující všechny argumenty a všechny potřebné znaky uvozovek.
Typ: | String[] |
Aliasy: | Args |
Position: | 1 |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-Confirm
Před spuštěním rutiny zobrazí výzvu k potvrzení.
Typ: | SwitchParameter |
Aliasy: | cf |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-Credential
Určuje uživatelský účet, který má oprávnění k provedení této akce. Rutina ve výchozím nastavení používá přihlašovací údaje aktuálního uživatele.
Zadejte uživatelské jméno, například User01 nebo Domain01\User01, nebo zadejte objekt PSCredential vygenerovaný rutinouGet-Credential
. Pokud zadáte uživatelské jméno, zobrazí se výzva k zadání hesla.
Přihlašovací údaje jsou uloženy v objektu PSCredential a heslo je uloženo jako SecureString.
Poznámka:
Další informace o ochraně dat SecureString naleznete v tématu Jak zabezpečený je SecureString?.
Typ: | PSCredential |
Aliasy: | RunAs |
Position: | Named |
Default value: | Current user |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-Environment
Určuje jednu nebo více proměnných prostředí, které se mají pro proces přepsat jako hashovací tabulka. Zadejte název proměnné prostředí jako klíč v tabulce hash a požadovanou hodnotu. Pokud chcete zrušit nastavení proměnné prostředí, zadejte její hodnotu jako $null
.
Zadané proměnné se v procesu nahradí. Když zadáte proměnnou PATH
prostředí, je nahrazena hodnotou $PSHOME
následovanou zadanou hodnotou z tohoto parametru. Ve Windows příkaz za novou hodnotu připojí hodnoty pro PATH
obory počítače a uživatele.
Tento parametr byl přidán v PowerShellu 7.4.
Typ: | Hashtable |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-FilePath
Určuje volitelnou cestu a název souboru programu, který se spouští v procesu. Zadejte název spustitelného souboru nebo dokumentu, například .txt
souboru nebo .doc
souboru, který je přidružený k programu v počítači. Tento parametr je povinný.
Pokud zadáte pouze název souboru, který neodpovídá systémovému příkazu, zadejte cestu pomocí parametru WorkingDirectory .
Typ: | String |
Aliasy: | PSPath, Path |
Position: | 0 |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-LoadUserProfile
Označuje, že tato rutina načte profil uživatele systému Windows uložený v HKEY_USERS
klíči registru pro aktuálního uživatele. Parametr se nevztahuje na systémy jiné než Windows.
Tento parametr nemá vliv na profily PowerShellu. Další informace najdete v tématu about_Profiles.
Typ: | SwitchParameter |
Aliasy: | Lup |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-NoNewWindow
Spusťte nový proces v aktuálním okně konzoly. Ve výchozím nastavení ve Windows PowerShell otevře nové okno. V jiných systémech než Windows nikdy nedostanete nové okno.
Ve stejném příkazu nemůžete použít parametry NoNewWindow a WindowStyle .
Parametr se nevztahuje na systémy jiné než Windows.
Typ: | SwitchParameter |
Aliasy: | nnw |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-PassThru
Vrátí objekt procesu pro každý proces, který rutina spustila. Ve výchozím nastavení tato rutina negeneruje žádný výstup.
Typ: | SwitchParameter |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-RedirectStandardError
Určuje soubor. Tato rutina odešle všechny chyby vygenerované procesem do zadaného souboru. Zadejte cestu a název souboru. Ve výchozím nastavení se chyby zobrazují v konzole.
Typ: | String |
Aliasy: | RSE |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-RedirectStandardInput
Určuje soubor. Tato rutina načte vstup ze zadaného souboru. Zadejte cestu a název souboru vstupního souboru. Ve výchozím nastavení proces získá svůj vstup z klávesnice.
Typ: | String |
Aliasy: | RSI |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-RedirectStandardOutput
Určuje soubor. Tato rutina odešle výstup vygenerovaný procesem do zadaného souboru. Zadejte cestu a název souboru. Ve výchozím nastavení se výstup zobrazí v konzole.
Typ: | String |
Aliasy: | RSO |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-UseNewEnvironment
Označuje, že tato rutina používá nové proměnné prostředí zadané pro tento proces. Ve výchozím nastavení se spuštěný proces spustí s proměnnými prostředí zděděnými z nadřazeného procesu.
Když ve Windows použijete UseNewEnvironment, nový proces začne obsahovat pouze výchozí proměnné prostředí definované pro obor počítače. To má vedlejší účinek, který $env:USERNAME
je nastaven na HODNOTU SYSTEM. Nejsou zahrnuty žádné proměnné z oboru Uživatele .
Typ: | SwitchParameter |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-Verb
Určuje příkaz, který se má použít při spuštění této rutiny. Příkazy, které jsou k dispozici, jsou určeny příponou názvu souboru, který se spouští v procesu.
Následující tabulka uvádí příkazy pro některé běžné typy souborů procesu.
Typ souboru | Příkazy |
---|---|
.cmd | Edit , Open , Print , , RunAs RunAsUser |
.exe | Open , , RunAs RunAsUser |
.txt | Open , , Print PrintTo |
.wav | Open , Play |
Chcete-li najít příkazy, které lze použít se souborem spuštěným v procesu, použijte rutinu New-Object
k vytvoření objektu System.Diagnostics.ProcessStartInfo pro soubor. Dostupné příkazy jsou ve Sloves vlastnost ProcessStartInfo objektu. Podrobnosti najdete v příkladech.
Parametr se nevztahuje na systémy jiné než Windows.
Typ: | String |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-Wait
Označuje, že tato rutina čeká na dokončení zadaného procesu a jeho potomků, než přijme další vstup. Tento parametr potlačí příkazový řádek nebo zachová okno, dokud se procesy nedokončí.
Typ: | SwitchParameter |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-WhatIf
Zobrazuje, co by se stalo při spuštění rutiny. Rutina se nespustí.
Tento parametr byl představen v PowerShellu 6.0.
Typ: | SwitchParameter |
Aliasy: | wi |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-WindowStyle
Určuje stav okna, které se používá pro nový proces. Výchozí hodnota je Normal
.
Tento parametr přijímá tyto hodnoty:
Normal
Hidden
Minimized
Maximized
Ve stejném příkazu nemůžete použít parametry WindowStyle a NoNewWindow .
Parametr se nevztahuje na systémy jiné než Windows. Pokud používáte jiné systémy než Windows, nikdy nedostanete nové okno.
Typ: | ProcessWindowStyle |
Přípustné hodnoty: | Normal, Hidden, Minimized, Maximized |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-WorkingDirectory
Určuje umístění, ve které má nový proces začínat.
Pokud není zadáno, rutina ve výchozím nastavení nastaví plně kvalifikované umístění zadané v parametru FilePath . Pokud hodnota parametru FilePath není plně kvalifikovaná, výchozí hodnota je aktuální pracovní adresář volajícího procesu.
Zástupné kóty nejsou podporované. Cesta nesmí obsahovat znaky, které by byly interpretovány jako zástupné znaky.
Typ: | String |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
Vstupy
None
Do této rutiny nemůžete roušit objekty.
Výstupy
None
Ve výchozím nastavení tato rutina nevrací žádný výstup.
Pokud použijete parametr PassThru , vrátí tato rutina objekt Process .
Poznámky
PowerShell obsahuje následující aliasy pro Start-Process
:
- Všechny platformy
saps
- Windows:
start
Nativní příkazy jsou spustitelné soubory nainstalované v operačním systému. Tyto spustitelné soubory je možné spustit z libovolného prostředí příkazového řádku, jako je PowerShell. Příkaz obvykle spouštíte přesně tak, jak jste v bash
nebo cmd.exe
. Rutinu Start-Process
je možné použít ke spouštění nativních příkazů, ale měla by se použít jenom v případě, že potřebujete řídit způsob spuštění příkazu.
Start-Process
je užitečné pro spouštění programů grafického uživatelského rozhraní na platformách jiných než Windows. Spusťte například spuštění Start-Process gedit
grafického textového editoru, který se běžně používá v desktopových prostředích GNOME.
Ve výchozím nastavení Start-Process
spustí proces asynchronně. Řízení se okamžitě vrátí do PowerShellu, i když je nový proces stále spuštěný.
- V místním systému se spuštěný proces nachází nezávisle na volajícím procesu.
- Ve vzdáleném systému se nový proces ukončí, když vzdálená relace skončí okamžitě za příkazem
Start-Process
. Proto nemůžete použítStart-Process
vzdálenou relaci, která očekává, že spuštěný proces prožije relaci.
Pokud potřebujete použít Start-Process
vzdálenou relaci, vyvolejte ji pomocí parametru Wait . Nebo můžete použít jiné metody k vytvoření nového procesu ve vzdáleném systému.
Při použití parametru Start-Process
Wait před vrácením ovládacího prvku počká na ukončení stromu procesu (procesu a všech jeho potomků). To se liší od chování Wait-Process
rutiny, která čeká pouze na ukončení zadaných procesů.
Nejběžnějším případem Start-Process
použití ve Windows je použití parametru Wait k blokování průběhu, dokud se nový proces neskončí. V systému, který není systémem Windows, to je zřídka potřeba, protože výchozí chování pro aplikace příkazového řádku je ekvivalentní Start-Process -Wait
.
Tato rutina se implementuje pomocí metody Start třídy System.Diagnostics.Process. Další informace o této metodě naleznete v tématu Process.Start Metoda.