Start-Process
Spustí jeden nebo více procesů v místním počítači.
Syntax
Default (Výchozí)
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>]
Description
Rutina Start-Process spustí jeden nebo více procesů v místním počítači. Ve výchozím nastavení Start-Process vytvoří nový proces, 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 Invoke-Item rutina.
Parametry Start-Process můžete použít 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 soubor C:\PS-Test\MyFile.txt.
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 souboru Testsort.txt a vrátí seřazené položky v Sorted.txt souborech. Všechny chyby se zapisují do souboru SortError.txt. 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 naleznete v části s názvem about_Splatting.
Příklad 4: Spuštění procesu v maximalizovaném okně
Tento příklad spustí proces Notepad.exe. 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.
Vlastnost Verbs objektu ProcessStartInfo ukazuje, že můžete použít příkazy Open a RunAs s PowerShell.exeprogramem nebo s libovolným procesem, který spouští .exe soubor.
Příklad 7: Zadání argumentů procesu
Oba příkazy spustí interpret příkazů systému Windows, který ve složce dir vydá Program Files příkaz. 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 Start-Process vytvoří nezávislý proces, 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 Start-Process spouští příkaz nohup Linuxu, který spustí pwsh jako odpojený proces. Pro více informací se podívejte na manuálovou stránku programu nohup.
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, když jsou hodnoty ArgumentList předány novému procesu. Pokud parametry nebo hodnoty parametrů obsahují mezeru nebo uvozovky, musí být ohraničeny řídicími dvojitými uvozovkami. Další informace najdete v about_Quoting_Rules.
Nejlepších výsledků dosáhnete, když použijete jednu hodnotu ArgumentList obsahující všechny argumenty a všechny potřebné znaky uvozovek.
Vlastnosti parametru
| Typ: | String[] |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
| Aliasy: | Argumenty |
Sady parametrů
(All)
| Position: | 1 |
| Povinné: | False |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | False |
-Confirm
Před spuštěním cmdletu vás vyzve k potvrzení.
Vlastnosti parametru
| Typ: | SwitchParameter |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
| Aliasy: | viz |
Sady parametrů
(All)
| Position: | Named |
| Povinné: | False |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | 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ý rutinou Get-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 najdete v tématu Jak zabezpečený je SecureString?.
Vlastnosti parametru
| Typ: | PSCredential |
| Default value: | Current user |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
| Aliasy: | Spustit jako |
Sady parametrů
Default
| Position: | Named |
| Povinné: | False |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | 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 , který je přidružen k programu v počítači. Tento parametr je povinný.
Pokud zadáte pouze název souboru, zadejte cestu pomocí parametru WorkingDirectory.
Vlastnosti parametru
| Typ: | String |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
| Aliasy: | PSPath, Cesta |
Sady parametrů
(All)
| Position: | 0 |
| Povinné: | True |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | False |
-LoadUserProfile
Označuje, že tato rutina načte profil uživatele systému Windows uložený v klíči registru HKEY_USERS pro aktuálního uživatele. Parametr se nevztahuje na systémy bez systému Windows.
Tento parametr nemá vliv na profily PowerShellu. Další informace najdete v tématu about_Profiles.
Vlastnosti parametru
| Typ: | SwitchParameter |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
| Aliasy: | Lup |
Sady parametrů
Default
| Position: | Named |
| Povinné: | False |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | 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 nelze použít parametry NoNewWindow a Window Style.
Parametr se nevztahuje na systémy bez systému Windows.
Vlastnosti parametru
| Typ: | SwitchParameter |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
| Aliasy: | nnw |
Sady parametrů
Default
| Position: | Named |
| Povinné: | False |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | False |
-PassThru
Vrátí objekt procesu pro každý proces, který rutina spustila. Ve výchozím nastavení tato rutina negeneruje žádný výstup.
Vlastnosti parametru
| Typ: | SwitchParameter |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
(All)
| Position: | Named |
| Povinné: | False |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | 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.
Vlastnosti parametru
| Typ: | String |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
| Aliasy: | RSE |
Sady parametrů
Default
| Position: | Named |
| Povinné: | False |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | 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.
Vlastnosti parametru
| Typ: | String |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
| Aliasy: | RSI (Syndrom z opakovaného namáhání) |
Sady parametrů
Default
| Position: | Named |
| Povinné: | False |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | 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.
Vlastnosti parametru
| Typ: | String |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
| Aliasy: | RSO |
Sady parametrů
Default
| Position: | Named |
| Povinné: | False |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | 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 machine. To má vedlejší účinek, že je nastaveno $env:USERNAME na SYSTEM. Nejsou zahrnuty žádné proměnné z oboru User.
Vlastnosti parametru
| Typ: | SwitchParameter |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
Default
| Position: | Named |
| Povinné: | False |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | 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 | Upravit, otevřít, tisknout, RunAs, RunAsUser |
| .exe | Otevřeno, RunAs, RunAsUser |
| .txt | Otevření, tisk, tisk |
| .wav | Otevřít, Přehrát |
Pokud chcete najít příkazy, které se dají použít se souborem, který běží v procesu, použijte rutinu New-Object k vytvoření objektu System.Diagnostics.ProcessStartInfo objektu souboru. Dostupné příkazy jsou ve Příkazy vlastnost ProcessStartInfo objektu. Podrobnosti najdete v příkladech.
Parametr se nevztahuje na systémy bez systému Windows.
Vlastnosti parametru
| Typ: | String |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
UseShellExecute
| Position: | Named |
| Povinné: | False |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | 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čí.
Vlastnosti parametru
| Typ: | SwitchParameter |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
(All)
| Position: | Named |
| Povinné: | False |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | False |
-WhatIf
Ukazuje, co se stane, když se příkaz spustí. Příkazový modul nebyl spuštěn.
Tento parametr byl představen v PowerShellu 6.0.
Vlastnosti parametru
| Typ: | SwitchParameter |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
| Aliasy: | Wi |
Sady parametrů
(All)
| Position: | Named |
| Povinné: | False |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | False |
-WindowStyle
Určuje stav okna, které se používá pro nový proces. Přijatelné hodnoty pro tento parametr jsou: Normal, Hidden, Minimalda Maximalizované. Výchozí hodnota je Normální.
Ve stejném příkazu nelze použít WindowStyle a NoNewWindow parametry.
Parametr se nevztahuje na systémy bez systému Windows. Pokud používáte jiné systémy než Windows, nikdy nedostanete nové okno.
Vlastnosti parametru
| Typ: | ProcessWindowStyle |
| Default value: | None |
| Přípustné hodnoty: | Normal, Hidden, Minimized, Maximized |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
(All)
| Position: | Named |
| Povinné: | False |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | False |
-WorkingDirectory
Určuje umístění, ve které má nový proces začínat. Výchozí hodnota je umístění spustitelného souboru nebo dokumentu, který se spouští. Zástupné dokumentace nejsou podporovány. Název cesty nesmí obsahovat znaky, které by byly interpretovány jako zástupné znaky.
Vlastnosti parametru
| Typ: | String |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
(All)
| Position: | Named |
| Povinné: | False |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | False |
CommonParameters
Tato rutina podporuje běžné parametry: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction a -WarningVariable. Další informace najdete v about_CommonParameters.
Vstupy
None
Vstup do této rutiny nelze převést.
Výstupy
None, System.Diagnostics.Process
Tato rutina vygeneruje objekt System.Diagnostics.Process, pokud zadáte parametr PassThru. Jinak tato rutina nevrací žádný výstup.
Poznámky
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 ve vzdálené relaci očekávatStart-Process, že spuštěný proces přežije relaci.
Pokud potřebujete použít Start-Process ve vzdálené 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 WaitStart-Process čeká na ukončení stromu procesu (procesu a všech jeho potomků) před vrácením ovládacího prvku. Toto chování se liší od chování rutiny Wait-Process, která čeká pouze na ukončení zadaných procesů.
Nejběžnějším případem použití pro Start-Process ve Windows je použití parametru Wait k blokování průběhu až do ukončení nového procesu. V systému, který není systémem Windows, je to 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.