Start-Process
Elindít egy vagy több folyamatot a helyi számítógépen.
Syntax
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
A Start-Process
parancsmag elindít egy vagy több folyamatot a helyi számítógépen. Alapértelmezés szerint létrehoz egy új folyamatot, Start-Process
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
a parancsmaghoz Invoke-Item
hasonlóan elindítja a fájlhoz társított programot.
A paraméterekkel Start-Process
megadhatja a beállításokat, például betölthet egy felhasználói profilt, elindíthatja a folyamatot egy új ablakban, vagy másodlagos hitelesítő adatokat használhat.
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 Sort.exe
aktuális mappában lévő 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 rendezi a TestSort.txt
fájl elemeit, é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ó: 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 Futtatás rendszergazdaként lehetőséggel indítja el a PowerShellt.
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 egy System.Diagnostics.ProcessStartInfo objektum létrehozására használható New-Object
a PowerShell-folyamatban futó fájlhozpowershell.exe
. A ProcessStartInfo objektum Verbs tulajdonsága azt mutatja, hogy a Megnyitás és RunAs
az igék egy fájlt futtató .exe
folyamattal powershell.exe
vagy bármely folyamattal használhatók.
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 argumentumlistaként határoz meg egy sztringet. 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 egy független folyamatot hoz létre, Start-Process
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 való megszüntetésének elkerülése érdekében kombinálhatja Start-Process
a következővel nohup
: . 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 fájlban nohup.out
gyűjti a kimenetet az aktuális könyvtárban.
# 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 indul el pwsh
. További információkért lásd a Wikipédián található nohup cikket.
9. példa: Környezeti változó felülírása egy folyamathoz
Alapértelmezés szerint Start-Process
az új folyamat az aktuális munkamenettel megegyező környezeti változókkal jön létre. A Környezeti paraméter használatával felülbírálhatja ezeknek a változóknak az értékeit.
Ebben a példában a környezeti változó FOO
hozzáadódik a munkamenethez foo
értékként.
A példa háromszor fut Start-Process
, és minden alkalommal visszaadja FOO
az értéket. Az első parancs nem bírálja felül a környezeti változót. A második parancs FOO
a következőre bar
van állítva: . A harmadik parancs a következőre $null
van állítva, FOO
amely eltávolítja.
$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, amikor az 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ó: about_Quoting_Rules.
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.
Típus: | String[] |
Aliasok: | Args |
Position: | 1 |
Alapértelmezett érték: | None |
Kötelező: | False |
Folyamatbemenet elfogadása: | False |
Helyettesítő karakterek elfogadása: | False |
-Confirm
Jóváhagyást kér a parancsmag futtatása előtt.
Típus: | SwitchParameter |
Aliasok: | cf |
Position: | Named |
Alapértelmezett érték: | None |
Kötelező: | False |
Folyamatbemenet elfogadása: | False |
Helyettesítő karakterek elfogadása: | 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 írjon be egy PSCredential objektumot, amelyet a Get-Credential
parancsmag hoz létre. Ha beír egy felhasználónevet, a rendszer kéri a jelszó megadását.
A hitelesítő adatokat PSCredential objektum tárolja, a jelszót pedig SecureStringként tárolja a rendszer.
Feljegyzés
További információ a SecureString adatvédelemről: Mennyire biztonságos a SecureString?.
Típus: | PSCredential |
Aliasok: | RunAs |
Position: | Named |
Alapértelmezett érték: | Current user |
Kötelező: | False |
Folyamatbemenet elfogadása: | False |
Helyettesítő karakterek elfogadása: | 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 a következőként $null
: .
A megadott változók a folyamat során lecserélődnek. Amikor megadja a PATH
környezeti változót, a program lecseréli $PSHOME
a paraméter által megadott értékre. Windows rendszeren a parancs az új érték után hozzáfűzi a Gép és a Felhasználó hatókörök értékeit PATH
.
Ez a paraméter a PowerShell 7.4-ben lett hozzáadva.
Típus: | Hashtable |
Position: | Named |
Alapértelmezett érték: | None |
Kötelező: | False |
Folyamatbemenet elfogadása: | False |
Helyettesítő karakterek elfogadása: | 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( például fájl .txt
) .doc
nevét. Ez a paraméter kötelező.
Ha csak olyan fájlnevet ad meg, amely nem felel meg egy rendszerparancsnak, a WorkingDirectory paraméterrel adja meg az elérési utat.
Típus: | String |
Aliasok: | PSPath, Path |
Position: | 0 |
Alapértelmezett érték: | None |
Kötelező: | True |
Folyamatbemenet elfogadása: | False |
Helyettesítő karakterek elfogadása: | False |
-LoadUserProfile
Azt jelzi, hogy ez a parancsmag betölti az aktuális felhasználó beállításkulcsában HKEY_USERS
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ó: about_Profiles.
Típus: | SwitchParameter |
Aliasok: | Lup |
Position: | Named |
Alapértelmezett érték: | None |
Kötelező: | False |
Folyamatbemenet elfogadása: | False |
Helyettesítő karakterek elfogadása: | 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.
Ugyanabban a parancsban nem használhatja a NoNewWindow és a WindowStyle paramétereket.
A paraméter nem vonatkozik a nem Windows rendszerű rendszerekre.
Típus: | SwitchParameter |
Aliasok: | nnw |
Position: | Named |
Alapértelmezett érték: | None |
Kötelező: | False |
Folyamatbemenet elfogadása: | False |
Helyettesítő karakterek elfogadása: | 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.
Típus: | SwitchParameter |
Position: | Named |
Alapértelmezett érték: | None |
Kötelező: | False |
Folyamatbemenet elfogadása: | False |
Helyettesítő karakterek elfogadása: | 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.
Típus: | String |
Aliasok: | RSE |
Position: | Named |
Alapértelmezett érték: | None |
Kötelező: | False |
Folyamatbemenet elfogadása: | False |
Helyettesítő karakterek elfogadása: | 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.
Típus: | String |
Aliasok: | RSI |
Position: | Named |
Alapértelmezett érték: | None |
Kötelező: | False |
Folyamatbemenet elfogadása: | False |
Helyettesítő karakterek elfogadása: | 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.
Típus: | String |
Aliasok: | RSO |
Position: | Named |
Alapértelmezett érték: | None |
Kötelező: | False |
Folyamatbemenet elfogadása: | False |
Helyettesítő karakterek elfogadása: | 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 a UseNewEnvironment haszná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
RENDSZER értékre van állítva. A felhasználói hatókör egyik változója sem szerepel benne.
Típus: | SwitchParameter |
Position: | Named |
Alapértelmezett érték: | None |
Kötelező: | False |
Folyamatbemenet elfogadása: | False |
Helyettesítő karakterek elfogadása: | 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 | Parancsok |
---|---|
.cmd | Edit , Open , Print , RunAs RunAsUser |
.exe | Open , , RunAs RunAsUser |
.txt | Open , , Print PrintTo |
.wav | Open , Play |
A folyamatban 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.
Típus: | String |
Position: | Named |
Alapértelmezett érték: | None |
Kötelező: | False |
Folyamatbemenet elfogadása: | False |
Helyettesítő karakterek elfogadása: | 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.
Típus: | SwitchParameter |
Position: | Named |
Alapértelmezett érték: | None |
Kötelező: | False |
Folyamatbemenet elfogadása: | False |
Helyettesítő karakterek elfogadása: | False |
-WhatIf
Bemutatja, mi történne a parancsmag futtatásakor. A parancsmag nem fut.
Ezt a paramétert a PowerShell 6.0-ban vezettük be.
Típus: | SwitchParameter |
Aliasok: | wi |
Position: | Named |
Alapértelmezett érték: | None |
Kötelező: | False |
Folyamatbemenet elfogadása: | False |
Helyettesítő karakterek elfogadása: | False |
-WindowStyle
Az új folyamathoz használt ablak állapotát adja meg. Az alapértelmezett érték Normal
.
A paraméter elfogadható értékei a következők:
Normal
Hidden
Minimized
Maximized
Ugyanabban a parancsban nem használhatja a WindowStyle és a NoNewWindow paramétereket.
A paraméter nem vonatkozik a nem Windows rendszerű rendszerekre. Ha nem Windows rendszerű rendszereken használja, soha nem kap új ablakot.
Típus: | ProcessWindowStyle |
Elfogadott értékek: | Normal, Hidden, Minimized, Maximized |
Position: | Named |
Alapértelmezett érték: | None |
Kötelező: | False |
Folyamatbemenet elfogadása: | False |
Helyettesítő karakterek elfogadása: | 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 lesz beállítva. Ha a FilePath paraméter értéke nem teljes értékű, 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.
Típus: | String |
Position: | Named |
Alapértelmezett érték: | None |
Kötelező: | False |
Folyamatbemenet elfogadása: | False |
Helyettesítő karakterek elfogadása: | False |
Bevitelek
None
Ehhez a parancsmaghoz nem lehet objektumokat csövezni.
Kimenetek
None
Ez a parancsmag alapértelmezés szerint nem ad vissza kimenetet.
A PassThru paraméter használatakor ez a parancsmag egy Folyamat objektumot ad vissza.
Jegyzetek
A PowerShell a következő aliasokat Start-Process
tartalmazza:
- 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 ugyanúgy futtatja, mint a be- vagy cmd.exe
a betett parancsotbash
. A Start-Process
parancsmag bármilyen 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
GUI-programok nem Windows-platformokon való futtatásához hasznos. Futtassa Start-Process gedit
például a GNOME Desktop-környezetek közös grafikus szövegszerkesztőjének elindítását.
Alapértelmezés szerint Start-Process
aszinkron módon indít el egy folyamatot. 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-Process
parancsot követve leáll. Ezért nem használhatStart-Process
olyan távoli munkamenetben, amely arra számít, hogy az elindított folyamat túllépi a munkamenetet.
Ha távoli munkamenetben kell használnia Start-Process
, hívja meg a Wait paraméterrel. Vagy más módszerekkel is létrehozhat egy új folyamatot a távoli rendszeren.
A Várakozás paraméter használatakor megvárja, Start-Process
amíg a folyamatfa (a folyamat és annak ö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 a leggyakoribb használati eset Start-Process
az, ha a Wait paraméter használatával blokkolja a folyamatot, amíg az új folyamat nem lép ki. 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ódus című témakörben talál.