Start-Job

Elindít egy PowerShell-háttérfeladatot.

Syntax

Start-Job
     [-Name <String>]
     [-ScriptBlock] <ScriptBlock>
     [-Credential <PSCredential>]
     [-Authentication <AuthenticationMechanism>]
     [[-InitializationScript] <ScriptBlock>]
     [-WorkingDirectory <String>]
     [-RunAs32]
     [-PSVersion <Version>]
     [-InputObject <PSObject>]
     [-ArgumentList <Object[]>]
     [<CommonParameters>]
Start-Job
     [-DefinitionName] <String>
     [[-DefinitionPath] <String>]
     [[-Type] <String>]
     [-WorkingDirectory <String>]
     [<CommonParameters>]
Start-Job
     [-Name <String>]
     [-Credential <PSCredential>]
     [-FilePath] <String>
     [-Authentication <AuthenticationMechanism>]
     [[-InitializationScript] <ScriptBlock>]
     [-WorkingDirectory <String>]
     [-RunAs32]
     [-PSVersion <Version>]
     [-InputObject <PSObject>]
     [-ArgumentList <Object[]>]
     [<CommonParameters>]
Start-Job
     [-Name <String>]
     [-Credential <PSCredential>]
     -LiteralPath <String>
     [-Authentication <AuthenticationMechanism>]
     [[-InitializationScript] <ScriptBlock>]
     [-WorkingDirectory <String>]
     [-RunAs32]
     [-PSVersion <Version>]
     [-InputObject <PSObject>]
     [-ArgumentList <Object[]>]
     [<CommonParameters>]

Description

A Start-Job parancsmag elindít egy PowerShell-háttérfeladatot a helyi számítógépen.

A PowerShell háttérfeladatai az aktuális munkamenet használata nélkül futtatnak parancsokat. Háttérfeladat indításakor a feladatobjektum azonnal visszatér, még akkor is, ha a feladat hosszabb időt vesz igénybe. A munkamenetben megszakítás nélkül folytathatja a munkát, amíg a feladat fut.

A feladatobjektum hasznos információkat tartalmaz a feladatról, de nem tartalmazza a feladat eredményeit. Amikor a feladat befejeződik, a Receive-Job parancsmaggal lekérheti a feladat eredményeit. További információ a háttérfeladatokról: about_Jobs.

Ha távoli számítógépen szeretne háttérfeladatot futtatni, használja a sok parancsmagon elérhető AsJob paramétert, vagy a parancsmag használatával Invoke-Command futtasson egy Start-Job parancsot a távoli számítógépen. További információ: about_Remote_Jobs.

A PowerShell 3.0-tól Start-Job kezdve elindíthat egyéni feladattípusok, például ütemezett feladatok példányait. A feladatok egyéni típusok használatával történő Start-Job elindításával kapcsolatos további információkért tekintse meg a feladattípus-funkció súgódokumentumait.

A PowerShell 6.0-tól kezdve a feladatok az ampersand (&) háttér operátorral indíthatók el. A háttéroperátor működése hasonló a következőhöz Start-Job: . A feladatok indításának mindkét metódusa létrehoz egy PSRemotingJob-feladatobjektumot . További információ az ampersand (&) használatáról: about_Operators.

A PowerShell 7 bevezette a WorkingDirectory paramétert, amely meghatározza a háttérfeladat kezdeti munkakönyvtárát. Ha a paraméter nincs megadva, Start-Job az alapértelmezett érték a feladatot kezdeményező hívó aktuális munkakönyvtára lesz.

Feljegyzés

A folyamaton kívüli háttérfeladatok Start-Job létrehozása nem támogatott abban a forgatókönyvben, amelyben a PowerShell más alkalmazásokban, például a PowerShell Azure Functionsben fut.

Ez azért van így, mert Start-Job attól függ, hogy a pwsh végrehajtható fájl elérhető-e $PSHOME a folyamaton kívüli háttérfeladat elindításához, de amikor egy alkalmazás a PowerShellt üzemelteti, az közvetlenül a PowerShell NuGet SDK-csomagokat használja, és nem pwsh lesz szállítva.

Ebben a forgatókönyvben Start-ThreadJob a ThreadJob modul helyettesíthető.

Példák

1. példa: Háttérfeladat indítása

Ez a példa elindít egy háttérfeladatot, amely a helyi számítógépen fut.

Start-Job -ScriptBlock { Get-Process -Name pwsh }

Id  Name   PSJobTypeName   State     HasMoreData   Location    Command
--  ----   -------------   -----     -----------   --------    -------
1   Job1   BackgroundJob   Running   True          localhost   Get-Process -Name pwsh

