about_Scheduled_Jobs_Advanced
Krótki opis
Objaśnia zaawansowane tematy zaplanowanego zadania, w tym strukturę plików, która ujmuje zaplanowane zadania.
Długi opis
Aby uzyskać więcej informacji na temat poleceń cmdlet zawartych w module PSScheduledJob, zobacz PSScheduledJob.
Zaplanowane katalogi i pliki zadań
Zaplanowane zadania programu PowerShell to zadania programu PowerShell i zadania harmonogramu zadań. Każde zaplanowane zadanie jest rejestrowane w harmonogramie zadań i zapisywane na dysku w formacie XML serializacji programu Microsoft .NET Framework.
Podczas tworzenia zaplanowanego zadania program PowerShell tworzy katalog zaplanowanego zadania w $HOME\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs
katalogu na komputerze lokalnym. Nazwa katalogu jest taka sama jak nazwa zadania.
Poniżej znajduje się przykładowy katalog ScheduledJobs .
Get-ChildItem $HOME\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs
Directory: C:\Users\User01\AppData\Local
\Microsoft\Windows\PowerShell\ScheduledJobs
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 9/29/2011 10:03 AM ArchiveProjects
d---- 9/30/2011 1:18 PM Inventory
d---- 10/20/2011 9:15 AM Backup-Scripts
d---- 11/7/2011 10:40 AM ProcessJob
d---- 11/2/2011 10:25 AM SecureJob
d---- 9/27/2011 1:29 PM Test-HelpFiles
d---- 9/26/2011 4:22 PM DeployPackage
Każde zaplanowane zadanie ma własny katalog. Katalog zawiera plik XML zaplanowanego zadania i podkatalog Dane wyjściowe .
$Path = "$HOME\AppData\Local\Microsoft\Windows\PowerShell"
$Path += "\ScheduledJobs\ProcessJob"
Get-ChildItem $Path
Directory: C:\Users\User01\AppData\Local\Microsoft\Windows\PowerShell
\ScheduledJobs\ProcessJob
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 11/1/2011 3:00 PM Output
-a--- 11/1/2011 3:43 PM 7281 ScheduledJobDefinition.xml
Katalog Output dla zaplanowanego zadania zawiera jego historię wykonywania. Za każdym razem, gdy wyzwalacz zadania uruchamia zaplanowane zadanie, program PowerShell tworzy katalog o nazwie sygnatury czasowej w katalogu wyjściowym. Katalog znacznika czasu zawiera wyniki zadania w pliku Results.xml i stan zadania w pliku Status.xml .
Następujące polecenie pokazuje katalogi historii wykonywania dla zaplanowanego zadania ProcesuJob .
$Path = "$HOME\AppData\Local\Microsoft"
$Path += "\Windows\PowerShell\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
$Path = "$HOME\AppData\Local\Microsoft\Windows\PowerShell\"
$Path += "ScheduledJobs\ProcessJob\Output\20111102-030002-260"
Get-ChildItem $Path
Directory: C:\Users\User01\AppData\Local\Microsoft\Windows\PowerShell
\ScheduledJobs\ProcessJob\Output\20111102-030002-260
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 11/2/2011 3:00 AM 581106 Results.xml
-a--- 11/2/2011 3:00 AM 9451 Status.xml
Możesz otworzyć i zbadać ScheduledJobDefinition.xml, Results.xml i pliki Status.xml lub użyć Select-XML
polecenia cmdlet , aby przeanalizować pliki.
Ostrzeżenie
Nie edytuj plików XML. Jeśli dowolny plik XML zawiera nieprawidłowy kod XML, program PowerShell usuwa zaplanowane zadanie i jego historię wykonywania, w tym wyniki zadania.
Natychmiastowe uruchamianie zaplanowanego zadania
Zaplanowane zadanie można uruchomić natychmiast na jeden z dwóch sposobów:
- Uruchom polecenie cmdlet ,
Start-Job
aby uruchomić dowolne zaplanowane zadanie. - Dodaj parametr RunNow do polecenia
Register-ScheduledJob
, aby uruchomić zadanie natychmiast po uruchomieniu polecenia.
Zadania uruchamiane przy użyciu Start-Job
polecenia cmdlet to standardowe zadania w tle programu PowerShell, a nie wystąpienia zaplanowanego zadania. Podobnie jak wszystkie zadania w tle, te zadania są uruchamiane natychmiast, nie podlegają opcjom zadań ani wyzwalaczom zadań. Dane wyjściowe zadania nie są zapisywane w katalogu Output katalogu zaplanowanego zadania.
Następujące polecenie używa parametru Start-Job
DefinitionName polecenia cmdlet, aby uruchomić zaplanowane zadanie ProcesuJob.
Start-Job -DefinitionName ProcessJob
Aby zarządzać zadaniem i pobierać wyniki zadania, użyj poleceń cmdlet zadania. Aby uzyskać więcej informacji na temat poleceń cmdlet zadania, zobacz about_Jobs.
Uwaga
Aby użyć poleceń cmdlet zadania w wystąpieniach zaplanowanych zadań, moduł PSScheduledJob musi zostać zaimportowany do sesji. Aby zaimportować moduł PSScheduledJob , wpisz Import-Module PSScheduledJob
lub użyj dowolnego zaplanowanego polecenia cmdlet zadania, takiego jak Get-ScheduledJob
.
Zmienianie nazwy zaplanowanego zadania
Aby zmienić nazwę zaplanowanego zadania, użyj parametru Set-ScheduledJob
Name polecenia cmdlet. Po zmianie nazwy zaplanowanego zadania program PowerShell zmienia nazwę zaplanowanego zadania i zaplanowany katalog zadań. Nie zmienia to jednak nazw wystąpień zaplanowanego zadania, które zostało już uruchomione.
Pobieranie godzin rozpoczęcia i zakończenia
Aby uzyskać daty i godziny rozpoczęcia i zakończenia wystąpień zadania, użyj właściwości PSBeginTime i PSEndTime obiektu ScheduledJob, który Get-Job
zwraca dla zaplanowanych zadań.
W poniższym przykładzie użyto parametru Format-Table
Property polecenia cmdlet do wyświetlenia właściwości PSBeginTime i PSEndTime każdego wystąpienia zadania w tabeli. Właściwość obliczeniowa o nazwie Label wyświetla czas, który upłynął dla każdego wystąpienia zadania.
Get-job -Name UpdateHelpJob |
Format-Table -Property ID, PSBeginTime, PSEndTime,
@{Label="Elapsed Time";Expression={$.PsEndTime - $.PSBeginTime}}
Id PSBeginTime PSEndTime Elapsed Time
-- ----------- --------- ------------
2 11/3/2011 3:00:01 AM 11/3/2011 3:00:39 AM 00:00:38.0053854
3 11/4/2011 3:00:02 AM 11/4/2011 3:01:01 AM 00:00:59.1188475
4 11/5/2011 3:00:02 AM 11/5/2011 3:00:50 AM 00:00:48.3692034
5 11/6/2011 3:00:01 AM 11/6/2011 3:00:54 AM 00:00:52.8013036
6 11/7/2011 3:00:01 AM 11/7/2011 3:00:38 AM 00:00:37.1930350
7 11/8/2011 3:00:01 AM 11/8/2011 3:00:57 AM 00:00:56.2570556
8 11/9/2011 3:00:03 AM 11/9/2011 3:00:55 AM 00:00:51.8142222
9 11/10/2011 3:00:02 AM 11/10/2011 3:00:42 AM 00:00:40.7195954
Zarządzanie historią wykonywania
Można określić liczbę wyników wystąpienia zadania, które są zapisywane dla każdego zaplanowanego zadania, i usunąć historię wykonywania i zapisane wyniki zadania dowolnego zaplanowanego zadania.
Właściwość ExecutionHistoryLength zaplanowanego zadania określa, ile wyników wystąpienia zadania jest zapisywanych dla zaplanowanego zadania. Gdy liczba zapisanych wyników przekracza wartość właściwości ExecutionHistoryLength , program PowerShell usuwa wyniki najstarszego wystąpienia, aby zapewnić miejsce na wyniki najnowszego wystąpienia.
Domyślnie program PowerShell zapisuje historię wykonywania i wyniki 32 wystąpień każdego zaplanowanego zadania. Aby zmienić wartość, użyj parametrów Register-ScheduledJob
MaxResultCount poleceń cmdlet lub Set-ScheduledJob
.
Aby usunąć historię wykonywania i wszystkie wyniki zaplanowanego zadania, użyj parametru ClearExecutionHistory polecenia Set-ScheduledJob
cmdlet. Usunięcie tej historii wykonywania nie uniemożliwia programowi PowerShell zapisywania wyników nowych wystąpień zaplanowanego zadania.
W poniższym przykładzie użyto splattingu, aby utworzyć $JobParms
wartości parametrów, które są przekazywane do Register-ScheduledJob
polecenia cmdlet. Aby uzyskać więcej informacji, zobacz about_Splatting.md.
@JobParms
Używa Register-ScheduledJob
metody do utworzenia zaplanowanego zadania. Polecenie używa parametru MaxResultCount z wartością 12, aby zapisać tylko 12 najnowszych wyników wystąpienia zadania zaplanowanego zadania.
$JobParms = @{
Name = "ProcessJob"
ScriptBlock = {Get-Process}
MaxResultCount = "12"
}
Register-ScheduledJob @JobParms
Następujące polecenie używa parametru Set-ScheduledJob
MaxResultCount polecenia cmdlet, aby zwiększyć liczbę zapisanych wyników wystąpienia do 15.
Get-ScheduledJob ProcessJob | Set-ScheduledJob -MaxResultCount 15
Następujące polecenie usuwa historię wykonywania i bieżące zapisane wyniki zaplanowanego zadania ProcessJob .
Get-ScheduledJob ProcessJob | Set-ScheduledJob -ClearExecutionHistory
Następujące polecenie pobiera wartości nazw i właściwości ExecutionHistoryLength wszystkich zaplanowanych zadań na komputerze i wyświetla je w tabeli.
Get-ScheduledJob |
Format-Table -Property Name, ExecutionHistoryLength -AutoSize