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

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.exevagy 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-Processaz ú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 barvan állítva: . A harmadik parancs a következőre $nullvan á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, RunAsRunAsUser
.exe Open, , RunAsRunAsUser
.txt Open, , PrintPrintTo
.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.

Process

A PassThru paraméter használatakor ez a parancsmag egy Folyamat objektumot ad vissza.

Jegyzetek

A PowerShell a következő aliasokat Start-Processtartalmazza:

  • 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.exea 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álhat Start-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.