Start-JobA ScriptBlock paramétert használja háttérfeladatként való futtatáshozGet-Process. A Név paraméter a PowerShell-folyamatok megkeresését határozza meg. pwsh A feladat adatai megjelennek, és a PowerShell visszatér egy kérdéshez, amíg a feladat a háttérben fut.

A feladat kimenetének megtekintéséhez használja a Receive-Job parancsmagot. Például: Receive-Job -Id 1.

2. példa: Háttérfeladat indítása a háttér operátorral

Ez a példa az ampersand (&) háttér operátorral indít el egy háttérfeladatot a helyi számítógépen. A feladat ugyanazt az eredményt kapja, mint Start-Job az 1. példában.

Get-Process -Name pwsh &

Id    Name   PSJobTypeName   State       HasMoreData     Location      Command
--    ----   -------------   -----       -----------     --------      -------
5     Job5   BackgroundJob   Running     True            localhost     Microsoft.PowerShell.Man...

Get-ProcessA Név paraméter használatával adja meg a PowerShell-folyamatokat. pwsh Az ampersand (&) háttérfeladatként futtatja a parancsot. A feladat adatai megjelennek, és a PowerShell visszatér egy kérdéshez, amíg a feladat a háttérben fut.

A feladat kimenetének megtekintéséhez használja a Receive-Job parancsmagot. Például: Receive-Job -Id 5.

3. példa: Feladat indítása az Invoke-Command paranccsal

Ez a példa több számítógépen futtat egy feladatot. A feladat egy változóban van tárolva, és a PowerShell parancssorában található változónév használatával hajtja végre.

$jobWRM = Invoke-Command -ComputerName (Get-Content -Path C:\Servers.txt) -ScriptBlock {
   Get-Service -Name WinRM } -JobName WinRM -ThrottleLimit 16 -AsJob

A rendszer Invoke-Command létrehoz és tárol egy feladatokat a $jobWRM változóban. Invoke-CommandA ComputerName paraméter használatával adja meg azokat a számítógépeket, ahol a feladat fut. Get-Content lekéri a kiszolgálóneveket a C:\Servers.txt fájlból.

A ScriptBlock paraméter egy parancsot ad meg, amely Get-Service lekéri a WinRM szolgáltatást. A JobName paraméter egy rövid nevet ad meg a feladatnak, a WinRM-nek. A ThrottleLimit paraméter az egyidejű parancsok számát 16-ra korlátozza. Az AsJob paraméter elindít egy háttérfeladatot, amely futtatja a parancsot a kiszolgálókon.

4. példa: Feladatadatok lekérése

Ez a példa információkat kap egy feladatról, és megjeleníti a helyi számítógépen futtatott befejezett feladat eredményeit.

$j = Start-Job -ScriptBlock { Get-WinEvent -Log System } -Credential Domain01\User01
$j | Select-Object -Property *

State         : Completed
HasMoreData   : True
StatusMessage :
Location      : localhost
Command       : Get-WinEvent -Log System
JobStateInfo  : Completed
Finished      : System.Threading.ManualResetEvent
InstanceId    : 27ce3fd9-40ed-488a-99e5-679cd91b9dd3
Id            : 18
Name          : Job18
ChildJobs     : {Job19}
PSBeginTime   : 8/8/2019 14:41:57
PSEndTime     : 8/8/2019 14:42:07
PSJobTypeName : BackgroundJob
Output        : {}
Error         : {}
Progress      : {}
Verbose       : {}
Debug         : {}
Warning       : {}
Information   : {}

Start-JobA ScriptBlock paraméterrel futtat egy parancsot, amely megadja Get-WinEvent a rendszernapló lekérését. A Hitelesítőadat paraméter egy tartományi felhasználói fiókot határoz meg, amely jogosult a feladat futtatására a számítógépen. A feladatobjektum a $j változóban van tárolva.

A változóban lévő $j objektumot a rendszer elküldi a folyamatnak Select-Object. A Tulajdonság paraméter egy csillagot (*) ad meg a feladatobjektum összes tulajdonságának megjelenítéséhez.

5. példa: Szkript futtatása háttérfeladatként

Ebben a példában a helyi számítógépen futó szkript háttérfeladatként fut.

Start-Job -FilePath C:\Scripts\Sample.ps1

Start-JobA FilePath paraméterrel adja meg a helyi számítógépen tárolt szkriptfájlt.

6. példa: Folyamat lekérése háttérfeladat használatával

