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 egy parancsot. Háttérfeladat indításakor a feladatobjektum azonnal visszatér, még akkor is, ha a feladat befejezése 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ődött, a Receive-Job parancsmaggal lekérheti a feladat eredményeit. A háttérfeladatokkal kapcsolatos további információkért lásd: about_Jobs.

Háttérfeladat távoli számítógépen való futtatásához használja a sok parancsmagon elérhető AsJob paramétert, vagy a Invoke-Command parancsmaggal 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 egyéni feladattípusok, például ütemezett feladatok példányai indíthatók el. A feladatok egyéni típusokkal való elindításával kapcsolatos Start-Job további információkért tekintse meg a feladattípus-funkció súgódokumentumait.

A PowerShell 6.0-tól kezdve a feladatokat az ampers és (&) háttér operátorral indíthatja 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 . Az ampers és (&) használatával kapcsolatos további információkért lásd: 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.

Megjegyzés

A folyamaton kívüli háttérfeladatok Start-Job létrehozása nem támogatott abban az esetben, ha a PowerShell más alkalmazásokban, például a PowerShell-Azure Functions van üzemeltetve.

Ez azért van így, mert Start-Job attól függ, hogy a pwsh végrehajtható fájl elérhető-e $PSHOME egy 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 kézbesítve.

A helyettesítő ebben a forgatókönyvben a ThreadJob modulból származikStart-ThreadJob.

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-Job a ScriptBlock paramétert használja háttérfeladatként való futtatáshoz Get-Process . A Name paraméter a PowerShell-folyamatok megkereséséhez adja meg a következőt: pwsh. A feladat adatai megjelennek, és a PowerShell visszatér egy kérdéshez, miközben 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 ampers és (&) 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 Name 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, miközben 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 Invoke-Command

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ának változónevével lesz végrehajtva.

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

A rendszer létrehoz és tárol egy feladatot Invoke-Command a $jobWRM változóban. Invoke-Command a 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 rövid nevet ad 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-Job A ScriptBlock paraméterrel futtat egy parancsot, amely megadja Get-WinEvent a rendszernapló lekérését. A Hitelesítő adatok paraméter egy tartományi felhasználói fiókot ad 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ő objektumot a $j 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-Job A 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-Job A Name paraméterrel felhasználóbarát feladatnevet ( PShellJob) ad meg. A ScriptBlock paraméter a PowerShell nevű folyamatok lekérését határozza 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ű leképezési adatot gyűjt, majd menti azokat egy .tif fájlba.

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

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

8. példa: Bemenet továbbítása háttérfeladatnak

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

Start-Job -ScriptBlock { Get-Content $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óval való futtatáshozGet-Content. A $input változó az InputObject paraméterből szerzi be az objektumokat. Receive-Job A Name 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 az aktuális könyvtár helyétől eltérő munkakönyvtárat határoz meg.

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, és a Várakozás letiltja a parancssort, amíg az összes eredmény meg nem érkezik.

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-Process a Name paramétert használja az automatikus változó $argsmegadásához. Az ArgumentList paraméter átadja a folyamatnevek tömböt a következőnek: $args. A powershell, pwsh és jegyzettömb nevű folyamat 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ékkel rendelkező 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 { $PSVersionTable.PSVersion } -PSVersion 5.1
Receive-Job $job

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

Paraméterek

-ArgumentList

Argumentumok vagy paraméterértékek tömbjének megadása a FilePath paraméter vagy a ScriptBlock paraméterrel megadott parancs számára.

Az argumentumokat egydimenziós tömbargumentumként kell átadni az ArgumentListnek . Például egy vesszővel tagolt lista. Az ArgumentList 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
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
  • Alapszintű
  • Credssp
  • Digest
  • Kerberos
  • Negotiate
  • NegotiateWithImplicitCredential

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

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 egy 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
Accept pipeline input:False
Accept wildcard characters:False

-Credential

Olyan felhasználói fiókot ad meg, amely jogosult a művelet végrehajtására. 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 adjon meg egy, a Get-Credential parancsmag által létrehozott PSCredential objektumot. 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ót pedig SecureStringként tárolja a rendszer.

Megjegyzés

További információ a SecureString adatvédelméről: How secure is SecureString?.

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

-DefinitionName

Megadja annak a feladatnak a definíciójá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.

Amikor 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étere Start-Job nem használható az ütemezett feladatban futó szkriptek paramétereinek értékeinek megadására.

Ez a paraméter a PowerShell 3.0-ban lett bevezetve.

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

-DefinitionPath

A parancsmag által elindított feladat definíciójának elérési útját adja meg. 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 elérési útjuk van, például ütemezett feladatok.

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

Ez a paraméter a PowerShell 3.0-ban lett bevezetve.

Type:String
Position:1
Default value:None
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 a parancsprogram elérési útjának elküldéséhez.Start-Job 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
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 a parancsokat kapcsos zárójelekbe ({}) kell tenni.

Ezzel a paraméterel készítse elő azt 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
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 $input automatikus változót a bemeneti objektumok megjelenítéséhez.

Type:PSObject
Position:Named
Default value:None
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-Job A LiterálPath paraméter értékét pontosan a beírt értéknek megfelelően használja. A rendszer egyetlen karaktert sem értelmez helyettesítő karakterként. Ha az elérési út tartalmaz feloldókaraktereket, tegye idézőjelek közé. Az egyszeres idézőjelek azt jelzik, hogy a PowerShell nem értelmez feloldósorozatként egyetlen karaktert sem.

Type:String
Aliases:PSPath, LP
Position:Named
Default value:None
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 feladatparancsmagokkal, például a Stop-Job parancsmaggal.

Az alapértelmezett rövid név a Job#, ahol # egy sorszám, amely az egyes feladatokhoz van növelve.

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

-PSVersion

A Feladat futtatásához használandó PowerShell-verziót adja meg. Ha a PSVersion értéke 5.1 A feladat egy 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
Accept pipeline input:False
Accept wildcard characters:False

-RunAs32

A PowerShell 7-től kezdődően 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ító kivételhibát jelez. Ha 32 bites PowerShell-folyamatot (pwsh) 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 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, a Hitelesítőadat paraméter nem használható egy másik felhasználó hitelesítő adatainak megadására.

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

-ScriptBlock

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

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

-Type

A által Start-Jobindított feladatok egyéni típusát adja meg. Adjon meg egy egyéni feladattípusnevet, például PSScheduledJob az ütemezett feladatokhoz vagy PSWorkflowJob a munkafolyamat-feladatokhoz. Ez a paraméter nem érvényes a szabványos háttérfeladatokhoz.

Ez a paraméter a PowerShell 3.0-ban lett bevezetve.

Type:String
Position:2
Default value:None
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
Accept pipeline input:False
Accept wildcard characters:False

Bevitelek

String

A folyamattal elküldhet egy Name tulajdonsággal rendelkező objektumot a Name paraméternek. Például egy FileInfo-objektumot a-ról Get-ChildItem a-ra lehet folyamatba folyamatba.Start-Job

Kimenetek

System.Management.Automation.PSRemotingJob

Start-Job Egy PSRemotingJob objektumot ad vissza, amely az elindított feladatot jelöli.

Jegyzetek

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 a távoli munkamenetben fut.