Sdílet prostřednictvím


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]
     [<CommonParameters>]
Start-Process
     [-FilePath] <string>
     [[-ArgumentList] <string[]>]
     [-WorkingDirectory <string>]
     [-PassThru]
     [-Verb <string>]
     [-WindowStyle <ProcessWindowStyle>]
     [-Wait]
     [<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 tématu 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. Příkazy vlastnost objektu ProcessStartInfo ukazuje, že můžete použít příkazy Otevřít a RunAs s powershell.exenebo s jakýmkoli 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`""

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ž ArgumentList hodnoty předají 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 tématu about_Quoting_Rules.

Nejlepších výsledků dosáhnete tak, že použijete jednu ArgumentList hodnotu 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

-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?.

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

-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 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, zadejte cestu pomocí parametru WorkingDirectory.

Typ:String
Aliasy:PSPath
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 klíči registru HKEY_USERS pro aktuálního uživatele.

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.

Ve stejném příkazu nemůžete použít parametry NoNewWindow a Window Style.

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.

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 Slovesa
.Cmd Edit, Open, Print, RunAs, RunAsUser
.exe Open, RunAs, RunAsUser
.txt Open, Print, PrintTo
.wav Open, Play

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.

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

-WindowStyle

Určuje stav okna, které se používá pro nový proces. Výchozí hodnota je Normal. Přijatelné hodnoty pro tento parametr jsou:

  • Normal
  • Hidden
  • Minimized
  • Maximized

Ve stejném příkazu nemůžete použít parametry WindowStyle a NoNewWind ow.

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. Výchozí hodnota je umístění spustitelného souboru nebo dokumentu, který se spouští. 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.

Process

Pokud použijete parametr PassThru, vrátí tato rutina objekt Process.

Poznámky

Windows PowerShell obsahuje následující aliasy pro Start-Process:

  • saps
  • 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 spustíte přesně tak, jak byste to v bash nebo cmd.exe. Rutinu Start-Process lze použít ke spuštění nativních příkazů, ale měla by se použít jenom v případě, že potřebujete řídit, jak se příkaz spustí.

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žít Start-Process ve vzdálené relaci, která očekává, že spuštěný proces relaci prožije.

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.