Ez a példa egy háttérfeladatot használ egy megadott folyamat név szerinti lekéréséhez.

Start-Job -Name PShellJob -ScriptBlock { Get-Process -Name PowerShell }

Start-JobA Név paraméterrel felhasználóbarát feladatnevet (PShellJob) adhat meg. A ScriptBlock paraméter a PowerShell nevű folyamatok lekérését adja megGet-Process.

7. példa: Adatok gyűjtése és mentése háttérfeladat használatával

Ez a példa elindít egy feladatot, amely nagy mennyiségű térképadatot gyűjt össze, majd menti egy .tif fájlba.

Start-Job -Name GetMappingFiles -InitializationScript {Import-Module -Name MapFunctions} -ScriptBlock {
   Get-Map -Name * | Set-Content -Path D:\Maps.tif }

Start-JobA Név paraméterrel felhasználóbarát feladatnevet (GetMappingFiles) adhat meg. Az InitializationScript paraméter futtat egy szkriptblokkot, amely importálja a MapFunctions modult . A ScriptBlock paraméter futGet-Map, és Set-Content az adatokat az Elérési út paraméter által megadott helyre menti.

8. példa: Bemenet átadása háttérfeladatnak

Ez a példa az $input automatikus változót használja egy bemeneti objektum feldolgozásához. A feladat kimenetének megtekintésére használható Receive-Job .

Start-Job -ScriptBlock { Get-Content -Path $input } -InputObject "C:\Servers.txt"
Receive-Job -Name Job45 -Keep

Server01
Server02
Server03
Server04

Start-JobA ScriptBlock paramétert használja az $input automatikus változó futtatásáhozGet-Content. A $input változó az InputObject paraméterből szerzi be az objektumokat. Receive-JobA Név paraméter használatával adja meg a feladatot, és kimeneteli az eredményeket. A Keep paraméter menti a feladat kimenetét, hogy újra megtekinthető legyen a PowerShell-munkamenet során.

9. példa: Háttérfeladat munkakönyvtárának beállítása

A WorkingDirectory lehetővé teszi egy másik könyvtár megadását egy feladathoz, amelyből szkripteket futtathat vagy fájlokat nyithat meg. Ebben a példában a háttérfeladat egy olyan munkakönyvtárat határoz meg, amely eltér az aktuális könyvtár helyétől.

PS C:\Test> Start-Job -WorkingDirectory C:\Test\Scripts { $PWD } | Receive-Job -AutoRemoveJob -Wait

Path
----
C:\Test\Scripts

A példa jelenlegi munkakönyvtára a .C:\Test Start-Job A WorkingDirectory paraméter használatával adja meg a feladat munkakönyvtárát. A ScriptBlock paraméter a feladat munkakönyvtárának megjelenítésére használja $PWD . Receive-Job megjeleníti a háttérfeladat kimenetét. Az AutoRemoveJob törli a feladatot, a Wait pedig az összes eredmény beérkezéséig letiltja a parancssort.

10. példa: Tömb megadása az Argumentumlista paraméter használatával

Ez a példa az Argumentumlista paramétert használja az argumentumok tömbjének megadásához. A tömb a folyamatnevek vesszővel tagolt listája.

Start-Job -ScriptBlock { Get-Process -Name $args } -ArgumentList powershell, pwsh, notepad

Id     Name      PSJobTypeName   State       HasMoreData     Location     Command
--     ----      -------------   -----       -----------     --------     -------
1      Job1      BackgroundJob   Running     True            localhost    Get-Process -Name $args

A Start-Job parancsmag a ScriptBlock paraméterrel futtat egy parancsot. Get-ProcessA Név paraméter használatával adja meg az automatikus változót$args. Az Argumentumlista paraméter átadja a folyamatnevek tömbjének.$args A powershell, pwsh és jegyzettömb folyamatnevek a helyi számítógépen futó folyamatok.

A feladat kimenetének megtekintéséhez használja a Receive-Job parancsmagot. Például: Receive-Job -Id 1.

11. példa: Feladat futtatása Windows PowerShell 5.1-ben

Ez a példa az 5.1 értékű PSVersion paramétert használja a feladat Windows PowerShell 5.1-munkamenetben való futtatásához.

$PSVersionTable.PSVersion

Major  Minor  Patch  PreReleaseLabel BuildLabel
-----  -----  -----  --------------- ----------
7      0      0      rc.1

$job = Start-Job -ScriptBlock { $PSVersionTable.PSVersion } -PSVersion 5.1
Receive-Job -Job $job

