Tworzenie zadania harmonogramu za pomocą PowerShell

Większość użytkowników i administratorów jest przyzwyczajona do używania graficznego interfejsu konsoli do tworzenia zaplanowanego zadania programu planującego (Windows Scheduler). Taskschd.msc. Jednak w różnych skryptach i zautomatyzowanych zadaniach znacznie wygodniej jest korzystać z możliwości programu PowerShell do tworzenia zadań harmonogramu. W tym artykule pokażemy, jak używać programu PowerShell (wersje 2.0 i 4.0) do tworzenia nowych zadań harmonogramu systemu Windows, eksportowania zadań do pliku xml i importowania ich na inne komputery.

Załóżmy, że naszym zadaniem jest utworzenie zadania harmonogramu, które uruchamiałoby się podczas uruchamiania systemu (lub w określonym czasie), zadanie to powinno wykonać skrypt lub polecenie PowerShell.

Treść

  • Jak utworzyć zadanie harmonogramu w PowerShell 2.0
  • Jak utworzyć zadanie harmonogramu w PowerShell 4.0 (Windows Server 2012 R2)
  • Eksportuj zadanie programu planującego do pliku XML
  • Zaimportuj zadanie harmonogramu z pliku XML

Jak utworzyć zadanie harmonogramu w PowerShell 2.0

W Powershell 2.0 (Windows 7, Windows Server 2008 R2), aby utworzyć zadanie cykliczne (ScheduledJob) z PowerShell, musisz użyć interfejsu COM Harmonogram.Service.  W tym przykładzie utworzymy zadanie harmonogramu, które podczas uruchamiania powinno wykonać określony plik za pomocą skryptu PowerShell. Zadanie jest wykonywane przy użyciu uprawnień systemowych (system).

$ TaskName = "NewPsTask"
$ TaskDescription = "Uruchamianie skryptu PowerShell z harmonogramu"
$ TaskCommand = "c: \ windows \ system32 \ WindowsPowerShell \ v1.0 \ powershell.exe"
$ TaskScript = "C: \ PS \ StartupScript.ps1"
$ TaskArg = "-WindowStyle Hidden -NonInteractive -Executionpolicy nieograniczony -plik $ TaskScript"
$ TaskStartTime = [datetime] :: Now.AddMinutes (1)
$ service = new-object -ComObject („Schedule.Service”)
$ service.Connect ()
$ rootFolder = $ service.GetFolder („\”)
$ TaskDefinition = $ service.NewTask (0)
$ TaskDefinition.RegistrationInfo.Description = "$ TaskDescription"
$ TaskDefinition.Settings.Enabled = $ true
$ TaskDefinition.Settings.AllowDemandStart = $ true
$ triggers = $ TaskDefinition.Triggers
#http: //msdn.microsoft.com/en-us/library/windows/desktop/aa383915 (v = vs.85) .aspx
$ trigger = $ triggers.Create (8)

Uwaga. W takim przypadku tworzony jest wyzwalacz, który działa podczas uruchamiania systemu - kod 8. Pełna lista kodów:

TASK_TRIGGER_EVENT0
TASK_TRIGGER_TIME1
TASK_TRIGGER_DAILY2)
TASK_TRIGGER_WEEKLY3)
TASK_TRIGGER_MONTHLY4
TASK_TRIGGER_MONTHLYDOW5
TASK_TRIGGER_IDLE6
TASK_TRIGGER_REGISTRATION7
TASK_TRIGGER_BOOT8
TASK_TRIGGER_LOGON9
TASK_TRIGGER_SESSION_STATE_CHANGE11

$ trigger.StartBoundary = $ TaskStartTime.ToString ("rrrr-MM-dd'T'HG: mm: ss")
$ trigger.Enabled = $ true
# http://msdn.microsoft.com/en-us/library/windows/desktop/aa381841(v=vs.85).aspx
$ Action = $ TaskDefinition.Actions.Create (0)
$ action.Path = "$ TaskCommand"
$ action.Arguments = "$ TaskArg"
#http: //msdn.microsoft.com/en-us/library/windows/desktop/aa381365 (v = vs.85) .aspx
$ rootFolder.RegisterTaskDefinition („$ TaskName”, $ TaskDefinition, 6, „System”, $ null, 5)

Po wykonaniu polecenia w harmonogramie pojawi się nowe zadanie NewPsTask.

Składnia polecenia jest dość skomplikowana, dlatego programiści dodali osobny moduł do pakietu PowerShell (część zestawu Windows 7 Resource Kit) Taskcheduler, co znacznie upraszcza proces tworzenia zadań harmonogramu z PowerShell 2.0. Po zainstalowaniu modułu możesz utworzyć zadanie za pomocą następujących poleceń:

