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 poleceniaRegister-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

Zobacz też