Major  Minor  Build  Revision
-----  -----  -----  --------
5      1      14393  3383

Paraméterek

-ArgumentList

A FilePath paraméter vagy a ScriptBlock paraméterrel megadott parancs argumentumainak vagy paraméterértékeinek tömbje.

Az argumentumokat egydimenziós tömbargumentumként kell átadni az Argumentumlistának . Például egy vesszővel tagolt lista. Az Argumentumlista működésével kapcsolatos további információkért lásd: about_Splatting.

Type:Object[]
Aliases:Args
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Authentication

Megadja a felhasználói hitelesítő adatok hitelesítésére használt mechanizmust.

A paraméter elfogadható értékei a következők:

  • Alapértelmezett
  • Alap
  • Credssp
  • Digest
  • Kerberos
  • Tárgyalni
  • NegotiateWithImplicitCredential

Az alapértelmezett érték az Alapértelmezett érték.

A CredSSP-hitelesítés csak a Windows Vista, a Windows Server 2008 és a Windows operációs rendszer újabb verzióiban érhető el.

A paraméter értékeivel kapcsolatos további információkért lásd : AuthenticationMechanism.

Figyelemfelhívás

A hitelesítő adatok biztonsági támogatási szolgáltatójának (CredSSP) hitelesítése, amelyben a felhasználó hitelesítő adatai átadva vannak egy hitelesítendő távoli számítógépnek, olyan parancsokhoz készült, amelyek több erőforráson is hitelesítést igényelnek, például távoli hálózati megosztáshoz való hozzáféréshez. Ez a mechanizmus növeli a távoli művelet biztonsági kockázatát. Ha a távoli számítógép biztonsága sérül, a neki átadott hitelesítő adatokkal szabályozható a hálózati munkamenet.

Type:AuthenticationMechanism
Accepted values:Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos
Position:Named
Default value:Default
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Credential

A művelet végrehajtásához engedéllyel rendelkező felhasználói fiókot ad meg. Ha a hitelesítőadat-paraméter nincs megadva, a parancs 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?.

Type:PSCredential
Position:Named
Default value:Current user
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DefinitionName

Megadja annak a feladatnak a definíciónevét, amelyet ez a parancsmag indít el. Ezzel a paraméterrel elindíthatja a definíciónevű egyéni feladattípusokat, például az ütemezett feladatokat.

Ha egy ütemezett feladat egy példányát indítja Start-Job el, a feladat azonnal elindul, függetlenül a feladat eseményindítóitól vagy a feladat beállításaitól. Az eredményül kapott feladatpéldány egy ütemezett feladat, de a rendszer nem menti a lemezre, mint az aktivált ütemezett feladatok. Az Argumentumlista paraméter Start-Job nem használható az ütemezett feladatban futó szkriptek paramétereinek értékeinek megadására.

Ezt a paramétert a PowerShell 3.0-ban vezettük be.

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-DefinitionPath

Megadja a parancsmag által elinduló feladat definíciójának elérési útját. Adja meg a definíció elérési útját. A DefinitionPath és a DefinitionName paraméterek értékeinek összefűzése a feladatdefiníció teljes elérési útja. Ezzel a paraméterrel olyan egyéni feladattípusokat indíthat el, amelyek definíciós útvonalsal rendelkeznek, például ütemezett feladatokat.

Ütemezett feladatok esetén a DefinitionPath paraméter értéke .$HOME\AppData\Local\Windows\PowerShell\ScheduledJob

Ezt a paramétert a PowerShell 3.0-ban vezettük be.

Type:String
Position:1
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-FilePath

Egy helyi szkriptet határoz meg, amely Start-Job háttérfeladatként fut. Adja meg a szkript elérési útját és fájlnevét, vagy használja a folyamatot egy parancsfájl elérési útjának Start-Jobelküldéséhez. A szkriptnek a helyi számítógépen vagy egy olyan mappában kell lennie, amelyhez a helyi számítógép hozzáférhet.

Ha ezt a paramétert használja, a PowerShell a megadott szkriptfájl tartalmát szkriptblokkmá alakítja, és háttérfeladatként futtatja a szkriptblokkot.

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-InitializationScript

A feladat indítása előtt futtatott parancsokat adja meg. Szkriptblokk létrehozásához csatolja a parancsokat kapcsos zárójelekbe ({}).

Ezzel a paraméterel előkészíti a munkamenetet, amelyben a feladat fut. Segítségével például függvényeket, beépülő modulokat és modulokat adhat hozzá a munkamenethez.

Type:ScriptBlock
Position:1
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

