Start-Job
Elindít egy PowerShell-háttérfeladatot.
Syntax
Start-Job
[-Name <String>]
[-ScriptBlock] <ScriptBlock>
[-Credential <PSCredential>]
[-Authentication <AuthenticationMechanism>]
[[-InitializationScript] <ScriptBlock>]
[-RunAs32]
[-PSVersion <Version>]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]
Start-Job
[-DefinitionName] <String>
[[-DefinitionPath] <String>]
[[-Type] <String>]
[<CommonParameters>]
Start-Job
[-Name <String>]
[-Credential <PSCredential>]
[-FilePath] <String>
[-Authentication <AuthenticationMechanism>]
[[-InitializationScript] <ScriptBlock>]
[-RunAs32]
[-PSVersion <Version>]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]
Start-Job
[-Name <String>]
[-Credential <PSCredential>]
-LiteralPath <String>
[-Authentication <AuthenticationMechanism>]
[[-InitializationScript] <ScriptBlock>]
[-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 feladatok alapértelmezett munkakönyvtára rögzített. A Windows alapértelmezett értéke, $HOME\Documents
Linux vagy macOS rendszeren pedig az alapértelmezett $HOME
érték. A háttérfeladatban futó szkriptkódnak szükség szerint kezelnie kell a munkakönyvtárat.
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 powershell }
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
1 Job1 BackgroundJob Running True localhost Get-Process -Name powershell
Start-Job
A 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. powershell
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: 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-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 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.
3. 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ő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.
4. 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.
5. 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 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
.
6. 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 } -RunAs32
Start-Job
A 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. A RunAs32 paraméter 32 bitesként futtatja a folyamatot, még egy 64 bites operációs rendszeren is.
7. 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-Job
A 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-Job
A 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.
8. 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 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
.
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. További információ: about_Scheduled_Jobs.
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-Job
elkü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-Job
A 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 |
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 verziót. Start-Job
A feladatot a PowerShell verziójával futtatja. A paraméter elfogadható értékei a következők: 2.0
és 3.0
.
Ezt a paramétert a PowerShell 3.0-ban vezettük be.
Type: | Version |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-RunAs32
Azt jelzi, hogy Start-Job
a feladatot egy 32 bites folyamatban futtatja. A RunAs32 egy 32 bites folyamat futtatására kényszeríti a feladatot, 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-Job
egyé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 |
Bevitelek
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 Windows PowerShell a következő aliasokat Start-Job
tartalmazza:
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.