Import-Module TaskScheduler $ task = New-Task
$ task.Settings.Hidden = $ true
Add-TaskAction -Task $ task -Path C: \ Windows \ system32 \ WindowsPowerShell \ v1.0 \ powershell.exe -Arguments „-Plik C: \ MyScript.ps1”
Add-TaskTrigger -Task $ task -Daily -At „10:00”
Register-ScheduledJob -Name „ShTaskPs” -Task $ zadanie

Jak utworzyć zadanie harmonogramu w PowerShell 4.0 (Windows Server 2012 R2)

W Windows Server 2012 R2 i Windows 8.1 PowerShell 3.0 i 4.0 wprowadziły nowe polecenia cmdlet do tworzenia zadań harmonogramu: Nowy-ScheduledTaskTrigger, Zarejestruj się-ScheduledTask. Tworzenie zadania harmonogramu jest teraz znacznie łatwiejsze i wygodniejsze..

Utwórzmy zadanie o nazwie StartupScript_PS, które codziennie o godzinie 10:00 z konta systemowego (SYSTEM) uruchamia skrypt PoSh zapisany w pliku C: \ PS \ StartupScript.ps1. Zadanie zostanie uruchomione z podwyższonymi uprawnieniami (daw „Uruchom z najwyższymi uprawnieniami”).

$ Trigger = New-ScheduledTaskTrigger -At 10:00 am -Daily
$ User = „NT AUTHORITY \ SYSTEM”
$ Action = New-ScheduledTaskAction -Execute „PowerShell.exe” -Argument „C: \ PS \ StartupScript.ps1”
Register-ScheduledTask -TaskName „StartupScript_PS” -Trigger $ Trigger -User $ User -Action $ Action -RunLevel Highest -Force

Wskazówka. Jeśli chcesz, aby zadanie było uruchamiane przy każdym uruchomieniu systemu, pierwsze polecenie powinno wyglądać tak:
$ Trigger = New-ScheduledTaskTrigger -AtStartup
Jeśli przy logowaniu użytkownika:
$Trigger = New-ScheduledTaskTrigger -AtLogon

Sprawdź, czy w harmonogramie pojawiło się nowe zadanie.

Eksportuj zadanie programu planującego do pliku XML

PowerShell zapewnia możliwość eksportowania bieżących ustawień dowolnego zadania harmonogramu do pliku tekstowego XML. W ten sposób można przesłać parametry dowolnego zadania i rozdzielić zadanie o dowolnej złożoności na inne komputery w sieci. Zadanie można wyeksportować zarówno z GUI Harmonogramu zadań, jak iz wiersza polecenia programu PowerShell.

Polecenie wyeksportowania zadania o nazwie StartupScript_PS do pliku StartupScript_PS.xml:

Export-ScheduledTask „StartupScript_PS” | plik wyjściowy c: \ tmp \ StartupScript_PS.xml

Polecenie cmdlet Export-ScheduledTask nie będzie działać w programie PowerShell 2.0, dlatego w systemie Windows 7/2008 R2 lepiej jest użyć wbudowanego narzędzia do wyeksportowania ustawień zadania do pliku XML schtasks, którego dane wyjściowe muszą zostać przekierowane do pliku tekstowego:

schtasks / query / tn „NewPsTask” / xml >> „c: \ tmp \ NewPsTask.xml”

Wskazówka. Przypomnijmy, że wcześniej do tworzenia zadań zarządzania i zarządzania nimi wykorzystywano głównie funkcje wbudowanego narzędzia konsoli schtasks.exe.

Zaimportuj zadanie harmonogramu z pliku XML

Po wyeksportowaniu ustawień zadania harmonogramu do pliku XML można go zaimportować na dowolny inny komputer w sieci za pomocą konsoli graficznej, SchTasks.exe lub PowerShell.

Polecenie cmdlet pomoże zaimportować parametry zadania i zarejestrować je. Register-ScheduledTask.

Register-ScheduledTask -Xml (Get-Content „\\ Serwer1 \ public \ NewPsTask.xml” | out-string) -TaskName „NewPsTask”

W PowerShell 2.0 (Windows 7 / Server 2008 R2) importowanie zadania jest również łatwiejsze dzięki narzędziu schtasks. Pierwszy zespół stworzy nowe zadanie. Drugi natychmiast go uruchomi (bez oczekiwania na zadziałanie spustu).

schtasks / create / tn "NewPsTask" / xml "\\ Serwer1 \ public \ NewPsTask.xml" / ru corp \ aaivanov / rp Pa $$ w0rd
schtasks / Run / TN „NewPsTask”

Uwaga. Pamiętaj, że ten przykład pokazuje informacje o koncie, na podstawie których zadanie zostanie uruchomione. Jeśli informacje o koncie nie są określone, to dlatego, że nie są przechowywane w zadaniu; zostaną zaimportowane podczas importu.