Megadja a parancs bemenetét. Adjon meg egy változót, amely tartalmazza az objektumokat, vagy írjon be egy parancsot vagy kifejezést, amely létrehozza az objektumokat.

A ScriptBlock paraméter értékében használja az automatikus változót $input a bemeneti objektumok megjelenítéséhez.

Type:PSObject
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-LiteralPath

Egy helyi szkriptet ad meg, amelyet ez a parancsmag háttérfeladatként futtat. Adja meg egy szkript elérési útját a helyi számítógépen.

Start-JobA LiteralPath paraméter értékét pontosan a beírt módon használja. A rendszer egyetlen karaktert sem értelmez helyettesítő karakterként. Ha az elérési út tartalmaz escape karaktereket, csatolja egy idézőjelek közé. Az idézőjelek azt mondják a PowerShellnek, hogy ne értelmezzen karaktereket feloldósorozatként.

Type:String
Aliases:PSPath, LP
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Name

Az új feladat rövid nevét adja meg. A névvel azonosíthatja a feladatot más feladatparancsmagok, például a Stop-Job parancsmagok számára.

Az alapértelmezett rövid név az Job#, ahol # az egyes feladatokhoz növekvő sorszám van megnövekedve.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-PSVersion

Megadja a Feladat futtatásához használni kívánt PowerShell-verziót. Ha a PSVersionértéke 5.1, a feladat Windows PowerShell 5.1-munkamenetben fut. Bármely más érték esetén a feladat a PowerShell aktuális verziójával fut.

Ez a paraméter a PowerShell 7-ben lett hozzáadva, és csak Windows rendszeren működik.

Type:Version
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-RunAs32

A PowerShell 7-től kezdve a RunAs32 paraméter nem működik a 64 bites PowerShellen (pwsh). Ha a RunAs32 a 64 bites PowerShellben van megadva, Start-Job a rendszer megszakítja a kivételhibát. Ha 32 bites PowerShell-folyamatotpwsh szeretne elindítani a RunAs32 használatával, telepítenie kell a 32 bites PowerShellt.

A 32 bites PowerShellben a RunAs32 kényszeríti a feladatot egy 32 bites folyamat futtatására, még egy 64 bites operációs rendszeren is.

A Windows 7 és a Windows Server 2008 R2 64 bites verzióiban, ha a Start-Job parancs tartalmazza a RunAs32 paramétert, nem használhatja a Hitelesítő paramétert egy másik felhasználó hitelesítő adatainak megadásához.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ScriptBlock

Megadja a háttérfeladatban futtatandó parancsokat. Szkriptblokk létrehozásához csatolja a parancsokat kapcsos zárójelekbe ({}). $input Az automatikus változóval érheti el az InputObject paraméter értékét. Ez a paraméter kötelező.

Type:ScriptBlock
Aliases:Command
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Type

A kezdőfeladatok Start-Jobegyéni típusát adja meg. Adjon meg egy egyéni feladattípusnevet, például az ütemezett feladatokHOZ tartozó PSScheduledJob vagy a munkafolyamat-feladatokHOZ tartozó PSWorkflowJob nevet. Ez a paraméter normál háttérfeladatokra nem érvényes.

Ezt a paramétert a PowerShell 3.0-ban vezettük be.

Type:String
Position:2
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WorkingDirectory

A háttérfeladat kezdeti munkakönyvtárát adja meg. Ha a paraméter nincs megadva, a feladat az alapértelmezett helyről fut. Az alapértelmezett hely annak a hívónak az aktuális munkakönyvtára, amely elindította a feladatot.

Ez a paraméter a PowerShell 7-ben lett bevezetve.

Type:String
Position:Named
Default value:$HOME on Unix (macOS, Linux) and $HOME\Documents on Windows
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Bevitelek

String

A Név tulajdonsággal rendelkező objektumot a Parancsmag Név paraméteréhez csövezheti. Például egy FileInfo-objektumot is becsúszthat a rendszerbőlGet-ChildItem.

Kimenetek

System.Management.Automation.PSRemotingJob

Ez a parancsmag egy PSRemotingJob objektumot ad vissza, amely az elindított feladatot jelöli.

Jegyzetek

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

  • Minden platform:
    • sajb

A háttérben Start-Job való futtatáshoz fut a saját munkamenetében az aktuális munkamenetben. Ha a Invoke-Command parancsmaggal futtat egy Start-Job parancsot egy távoli számítógépen futó munkamenetben, Start-Job akkor a távoli munkamenet egy munkamenetében fut.