Start-Process
Elindít egy vagy több folyamatot a helyi számítógépen.
Syntax
UseShellExecute
Start-Process
[-FilePath] <string>
[[-ArgumentList] <string[]>]
[-WorkingDirectory <string>]
[-PassThru]
[-Verb <string>]
[-WindowStyle <ProcessWindowStyle>]
[-Wait]
[-Environment <hashtable>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
A Start-Process parancsmag elindít egy vagy több folyamatot a helyi számítógépen. Alapértelmezés szerint Start-Process létrehoz egy új folyamatot, amely örökli az aktuális folyamatban definiált összes környezeti változót.
A folyamatban futó program megadásához írjon be egy végrehajtható fájlt vagy szkriptfájlt, vagy egy fájlt, amely a számítógépen egy program használatával nyitható meg. Ha nem végrehajtható fájlt ad meg, Start-Process elindítja a fájlhoz társított programot, hasonlóan a Invoke-Item parancsmaghoz.
A Start-Process paramétereivel olyan beállításokat adhat meg, mint a felhasználói profil betöltése, a folyamat új ablakban való elindítása vagy alternatív hitelesítő adatok használata.
Példák
1. példa: Alapértelmezett értékeket használó folyamat indítása
Ez a példa elindít egy folyamatot, amely az aktuális mappában lévő Sort.exe fájlt használja. A parancs az összes alapértelmezett értéket használja, beleértve az alapértelmezett ablakstílust, a munkamappát és a hitelesítő adatokat.
Start-Process -FilePath "sort.exe"
2. példa: Szövegfájl nyomtatása
Ez a példa elindít egy folyamatot, amely kinyomtatja a C:\PS-Test\MyFile.txt fájlt.
Start-Process -FilePath "myfile.txt" -WorkingDirectory "C:\PS-Test" -Verb Print
3. példa: Elemek új fájlba rendezésének folyamata
Ez a példa elindít egy folyamatot, amely a TestSort.txt fájl elemeit rendezi, és visszaadja a Sorted.txt fájlok rendezett elemeit. A rendszer minden hibát a SortError.txt fájlba ír. A UseNewEnvironment paraméter azt határozza meg, hogy a folyamat saját környezeti változókkal fusson.
$processOptions = @{
FilePath = "sort.exe"
RedirectStandardInput = "TestSort.txt"
RedirectStandardOutput = "Sorted.txt"
RedirectStandardError = "SortError.txt"
UseNewEnvironment = $true
}
Start-Process @processOptions
Ez a példa splatting használatával adja át a paramétereket a parancsmagnak. További információkért tekintse meg a következőket: about_Splatting.
4. példa: Folyamat indítása teljes méretű ablakban
Ez a példa elindítja a Notepad.exe folyamatot. Maximalizálja az ablakot, és megőrzi az ablakot, amíg a folyamat befejeződik.
Start-Process -FilePath "notepad" -Wait -WindowStyle Maximized
5. példa: A PowerShell indítása rendszergazdaként
Ez a példa a PowerShellt a Futtatás rendszergazdaként beállítással indítja el.
Start-Process -FilePath "powershell" -Verb RunAs
6. példa: Folyamat indítása különböző igék használatával
Ez a példa bemutatja, hogyan keresheti meg a folyamat indításakor használható igéket. A rendelkezésre álló igéket a folyamatban futó fájl fájlnévkiterjesztése határozza meg.
$startExe = New-Object System.Diagnostics.ProcessStartInfo -Args powershell.exe
$startExe.Verbs
open
runas
runasuser
A példa New-Object használ egy System.Diagnostics.ProcessStartInfo objektum létrehozásához a PowerShell-folyamatban futó powershell.exeszámára. A ProcessStartInfo objektum Igék tulajdonsága azt mutatja, hogy a és RunAs igék megnyitása powershell.exevagy .exe fájlt futtató folyamattal is használható.
7. példa: A folyamat argumentumainak megadása
Mindkét parancs elindítja a Windows parancsértelmezőt, és kiad egy dir parancsot a Program Files mappában. Mivel ez a mappanév szóközt tartalmaz, az értéknek szökött idézőjelekkel kell körülvennie.
Vegye figyelembe, hogy az első parancs egy karakterláncot határoz meg Argumentumlista. A második parancs egy sztringtömb.
Start-Process -FilePath "$Env:ComSpec" -ArgumentList "/c dir `"%SystemDrive%\Program Files`""
Start-Process -FilePath "$Env:ComSpec" -ArgumentList "/c","dir","`"%SystemDrive%\Program Files`""
8. példa: Leválasztott folyamat létrehozása Linuxon
Windows rendszeren Start-Process létrehoz egy független folyamatot, amely az indítási rendszerhéjtól függetlenül fut. Nem Windows-platformokon az újonnan elindított folyamat az elindított rendszerhéjhoz van csatolva. Ha az indítási rendszerhéj bezárul, a gyermekfolyamat leáll.
A gyermekfolyamat Unix-szerű platformokon történő megszüntetésének elkerülése érdekében kombinálhatja a Start-Processnohup. Az alábbi példa elindítja a Linuxon futó PowerShell háttérpéldányát, amely még az indítási munkamenet bezárása után is életben marad. A nohup parancs az aktuális könyvtárban lévő fájl nohup.out gyűjti a kimenetet.
# Runs for 2 minutes and appends output to ./nohup.out
Start-Process nohup 'pwsh -NoProfile -c "1..120 | % { Write-Host . -NoNewline; sleep 1 }"'
Ebben a példában Start-Process a Linux nohup parancsot futtatja, amely leválasztott folyamatként indítja el a pwsh. További információ: nohup cikk a Wikipédián.
9. példa: Környezeti változó felülírása egy folyamathoz
Alapértelmezés szerint a Start-Processhasználatakor az új folyamat ugyanazokkal a környezeti változókkal jön létre, mint az aktuális munkamenet. A Környezeti paraméter használatával felülbírálhatja ezen változók értékeit.
Ebben a példában a FOO környezeti változó hozzáadódik a munkamenethez foo értékkel.
A példa háromszor fut Start-Process, és minden alkalommal visszaadja a FOO értékét. Az első parancs nem bírálja felül a környezeti változót. A második parancsban a FOObarértékre van állítva. A harmadik parancsban a FOO$nullértékre van állítva, amely eltávolítja azt.
$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
Paraméterek
-ArgumentList
A parancsmag a folyamat indításakor használandó paramétereket vagy paraméterértékeket adja meg. Az argumentumok egyetlen sztringként fogadhatók el szóközökkel elválasztott argumentumokkal, vagy vesszővel elválasztott sztringek tömbjeként. A parancsmag egyetlen sztringbe illeszti a tömböt, és a tömb minden elemét egyetlen szóköz választja el egymástól.
A PowerShell-sztringek külső idézőjelei nem jelennek meg, ha a Argumentumlista értékek átkerülnek az új folyamatba. Ha a paraméterek vagy paraméterértékek szóközt vagy idézőjelet tartalmaznak, akkor azokat szökött dupla idézőjelekkel kell körülvenni. További információk az about_Quoting_Rules oldalon találhatók: .
A legjobb eredmény érdekében használjon egyetlen Argumentumlista értéket, amely tartalmazza az összes argumentumot és a szükséges idézőjeleket.
Paramétertulajdonságok
| Típus: | String[] |
| Alapértelmezett érték: | None |
| Támogatja a helyettesítő karaktereket: | False |
| DontShow: | False |
| Aliasok: | Argumentumok |
Paraméterkészletek
(All)
| Position: | 1 |
| Kötelező: | False |
| Folyamatból származó érték: | False |
| Folyamatból származó érték tulajdonságnév alapján: | False |
| Fennmaradó argumentumokból származó érték: | False |
-Confirm
Megerősítést kér a parancsmag futtatása előtt.
Paramétertulajdonságok
| Típus: | SwitchParameter |
| Alapértelmezett érték: | None |
| Támogatja a helyettesítő karaktereket: | False |
| DontShow: | False |
| Aliasok: | Cf |
Paraméterkészletek
(All)
| Position: | Named |
| Kötelező: | False |
| Folyamatból származó érték: | False |
| Folyamatból származó érték tulajdonságnév alapján: | False |
| Fennmaradó argumentumokból származó érték: | False |
-Credential
A művelet végrehajtásához engedéllyel rendelkező felhasználói fiókot ad meg. Alapértelmezés szerint a parancsmag az aktuális felhasználó hitelesítő adatait használja.
Írjon be egy felhasználónevet, például User01 vagy Domain01\User01, vagy adjon meg egy PSCredential objektumot, amelyet a Get-Credential parancsmag generál. Ha beír egy felhasználónevet, a rendszer kéri a jelszó megadását.
A hitelesítő adatokat egy PSCredential objektum tárolja, a jelszó pedig SecureString.
Megjegyzés:
További információért a SecureString adatvédelemről lásd: Mennyire biztonságos a SecureString?.
Paramétertulajdonságok
| Típus: | PSCredential |
| Alapértelmezett érték: | Current user |
| Támogatja a helyettesítő karaktereket: | False |
| DontShow: | False |
| Aliasok: | Futtatókörnyezetek |
Paraméterkészletek
Default
| Position: | Named |
| Kötelező: | False |
| Folyamatból származó érték: | False |
| Folyamatból származó érték tulajdonságnév alapján: | False |
| Fennmaradó argumentumokból származó érték: | False |
-Environment
Egy vagy több olyan környezeti változót határoz meg, amelyet felül kell bírálni a folyamathoz kivonattáblaként. Adja meg egy környezeti változó nevét kulcsként a kivonattáblában és a kívánt értéket. A környezeti változók leválasztásához adja meg az értékét $null.
A megadott változók a folyamat során lecserélődnek. Amikor megadja a PATH környezeti változót, az $PSHOME értékére váltja fel, amelyet a paraméter megadott értéke követ. Windows rendszeren a parancs hozzáfűzi a gép és a felhasználó hatókörében lévő PATH értékeit az új érték után.
Ez a paraméter a PowerShell 7.4-ben lett hozzáadva.
Paramétertulajdonságok
| Típus: | Hashtable |
| Alapértelmezett érték: | None |
| Támogatja a helyettesítő karaktereket: | False |
| DontShow: | False |
Paraméterkészletek
(All)
| Position: | Named |
| Kötelező: | False |
| Folyamatból származó érték: | False |
| Folyamatból származó érték tulajdonságnév alapján: | False |
| Fennmaradó argumentumokból származó érték: | False |
-FilePath
Megadja a folyamatban futó program választható elérési útját és fájlnevét. Adja meg a számítógépen lévő programhoz társított végrehajtható fájl vagy dokumentum nevét, például egy .txt vagy .doc fájlt. Ez a paraméter kötelező.
Ha csak olyan fájlnevet ad meg, amely nem felel meg egy rendszerparancsnak, használja a WorkingDirectory paramétert az elérési út megadásához.
Paramétertulajdonságok
| Típus: | String |
| Alapértelmezett érték: | None |
| Támogatja a helyettesítő karaktereket: | False |
| DontShow: | False |
| Aliasok: | PSPath, Útvonal |
Paraméterkészletek
(All)
| Position: | 0 |
| Kötelező: | True |
| Folyamatból származó érték: | False |
| Folyamatból származó érték tulajdonságnév alapján: | False |
| Fennmaradó argumentumokból származó érték: | False |
-LoadUserProfile
Azt jelzi, hogy ez a parancsmag betölti az aktuális felhasználó HKEY_USERS beállításkulcsában tárolt Windows-felhasználói profilt. A paraméter nem vonatkozik a nem Windows rendszerű rendszerekre.
Ez a paraméter nem befolyásolja a PowerShell-profilokat. További információért lásd: about_Profiles.
Paramétertulajdonságok
| Típus: | SwitchParameter |
| Alapértelmezett érték: | None |
| Támogatja a helyettesítő karaktereket: | False |
| DontShow: | False |
| Aliasok: | Lup |
Paraméterkészletek
Default
| Position: | Named |
| Kötelező: | False |
| Folyamatból származó érték: | False |
| Folyamatból származó érték tulajdonságnév alapján: | False |
| Fennmaradó argumentumokból származó érték: | False |
-NoNewWindow
Indítsa el az új folyamatot az aktuális konzolablakban. Windows rendszeren alapértelmezés szerint a PowerShell új ablakot nyit meg. Nem Windows rendszerű rendszereken soha nem kap új ablakot.
Nem használhatja a NoNewWindow és WindowStyle paramétereket ugyanabban a parancsban.
A paraméter nem vonatkozik a nem Windows rendszerű rendszerekre.
Paramétertulajdonságok
| Típus: | SwitchParameter |
| Alapértelmezett érték: | None |
| Támogatja a helyettesítő karaktereket: | False |
| DontShow: | False |
| Aliasok: | nnw |
Paraméterkészletek
Default
| Position: | Named |
| Kötelező: | False |
| Folyamatból származó érték: | False |
| Folyamatból származó érték tulajdonságnév alapján: | False |
| Fennmaradó argumentumokból származó érték: | False |
-PassThru
Egy folyamatobjektumot ad vissza minden olyan folyamathoz, amelyet a parancsmag elindított. Ez a parancsmag alapértelmezés szerint nem hoz létre kimenetet.
Paramétertulajdonságok
| Típus: | SwitchParameter |
| Alapértelmezett érték: | None |
| Támogatja a helyettesítő karaktereket: | False |
| DontShow: | False |
Paraméterkészletek
(All)
| Position: | Named |
| Kötelező: | False |
| Folyamatból származó érték: | False |
| Folyamatból származó érték tulajdonságnév alapján: | False |
| Fennmaradó argumentumokból származó érték: | False |
-RedirectStandardError
Egy fájlt ad meg. Ez a parancsmag elküldi a folyamat által generált hibákat egy ön által megadott fájlnak. Adja meg az elérési utat és a fájlnevet. Alapértelmezés szerint a hibák megjelennek a konzolon.
Paramétertulajdonságok
| Típus: | String |
| Alapértelmezett érték: | None |
| Támogatja a helyettesítő karaktereket: | False |
| DontShow: | False |
| Aliasok: | RSE |
Paraméterkészletek
Default
| Position: | Named |
| Kötelező: | False |
| Folyamatból származó érték: | False |
| Folyamatból származó érték tulajdonságnév alapján: | False |
| Fennmaradó argumentumokból származó érték: | False |
-RedirectStandardInput
Egy fájlt ad meg. Ez a parancsmag beolvassa a bemenetet a megadott fájlból. Adja meg a bemeneti fájl elérési útját és fájlnevét. Alapértelmezés szerint a folyamat lekéri a bemenetét a billentyűzetről.
Paramétertulajdonságok
| Típus: | String |
| Alapértelmezett érték: | None |
| Támogatja a helyettesítő karaktereket: | False |
| DontShow: | False |
| Aliasok: | Repetitív Megterhelésből Adódó Sérülés (RSI) |
Paraméterkészletek
Default
| Position: | Named |
| Kötelező: | False |
| Folyamatból származó érték: | False |
| Folyamatból származó érték tulajdonságnév alapján: | False |
| Fennmaradó argumentumokból származó érték: | False |
-RedirectStandardOutput
Egy fájlt ad meg. Ez a parancsmag elküldi a folyamat által létrehozott kimenetet egy ön által megadott fájlnak. Adja meg az elérési utat és a fájlnevet. Alapértelmezés szerint a kimenet megjelenik a konzolon.
Paramétertulajdonságok
| Típus: | String |
| Alapértelmezett érték: | None |
| Támogatja a helyettesítő karaktereket: | False |
| DontShow: | False |
| Aliasok: | RSO |
Paraméterkészletek
Default
| Position: | Named |
| Kötelező: | False |
| Folyamatból származó érték: | False |
| Folyamatból származó érték tulajdonságnév alapján: | False |
| Fennmaradó argumentumokból származó érték: | False |
-UseNewEnvironment
Azt jelzi, hogy ez a parancsmag a folyamathoz megadott új környezeti változókat használja. Alapértelmezés szerint az elindított folyamat a szülőfolyamattól örökölt környezeti változókkal fut.
Windows rendszeren az UseNewEnvironmenthasználatakor az új folyamat csak a gép hatóköréhez definiált alapértelmezett környezeti változókat tartalmazza. Ennek az a mellékhatása, hogy a $Env:USERNAME a SYSTEM van beállítva. A Felhasználói hatókör egyik változója sem szerepel benne.
Paramétertulajdonságok
| Típus: | SwitchParameter |
| Alapértelmezett érték: | None |
| Támogatja a helyettesítő karaktereket: | False |
| DontShow: | False |
Paraméterkészletek
Default
| Position: | Named |
| Kötelező: | False |
| Folyamatból származó érték: | False |
| Folyamatból származó érték tulajdonságnév alapján: | False |
| Fennmaradó argumentumokból származó érték: | False |
-Verb
A parancsmag a folyamat indításakor használandó igét adja meg. Az elérhető igéket a folyamatban futó fájl fájlnévkiterjesztése határozza meg.
Az alábbi táblázat néhány gyakori folyamatfájl-típushoz tartozó igéket mutatja be.
| Fájltípus | Igék |
|---|---|
| .cmd |
Edit, Open, Print, RunAsRunAsUser |
| .exe | \ |
| .txt | \ |
| .wav |
Open, Play |
A folyamat során futó fájllal használható igék megkereséséhez a New-Object parancsmaggal hozzon létre egy System.Diagnostics.ProcessStartInfo objektumot a fájlhoz. Az elérhető igék a ProcessStartInfo objektum Verbs tulajdonságában találhatók. Részletekért lásd a példákat.
A paraméter nem vonatkozik a nem Windows rendszerű rendszerekre.
Paramétertulajdonságok
| Típus: | String |
| Alapértelmezett érték: | None |
| Támogatja a helyettesítő karaktereket: | False |
| DontShow: | False |
Paraméterkészletek
UseShellExecute
| Position: | Named |
| Kötelező: | False |
| Folyamatból származó érték: | False |
| Folyamatból származó érték tulajdonságnév alapján: | False |
| Fennmaradó argumentumokból származó érték: | False |
-Wait
Azt jelzi, hogy ez a parancsmag megvárja a megadott folyamatot és annak leszármazottait, mielőtt további bemenetet fogad. Ez a paraméter letiltja a parancssort, vagy megőrzi az ablakot, amíg a folyamatok befejeződnek.
Paramétertulajdonságok
| Típus: | SwitchParameter |
| Alapértelmezett érték: | None |
| Támogatja a helyettesítő karaktereket: | False |
| DontShow: | False |
Paraméterkészletek
(All)
| Position: | Named |
| Kötelező: | False |
| Folyamatból származó érték: | False |
| Folyamatból származó érték tulajdonságnév alapján: | False |
| Fennmaradó argumentumokból származó érték: | False |
-WhatIf
Megjeleníti, mi történne, ha a parancsmag futna. A parancsprogram nem lett futtatva.
Ezt a paramétert a PowerShell 6.0-ban vezettük be.
Paramétertulajdonságok
| Típus: | SwitchParameter |
| Alapértelmezett érték: | None |
| Támogatja a helyettesítő karaktereket: | False |
| DontShow: | False |
| Aliasok: | Wi |
Paraméterkészletek
(All)
| Position: | Named |
| Kötelező: | False |
| Folyamatból származó érték: | False |
| Folyamatból származó érték tulajdonságnév alapján: | False |
| Fennmaradó argumentumokból származó érték: | False |
-WindowStyle
Az új folyamathoz használt ablak állapotát adja meg. Az alapértelmezett érték a Normal.
A paraméter elfogadható értékei a következők:
NormalHiddenMinimizedMaximized
Nem használhatja a WindowStyle és NoNewWindow paramétereket ugyanabban a parancsban.
A paraméter nem vonatkozik a nem Windows rendszerű rendszerekre. Ha nem Windows rendszerű rendszereken használja, soha nem kap új ablakot.
Paramétertulajdonságok
| Típus: | ProcessWindowStyle |
| Alapértelmezett érték: | None |
| Elfogadott értékek: | Normal, Hidden, Minimized, Maximized |
| Támogatja a helyettesítő karaktereket: | False |
| DontShow: | False |
Paraméterkészletek
(All)
| Position: | Named |
| Kötelező: | False |
| Folyamatból származó érték: | False |
| Folyamatból származó érték tulajdonságnév alapján: | False |
| Fennmaradó argumentumokból származó érték: | False |
-WorkingDirectory
Megadja az új folyamat indításának helyét.
Ha nincs megadva, a parancsmag alapértelmezés szerint a FilePath paraméterben megadott teljes mértékben minősített helyre van beállítva. Ha a FilePath paraméter értéke nem teljes, akkor az alapértelmezés szerint a hívási folyamat aktuális munkakönyvtára lesz.
A helyettesítő karakterek nem támogatottak. Az elérési út nem tartalmazhat helyettesítő karakterként értelmezett karaktereket.
Paramétertulajdonságok
| Típus: | String |
| Alapértelmezett érték: | None |
| Támogatja a helyettesítő karaktereket: | False |
| DontShow: | False |
Paraméterkészletek
(All)
| Position: | Named |
| Kötelező: | False |
| Folyamatból származó érték: | False |
| Folyamatból származó érték tulajdonságnév alapján: | False |
| Fennmaradó argumentumokból származó érték: | False |
CommonParameters
Ez a parancsmag a következő gyakori paramétereket támogatja: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction és -WarningVariable. További információért lásd about_CommonParameters.
Bevitelek
None
Ehhez a parancsmaghoz nem lehet objektumokat csövezni.
Kimenetek
None
Ez a parancsmag alapértelmezés szerint nem ad vissza kimenetet.
Process
A PassThru paraméter használatakor ez a parancsmag egy Folyamat objektumot ad vissza.
Jegyzetek
A PowerShell a következő aliasokat tartalmazza Start-Process:
- Minden platform
saps
- Windows
start
A natív parancsok az operációs rendszerben telepített végrehajtható fájlok. Ezek a végrehajtható fájlok bármilyen parancssori rendszerhéjból futtathatók, például a PowerShellből. A parancsot általában pontosan úgy futtatod, ahogyan a bash vagy cmd.exeesetén tennéd. A Start-Process parancsmag bármely natív parancs futtatására használható, de csak akkor használható, ha szabályoznia kell a parancs végrehajtásának módját.
Start-Process grafikus felhasználói felületi programok nem Windows-platformokon való futtatásához hasznos. Futtassa például a Start-Process gedit a GNOME Desktop-környezetek közös grafikus szövegszerkesztőjének elindításához.
Alapértelmezés szerint Start-Process elindít egy folyamatot, aszinkron módon. A vezérlő azonnal visszakerül a PowerShellbe, még akkor is, ha az új folyamat még fut.
- A helyi rendszeren az elindított folyamat független a hívási folyamattól.
- Távoli rendszerben az új folyamat a távoli munkamenet befejeződésekor, közvetlenül a
Start-Processparancsot követően leáll. Ezért nem használhatja aStart-Processegy távoli munkamenetben, amely arra számít, hogy az elindított folyamat túllépi a munkamenetet.
Ha egy távoli munkamenetben Start-Process kell használnia, hívja meg a Wait paraméterrel. Vagy más módszerekkel is létrehozhat egy új folyamatot a távoli rendszeren.
A Wait paraméter használatakor Start-Process megvárja, amíg a folyamatfa (a folyamat és az összes leszármazottja) kilép a vezérlő visszatérése előtt. Ez eltér a Wait-Process parancsmag viselkedésétől, amely csak a megadott folyamatok kilépésére vár.
Windows rendszeren az Start-Process leggyakoribb használati esete, hogy a Wait paramétert használja a folyamat előrehaladásának blokkolásához, amíg az új folyamat le nem lép. Nem Windows rendszeren ez ritkán szükséges, mivel a parancssori alkalmazások alapértelmezett viselkedése egyenértékű a Start-Process -Wait.
Ez a parancsmag a System.Diagnostics.Process osztály Start metódusával lett implementálva. A metódusról további információt a Process.Start metóduscímű témakörben talál.