Megosztás a következőn keresztül:


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:

  • Normal
  • Hidden
  • Minimized
  • Maximized

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-Process parancsot követően leáll. Ezért nem használhatja a Start-Process egy 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.