Start-Process
Spustí jeden nebo více procesů v místním počítači.
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
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 nespustitelný soubor, Start-Process
spustí program, který je k souboru přidružený, podobně jako u rutiny 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žije 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ý soubor vytiskne 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 TestSort.txt
souboru a vrátí seřazené položky v souborech Sorted.txt
. Všechny chyby se zapíšou do SortError.txt
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
Tento příklad používá splatting k předání parametrů rutině . 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 až do dokončení procesu.
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: Použití různých sloves ke spuštění procesu
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.exe
nebo s libovolným procesem .exe
, který spouští soubor.
Příklad 7: Zadání argumentů procesu
Oba příkazy spustí interpret příkazů Systému Windows a vystaví dir
příkaz ve Program Files
složce . Vzhledem k tomu, že tento název složky obsahuje mezeru, musí být hodnota uzavřena uvozovkami s řídicími znaky.
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: Spuštění příkazu jako správce s použitím alternativních přihlašovacích údajů
Ve Windows můžete spustit proces se zvýšenými oprávněními spuštěním příkazu Start-Process -Verb RunAs
.
Tím se zvýší úroveň kontextu aktuálního uživatele. Parametr Credential umožňuje zadat alternativní uživatelské jméno a heslo, což vám umožní spustit proces v jiném uživatelském obsahu.
Parametry Credential a Verb se ale nedají použít společně.
Pokud chcete spustit proces se zvýšenými oprávněními s použitím alternativních přihlašovacích údajů, musíte nejprve spustit PowerShell s použitím alternativních přihlašovacích údajů a pak pomocí příkazu Start-Process
spustit proces se zvýšenými oprávněními.
$cred = Get-Credential
$args = '-noprofile -command "Start-Process cmd.exe -Verb RunAs -args /k"'
Start-Process pwsh.exe -Credential $cred -WindowStyle Hidden -ArgumentList $args
Příklad začíná cmd.exe
zvýšenými oprávněními z relace PowerShellu, která běží pod alternativními přihlašovacími údaji.
Příklad 9: 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 jiných platformách než Windows je nově spuštěný proces připojený k prostředí, které se spustilo. Pokud se spouštěcí prostředí zavře, podřízený proces se ukončí.
Chcete-li zabránit ukončení podřízeného procesu na unixových platformách, 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 ukončení spouštěné relace. Příkaz nohup
shromáždí 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
nástroj spouští příkaz Linuxu nohup
, který se pwsh
spustí jako odpojený proces. Další informace najdete v článku nohup na Wikipedii.
Parametry
-ArgumentList
Určuje parametry nebo hodnoty parametrů, které se mají použít při spuštění procesu touto rutinou. 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 jednou mezerou.
Při předání hodnot ArgumentList do nového procesu se nezahrnou vnější uvozovky řetězců PowerShellu. Pokud parametry nebo hodnoty parametrů obsahují mezeru nebo uvozovky, musí být uzavřeny uvozovkami s řídicími dvojitými uvozovkami. Další informace najdete v tématu 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.
Type: | String[] |
Aliases: | Args |
Position: | 1 |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Confirm
Před spuštěním rutiny zobrazí výzvu k potvrzení.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | 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?.
Type: | PSCredential |
Aliases: | RunAs |
Position: | Named |
Default value: | Current user |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-FilePath
Určuje volitelnou cestu a název souboru programu, který se v procesu spouští. 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, který neodpovídá systémovému příkazu, zadejte cestu pomocí parametru WorkingDirectory .
Type: | String |
Aliases: | PSPath, Path |
Position: | 0 |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-LoadUserProfile
Označuje, že tato rutina načte profil uživatele systému Windows uložený v klíči HKEY_USERS
registru pro aktuálního uživatele. Parametr se nevztahuje na jiné systémy než Windows.
Tento parametr nemá vliv na profily PowerShellu. Další informace najdete v tématu about_Profiles.
Type: | SwitchParameter |
Aliases: | Lup |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-NoNewWindow
Spusťte nový proces v aktuálním okně konzoly. PowerShell ve výchozím nastavení ve Windows 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 jiné systémy než Windows.
Type: | SwitchParameter |
Aliases: | nnw |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-PassThru
Vrátí objekt procesu pro každý proces, který rutina spustila. Ve výchozím nastavení tato rutina negeneruje žádný výstup.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | 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 nástroje .
Type: | String |
Aliases: | RSE |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-RedirectStandardInput
Určuje soubor. Tato rutina čte vstup ze zadaného souboru. Zadejte cestu a název souboru vstupního souboru. Ve výchozím nastavení získá proces vstup z klávesnice.
Type: | String |
Aliases: | RSI |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | 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.
Type: | String |
Aliases: | RSO |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-UseNewEnvironment
Označuje, že tato rutina používá nové proměnné prostředí zadané pro proces. Ve výchozím nastavení se spuštěný proces spouští 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, že $env:USERNAME
hodnota je nastavená na HODNOTU SYSTEM. Žádná z proměnných z oboru Uživatel není zahrnuta.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Verb
Určuje příkaz, který se má použít při spuštění procesu touto rutinou. 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ů procesů.
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, který běží v procesu, pomocí New-Object
rutiny vytvořte system.Diagnostics.ProcessStartInfo objekt pro soubor. Dostupné příkazy jsou ve vlastnosti Slovesobjektu ProcessStartInfo . Podrobnosti najdete v příkladech.
Parametr se nevztahuje na jiné systémy než Windows.
Type: | String |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | 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 až do dokončení procesů.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WhatIf
Zobrazuje, co by se stalo při spuštění rutiny. Rutina se nespustí.
Tento parametr byl zaveden v PowerShellu 6.0.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | 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 jiné systémy než Windows. Při použití v jiných systémech než Windows nikdy nedostanete nové okno.
Type: | ProcessWindowStyle |
Accepted values: | Normal, Hidden, Minimized, Maximized |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WorkingDirectory
Určuje umístění, ve které má nový proces začít.
Pokud není zadán, rutina ve výchozím nastavení použije plně kvalifikované umístění zadané v parametru FilePath . Pokud hodnota parametru FilePath není plně kvalifikována, je výchozí aktuální pracovní adresář volajícího procesu.
Zástupné cardy se nepodporují. Cesta nesmí obsahovat znaky, které by byly interpretovány jako zástupné znaky.
Type: | String |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Vstupy
None
Objekty nelze do této rutiny převést.
Výstupy
None
Ve výchozím nastavení tato rutina nevrací žádný výstup.
Když 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é spouštět z libovolného prostředí příkazového řádku, jako je PowerShell. Příkaz obvykle spouštíte přesně jako v nástroji bash
nebo cmd.exe
. Rutinu Start-Process
lze použít ke spuštění libovolných nativních příkazů, ale měla by se používat pouze v případě, že potřebujete řídit způsob provádění příkazu.
Start-Process
je užitečná pro spouštění programů s grafickým uživatelským rozhraním na jiných platformách než Windows. Například spuštěním příkazu Start-Proces gedit
spusťte grafický textový editor, který se běžně používá v desktopových prostředích GNOME.
Ve výchozím nastavení Start-Process
spouští 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 je nový proces ukončen po ukončení vzdálené relace bezprostředně po příkazu
Start-Process
. Proto nemůžete použítStart-Process
ve vzdálené relaci, která očekává, že spuštěný proces relaci přež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 Wait čeká na Start-Process
ukončení stromu procesu (proces a všichni jeho potomci), než vrátí řízení. To se liší od chování Wait-Process
rutiny, která čeká pouze na ukončení zadaných procesů.
Ve Windows je nejběžnějším případem Start-Process
použití parametru Wait k blokování průběhu, dokud se nový proces neskončí. V systému, který není windows, je to zřídka potřeba, protože výchozí chování aplikací příkazového řádku je ekvivalentní Start-Process -Wait
k .
Tato rutina je implementována pomocí metody Start třídy System.Diagnostics.Process . Další informace o této metodě naleznete v tématu Process.Start – metoda.
Související odkazy
Váš názor
Odeslat a zobrazit názory pro