about_Scheduled_Jobs_Troubleshooting
Rövid leírás
Az ütemezett feladatok problémáinak megoldása
Hosszú leírás
Ez a dokumentum a PowerShell ütemezett feladatfunkcióinak használatakor előforduló problémák némelyikét ismerteti, és megoldásokat javasol ezekre a problémákra.
A PowerShell ütemezett feladatainak használata előtt tekintse meg a témakörök about_Scheduled_Jobs és a kapcsolódó ütemezett feladatokat.
További információ a PSScheduledJob modulban található parancsmagokról: PSScheduledJob.
Nem található a feladat eredménye
Alapszintű módszer a feladatok eredményeinek lekérésére a PowerShellben
Amikor egy ütemezett feladat fut, létrehozza az ütemezett feladat egy példányát. Az ütemezett feladatpéldányok eredményeinek megtekintéséhez, kezeléséhez és lekéréséhez használja a Feladat parancsmagokat.
Feljegyzés
Ha a Feladat parancsmagokat ütemezett feladatok példányaihoz szeretné használni, a PSScheduledJob modult importálni kell a munkamenetbe. A PSScheduledJob modul importálásához írja be Import-Module PSScheduledJob
vagy használja az ütemezett feladat parancsmagot, például Get-ScheduledJob
.
Egy ütemezett feladat összes példányának listájának lekéréséhez használja a Get-Job
parancsmagot.
Import-Module PSScheduledJob
Get-Job ProcessJob
Id Name PSJobTypeName State HasMoreData Location
-- ---- ------------- ----- ----------- --------
43 ProcessJob PSScheduledJob Completed False localhost
44 ProcessJob PSScheduledJob Completed False localhost
45 ProcessJob PSScheduledJob Completed False localhost
46 ProcessJob PSScheduledJob Completed False localhost
47 ProcessJob PSScheduledJob Completed False localhost
48 ProcessJob PSScheduledJob Completed False localhost
49 ProcessJob PSScheduledJob Completed False localhost
50 ProcessJob PSScheduledJob Completed False localhost
A Get-Job
parancsmag ProcessJob-objektumokat küld a folyamatba. A Format-Table
parancsmag megjeleníti egy ütemezett feladatpéldány nevét, azonosítóját és PSBeginTime-tulajdonságait egy táblában.
Get-Job ProcessJob | Format-Table -Property Name, ID, PSBeginTime -Auto
Name Id PSBeginTime
---- -- ---------
ProcessJob 43 11/2/2011 3:00:02 AM
ProcessJob 44 11/3/2011 3:00:02 AM
ProcessJob 45 11/4/2011 3:00:02 AM
ProcessJob 46 11/5/2011 3:00:02 AM
ProcessJob 47 11/6/2011 3:00:02 AM
ProcessJob 48 11/7/2011 12:00:01 AM
ProcessJob 49 11/7/2011 3:00:02 AM
ProcessJob 50 11/8/2011 3:00:02 AM
Egy ütemezett feladat egy példányának eredményeinek lekéréséhez használja a Receive-Job
parancsmagot. Az alábbi parancs lekéri a ProcessJob legújabb példányának eredményeit (ID = 50).
Receive-Job -ID 50
Alapszintű módszer a feladateredmények lemezen való kereséséhez
Az ütemezett feladatok kezeléséhez használja a feladat parancsmagjait, például Get-Job
és Receive-Job
.
Ha Get-Job
nem kapja meg a feladatpéldányt, vagy Receive-Job
nem kapja meg a feladat eredményeit, megkeresheti a feladat végrehajtási előzményfájljait a lemezen.
A végrehajtási előzmények az összes aktivált feladatpéldány rekordját tartalmazzák.
Ellenőrizze, hogy van-e időbélyeg által elnevezett könyvtár a címtárban egy ütemezett feladathoz az alábbi elérési úton:
$HOME\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJob\<ScheduledJobName>\Output
Példa:
C:\Users<UserName>\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJob\<ScheduledJobName>\Output
A parancsmag például Get-ChildItem
lekéri a ProcessJob ütemezett feladat lemezen végzett végrehajtási előzményeit.
$Path = '$HOME\AppData\Local\Microsoft\Windows\PowerShell'
$Path += '\ScheduledJobs\ProcessJob\Output'
Get-ChildItem $Path
Directory: C:\Users\User01\AppData\Local\Microsoft\Windows\PowerShell
\ScheduledJobs\ProcessJob\Output
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 11/2/2011 3:00 AM 20111102-030002-260
d---- 11/3/2011 3:00 AM 20111103-030002-277
d---- 11/4/2011 3:00 AM 20111104-030002-209
d---- 11/5/2011 3:00 AM 20111105-030002-251
d---- 11/6/2011 3:00 AM 20111106-030002-174
d---- 11/7/2011 12:00 AM 20111107-000001-914
d---- 11/7/2011 3:00 AM 20111107-030002-376
Minden időbélyeg által elnevezett könyvtár egy feladatpéldányt jelöl. Az egyes feladatpéldányok eredményeit egy Results.xml fájlba menti a rendszer az időbélyeg által elnevezett könyvtárban.
Az alábbi parancs például lekéri a Results.xml fájlokat a ProcessJob ütemezett feladat minden mentett példányához. Ha a Results.xml fájl hiányzik, a PowerShell nem tudja visszaadni vagy megjeleníteni a feladat eredményeit.
$Path = '$HOME\AppData\Local\Microsoft\Windows\PowerShell'
$Path += '\ScheduledJobs\ProcessJob\Output\*\Results.xml'
Get-ChildItem $Path
Directory: C:\Users\User01\Appdata\Local\Microsoft\Windows\PowerShell
\ScheduledJobs\ProcessJob\Output
Előfordulhat, hogy a feladatparancsmag nem tudja lekérni az ütemezett feladatpéldányokat vagy azok eredményeit, mert a PSScheduledJob modul nincs importálva a munkamenetbe.
Feljegyzés
Mielőtt feladatparancsmagot használ az ütemezett feladatpéldányokon, ellenőrizze, hogy a PSScheduledJob modul szerepel-e a munkamenetben. A PSScheduledJob modul nélkül a feladatparancsmagok nem tudják lekérni az ütemezett feladatpéldányokat vagy azok eredményeit.
A PSScheduledJob modul importálása:
Import-Module PSScheduledJob
Lehet, hogy a Fogadófeladat parancsmag már visszaadta az eredményeket
Ha Receive-Job
nem ad vissza feladatpéldány-eredményeket, annak az lehet az oka, hogy az adott feladatpéldányhoz futtatott egy Receive-Job
parancsot az aktuális munkamenetben a Keep paraméter nélkül.
Ha a Keep paraméter nélkül használjaReceive-Job
, a feladat eredményeit adja vissza, Receive-Job
és a feladatpéldány HasMoreData tulajdonságát False értékre állítja. A Hamis érték azt jelenti, hogy Receive-Job
visszaadta a feladat eredményeit, és a példánynak nincs több eredmény. Ez a beállítás normál háttérfeladatokhoz megfelelő, de a lemezre mentett ütemezett feladatok esetében nem.
A feladatpéldány eredményeinek újbóli lekéréséhez kezdjen el egy új PowerShell-munkamenetet gépeléssel PowerShell
. Importálja a PSScheduledJob modult, és próbálkozzon újra a Receive-Job
paranccsal.
Receive-Job -ID 50
#No results
PowerShell.exe
Windows PowerShell
Copyright (C) 2012 Microsoft Corporation. All rights reserved.
Import-Module PSScheduledJob
Receive-Job -ID 50
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
1213 33 12348 21676 88 25.71 1608 CcmExec
29 4 1168 2920 43 0.02 748 conhost
46 6 2208 4612 45 0.03 1640 conhost
A Keep paraméter használata az eredmények többszöri lekéréséhez egy munkamenetben
Ha egy feladatpéldány eredményét többször szeretné lekérni egy munkamenetben, használja a Receive-Job
parancsmag Keep paraméterét.
Import-Module PSScheduledJob
Receive-Job -ID 50 -Keep
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
1213 33 12348 21676 88 25.71 1608 CcmExec
29 4 1168 2920 43 0.02 748 conhost
46 6 2208 4612 45 0.03 1640 conhost
Receive-Job -ID 50 -Keep
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
1213 33 12348 21676 88 25.71 1608 CcmExec
29 4 1168 2920 43 0.02 748 conhost
46 6 2208 4612 45 0.03 1640 conhost
Előfordulhat, hogy az ütemezett feladat sérült
Ha egy ütemezett feladat megsérül, a PowerShell törli a sérült ütemezett feladatot és annak eredményeit. Sérült ütemezett feladat eredményei nem állíthatók helyre.
Annak megállapításához, hogy egy ütemezett feladat még létezik-e, használja a Get-ScheduledJob
parancsmagot.
Get-ScheduledJob
Az eredmények száma meghaladhatta a ExecutionHistoryLength értéket
Az ütemezett feladatok ExecutionHistoryLength tulajdonsága határozza meg, hogy hány feladatpéldányt és azok eredményeit menti a rendszer a lemezre. Az alapértelmezett érték 32. Ha egy ütemezett feladat példányainak száma meghaladja ezt az értéket, a PowerShell törli a legrégebbi feladatpéldányt, hogy helyet biztosítsunk minden új feladatpéldánynak.
Egy ütemezett feladat ExecutionHistoryLength tulajdonságának értékének lekéréséhez használja a következő parancsformátumot:
(Get-ScheduledJob <JobName>).ExecutionHistoryLength
A következő parancs például lekéri a ProcessJob ütemezett feladat ExecutionHistoryLength tulajdonságának értékét.
(Get-ScheduledJob ProcessJob).ExecutionHistoryLength
A ExecutionHistoryLength tulajdonság értékének beállításához vagy módosításához használja a parancsmagok MaxResultCount paraméterét Set-ScheduledJob
Register-ScheduledJob
.
Az alábbi parancs a ExecutionHistoryLength tulajdonság értékét 50-re növeli.
Get-ScheduledJob ProcessJob | Set-ScheduledJob -MaxResultCount 50
Előfordulhat, hogy a feladatpéldány eredményei törölve lettek
A parancsmag ClearExecutionHistory paramétere Set-ScheduledJob
törli egy feladat végrehajtási előzményeit. Ezzel a funkcióval szabadíthat fel lemezterületet, vagy törölheti azokat az eredményeket, amelyek nem szükségesek, vagy amelyeket már felhasználtak, elemeztek vagy más helyre mentettek.
Egy ütemezett feladat végrehajtási előzményeinek törléséhez használja az ütemezett feladat ClearExecutionHistory paraméterét.
Az alábbi parancs törli a ProcessJob ütemezett feladat végrehajtási előzményeit.
Get-ScheduledJob ProcessJob | Set-ScheduledJob -ClearExecutionHistory
Emellett a parancsmag törli a Remove-Job
feladat eredményeit. Ütemezett Remove-Job
feladat törlésekor a rendszer törli a feladat összes példányát a lemezen, beleértve a végrehajtási előzményeket és az összes feladateredményt.
A Start-Job parancsmaggal indított feladatok nem kerülnek lemezre
Ha ütemezett feladat indítására használja Start-Job
a feladat-eseményindító helyett egy Start-Job
szabványos háttérfeladatot. A háttérfeladat és eredményei nincsenek tárolva a feladat végrehajtási előzményeiben a lemezen.
A parancsmaggal Get-Job
lekérheti a feladatot és a Receive-Job
parancsmagot a feladat eredményeinek lekéréséhez, de az eredmények csak addig érhetők el, amíg meg nem kapja őket, kivéve, ha a Receive-Job
parancsmag Keep paraméterét használja.
Emellett a háttérfeladatok és eredményeik munkamenet-specifikusak; csak abban a munkamenetben léteznek, amelyben létrehozták őket. Ha törli a feladatot Remove-Job
, zárja be a munkamenetet vagy zárja be a PowerShellt, a feladatpéldány és annak eredményei törlődnek.
Az ütemezett feladat nem fut
Az ütemezett feladatok nem futnak automatikusan, ha a feladat eseményindítói vagy az ütemezett feladat le van tiltva.
Az ütemezett feladat lekéréséhez használja a Get-ScheduledJob
parancsmagot. Ellenőrizze, hogy az ütemezett feladat Engedélyezett tulajdonságának értéke Igaz-e.
Get-ScheduledJob ProcessJob
Id Name Triggers Command Enabled
-- ---- -------- ------- -------
4 ProcessJob {1, 2} Get-Process True
(Get-ScheduledJob ProcessJob).Enabled
True
Get-JobTrigger
A parancsmaggal lekérheti az ütemezett feladat feladatindítóit.
Ellenőrizze, hogy a feladat-eseményindító Engedélyezett tulajdonságának értéke Igaz-e.
Get-ScheduledJob ProcessJob | Get-JobTrigger
Id Frequency Time DaysOfWeek Enabled
-- --------- ---- ---------- -------
1 Weekly 11/7/2011 5:00:00 AM {Monday, Thursday} True
2 Daily 11/7/2011 3:00:00 PM True
Get-ScheduledJob ProcessJob|Get-JobTrigger|Format-Table ID, Enabled -Auto
Id Enabled
-- -------
1 True
2 True
Az ütemezett feladatok nem futnak automatikusan, ha a feladat-eseményindítók érvénytelenek
Egy feladat-eseményindító például megadhat egy múltbeli dátumot, vagy egy olyan dátumot, amely nem fordul elő, például a hónap 5. hétfője.
Az ütemezett feladatok nem futnak automatikusan, ha a feladat-eseményindító feltételei vagy a feladat beállításai nem teljesülnek.
Például egy ütemezett feladat, amely csak akkor fut, ha egy adott felhasználó bejelentkezik a számítógépre, nem fog futni, ha a felhasználó nem jelentkezik be, vagy csak távolról csatlakozik.
Vizsgálja meg az ütemezett feladat beállításait, és győződjön meg arról, hogy azok teljesülnek. Előfordulhat például, hogy egy ütemezett feladat, amely megköveteli, hogy a számítógép tétlen legyen, vagy hálózati kapcsolatot igényel, vagy hosszú IdleDuration vagy rövid IdleTimeout állapotú legyen, előfordulhat, hogy soha nem fut.
Get-ScheduledJobOption
A parancsmaggal megvizsgálhatja a feladatbeállításokat és azok értékeit.
Get-ScheduledJobOption -Name ProcessJob
StartIfOnBatteries : False
StopIfGoingOnBatteries : True
WakeToRun : True
StartIfNotIdle : True
StopIfGoingOffIdle : False
RestartOnIdleResume : False
IdleDuration : 00:10:00
IdleTimeout : 01:00:00
ShowInTaskScheduler : True
RunElevated : False
RunWithoutNetwork : True
DoNotAllowDemandStart : False
MultipleInstancePolicy : IgnoreNew
JobDefinition : Microsoft.PowerShell.ScheduledJob.ScheduledJobDefinition
Az ütemezett feladat beállításainak leírását a New-ScheduledJobOption című témakörben talál.
Előfordulhat, hogy az ütemezett feladatpéldány meghiúsult
Ha egy ütemezett feladatparancs meghiúsul, a PowerShell azonnal jelenti azt egy hibaüzenet létrehozásával. Ha azonban a feladat meghiúsul, amikor a Feladatütemező megpróbálja futtatni, a hiba nem érhető el a PowerShell számára.
A feladathibák észleléséhez és javításához használja az alábbi módszereket:
Ellenőrizze a Feladatütemező eseménynaplójában a hibákat. A napló ellenőrzéséhez használja a Eseménynapló vagy egy PowerShell-parancsot, például a következőket:
Get-WinEvent -LogName Microsoft-Windows-TaskScheduler/Operational |
Where {$_.Message -like "fail"}
Ellenőrizze a feladatrekordot a Feladatütemezőben. A PowerShell ütemezett feladatai a következő Feladatütemezési mappában vannak tárolva:
Task Scheduler Library\Microsoft\Windows\PowerShell\ScheduledJobs
Előfordulhat, hogy az ütemezett feladat nem fut, mert nincs megfelelő engedély
Az ütemezett feladatok annak a felhasználónak az engedélyeivel futnak, aki létrehozta a feladatot, vagy annak a felhasználónak az engedélyeivel, akit a Hitelesítőadat paraméter ad Set-ScheduledJob
meg a Register-ScheduledJob
parancsban.
Ha a felhasználó nem rendelkezik engedéllyel a parancsok vagy szkriptek futtatására, a feladat meghiúsul.
Nem lehet lekérni az ütemezett feladatot, vagy sérült az ütemezett feladat
Ritkán az ütemezett feladatok megsérülhetnek, vagy olyan belső ellentmondásokat tartalmazhatnak, amelyek nem oldhatók fel. Ez általában akkor fordul elő, ha az ütemezett feladat XML-fájljait manuálisan szerkesztik, ami érvénytelen XML-t eredményez.
Ha egy ütemezett feladat sérült, a PowerShell megpróbálja törölni az ütemezett feladatot, annak végrehajtási előzményeit és eredményeit a lemezről.
Ha nem tudja eltávolítani az ütemezett feladatot, a parancsmag minden futtatásakor Get-ScheduledJob
sérült feladat hibaüzenet jelenik meg.
Sérült ütemezett feladat eltávolításához használja az alábbi módszerek egyikét:
Törölje az <ScheduledJobName>
ütemezett feladat könyvtárát. Ne törölje az Ütemezett feladat könyvtárat.
A könyvtár helye:
$env:UserProfile\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs<ScheduledJobName>
Példa:
C:\Users<UserName>\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs<ScheduledJobName>.
Az ütemezett feladat törléséhez használja a Feladatütemezőt. A PowerShell ütemezett tevékenységei a következő Feladatütemező elérési úton jelennek meg:
Task Scheduler Library\Microsoft\Windows\PowerShell\ScheduledJobs<ScheduledJobName>
A feladatparancsmagok nem találják meg következetesen az ütemezett feladatokat
Ha a PSScheduledJob modul nem szerepel az aktuális munkamenetben, a feladatparancsmagok nem tudnak ütemezett feladatokat lekérni, elindítani vagy lekérni az eredményeket.
A PSScheduledJob modul importálásához írja be Import-Module PSScheduledJob
vagy futtassa vagy kérje le a modulban található parancsmagot, például a Get-ScheduledJob
parancsmagot.
A PowerShell 3.0-tól kezdve a modulok automatikusan importálódnak, amikor a modul bármely parancsmagja megjelenik vagy használatban van.
Ha a PSScheduledJob modul nincs az aktuális munkamenetben, a következő parancsütemezés lehetséges.
Get-Job ProcessJob
Get-Job : The command cannot find the job because the job name
ProcessJob was not found.
Verify the value of the Name parameter, and then try the command again.
+ CategoryInfo : ObjectNotFound: (ProcessJob:String) [Get-Job],
PSArgumentException
+ FullyQualifiedErrorId : JobWithSpecifiedNameNotFound,Microsoft.PowerShell.
Commands.GetJobCommand
Get-Job
Get-ScheduledJob ProcessJob
Id Name Triggers Command Enabled
-- ---- -------- ------- -------
4 ProcessJob {1} Get-Process True
Get-Job ProcessJob
Id Name PSJobTypeName State HasMoreData Location
-- ---- ------------- ----- ----------- --------
43 ProcessJob PSScheduledJob Completed True localhost
44 ProcessJob PSScheduledJob Completed True localhost
45 ProcessJob PSScheduledJob Completed True localhost
46 ProcessJob PSScheduledJob Completed True localhost
47 ProcessJob PSScheduledJob Completed True localhost
48 ProcessJob PSScheduledJob Completed True localhost
49 ProcessJob PSScheduledJob Completed True localhost
50 ProcessJob PSScheduledJob Completed True localhost
Ez a viselkedés azért fordul elő, mert a Get-ScheduledJob
parancs automatikusan importálja a PSScheduledJob modult, majd futtatja a parancsot.
Lásd még
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: