Cum să automatizați scripturile PowerShell cu Task Scheduler

Microsoft Windows Task Scheduler vă poate ajuta să lansați automat un program sau un script PowerShell la un anumit moment sau când sunt îndeplinite anumite condiții. De asemenea, puteți programa trimiterea de e-mailuri și chiar afișarea anumitor mesaje. În acest blog, vă vom arăta cum să rulați un script PowerShell din Task Scheduler care va alerta cu privire la orice instalare de software pe un computer local.

Vom crea, de asemenea, sarcini programate utilizând scripturi PowerShell. Veți învăța cum să:

  • Crearea de sarcini cu Task Scheduler
  • Modificarea sau ștergerea sarcinilor programate
  • Crearea de sarcini programate cu scripturi PowerShell.

Crearea de sarcini cu Task Scheduler

Deschideți Task Scheduler apăsând „Windows+R” și apoi tastând „taskschd.msc” în fereastra care se deschide. Apoi efectuați următorii pași:

1. Faceți clic pe „Create a task” (Creați o sarcină) și introduceți un nume și o descriere pentru noua sarcină. Pentru a rula programul cu privilegii de administrator, bifați caseta „Run with the highest privileges”. În exemplul nostru, vom atribui un cont de serviciu pentru a rula sarcina și o vom executa indiferent dacă utilizatorul este sau nu conectat.

2. Treceți la fila Triggers (Declanșatori) și faceți clic pe butonul „New…”. Aici puteți specifica condițiile care declanșează executarea sarcinii. De exemplu, puteți face ca aceasta să fie executată în funcție de program, la conectare, la inactivitate, la pornire sau ori de câte ori apare un anumit eveniment. Dorim ca sarcina noastră să fie declanșată de orice instalare de software nou, așa că alegem „On an event” (La un eveniment) din meniul derulant și selectăm „Application” (Aplicație) din setările Log. Lăsăm parametrul „Source” (Sursă) gol și setăm EventID la „11707”. Faceți clic pe „OK” pentru a salva modificările.

3. Navigați la fila „Actions” și faceți clic pe „New…”. Aici puteți specifica acțiunile care vor fi executate ori de câte ori sunt îndeplinite condițiile de declanșare. De exemplu, puteți trimite un e-mail sau afișa un mesaj. În cazul nostru, dorim să pornim un program, așa că trebuie să creăm scriptul PowerShell pe care dorim să îl executăm și să îl salvăm cu extensia „ps1”. Puteți găsi scriptul aici; acesta va trimite o alertă cu detalii despre evenimentul privind software-ul instalat.

Pentru a programa scriptul PowerShell, specificați următorii parametri:

  • Action: Start a program
  • Program\script: powershell
  • Adăugați argumente (opțional): -File

Faceți clic pe „OK” pentru a salva modificările.

4. Fila „Conditions” (Condiții) vă permite să specificați condițiile care, împreună cu declanșatorul, determină dacă sarcina trebuie să fie executată. În cazul nostru, ar trebui să lăsăm setările implicite din această filă.

5. În fila „Settings” (Setări) puteți, de asemenea, să configurați parametri suplimentari pentru sarcina programată. Pentru exemplul nostru, însă, le vom lăsa neschimbate.

6. Când sarcina este complet configurată, sistemul vă va cere parola contului de serviciu. Rețineți că acest cont trebuie să aibă dreptul „Log on as Batch Job”. Introduceți parola și faceți clic pe „OK” pentru a salva sarcina.
7. Pentru ca Task Scheduler să funcționeze corect, serviciul Job Scheduler trebuie să fie setat să pornească Rulați „Services.msc”. În lista de servicii, găsiți Task Scheduler și faceți dublu clic pe el. În fila General, setați tipul de pornire la „Automatic” (Automat) și faceți clic pe OK pentru a salva modificarea.

Acum, ori de câte ori se instalează un software nou pe serverul Microsoft Windows, veți fi notificat printr-un e-mail care detaliază ora instalării, numele software-ului și ID-ul de utilizator (SID) al persoanei care l-a instalat.

Modificarea sau ștergerea sarcinilor programate

Pentru a modifica o sarcină existentă, faceți clic dreapta pe ea în listă, selectați Properties (Proprietăți), editați setările necesare și faceți clic pe OK. Pentru a șterge o sarcină programată, faceți clic dreapta pe ea, selectați Delete (Ștergere) și confirmați acțiunea.

Crearea de sarcini programate cu scripturi PowerShell

Acum că știți cum să creați o sarcină folosind Task Scheduler, haideți să aflăm cum se creează o sarcină programată folosind PowerShell. Să presupunem că dorim ca sarcina noastră să fie lansată zilnic la ora 10 AM și trebuie să execute scriptul PowerShell pe care îl puteți găsi aici, care va monitoriza modificările aduse apartenenței la grupuri în site-ul Active Directory.

În Windows Powershell 2.0 (Windows 7, Windows Server 2008 R2), pentru a crea o sarcină programată, trebuie să utilizați modulul TaskScheduler. Instalați modulul prin rularea comenzii „Import-Module TaskScheduler” și utilizați următorul script pentru a crea o sarcină care va executa scriptul PowerShell numit GroupMembershipChanges.ps1 zilnic la ora 10 AM:

Import-Module TaskScheduler $task = New-Task$task.Settings.Hidden = $trueAdd-TaskAction -Task $task -Path C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe –Arguments "-File C:\Scripts\GroupMembershipChanges.ps1"Add-TaskTrigger -Task $task -Daily -At "10:00"Register-ScheduledJob –Name "Monitor Group Management" -Task $task

Windows PowerShell 4.0 (Windows Server 2012 R2 și versiunile ulterioare) nu include modulul Task Scheduler, astfel încât acest script nu va funcționa. În schimb, PowerShell 3.0 și 4.0 au introdus noi cmdlete pentru crearea de sarcini programate, New-ScheduledTaskTrigger și Register-ScheduledTask, care fac crearea unei sarcini programate mult mai ușoară și mai convenabilă. Așadar, haideți să creăm o sarcină care va executa scriptul nostru zilnic la ora 10 AM folosind contul de sistem (SYSTEM). Această sarcină va fi executată de un cont cu privilegii ridicate.

$Trigger= New-ScheduledTaskTrigger -At 10:00am –Daily # Specify the trigger settings$User= "NT AUTHORITY\SYSTEM" # Specify the account to run the script$Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "C:\PS\StartupScript.ps1" # Specify what program to run and with its parametersRegister-ScheduledTask -TaskName "MonitorGroupMembership" -Trigger $Trigger -User $User -Action $Action -RunLevel Highest –Force # Specify the name of the task

Alte opțiuni de declanșare care ar putea fi utile în crearea de sarcini noi includ:

  • -AtStartup – Declanșează sarcina dvs. la pornirea Windows.
  • -AtLogon – Declanșează sarcina dvs. atunci când utilizatorul se conectează.
  • -Once – Declanșează sarcina dvs. o singură dată. Puteți seta un interval de repetiție utilizând parametrul -RepetitionInterval.
  • -Weekly – Declanșează sarcina dvs. o dată pe săptămână.

Rețineți că, folosind aceste cmdlet-uri, nu este posibil să declanșați execuția „la un eveniment”, așa cum am făcut cu instrumentul Task Scheduler. Scripturile PowerShell cu declanșări „la un eveniment” sunt mult mai complicate, astfel încât acesta este un dezavantaj real al utilizării PowerShell mai degrabă decât Task Scheduler.

Concluzie

După cum puteți vedea, este ușor să creați sarcini programate utilizând Task Scheduler sau PowerShell. Dar nu uitați că modificările necorespunzătoare ale sarcinilor programate pot provoca întreruperi ale serviciului și pot degrada performanța serverului. Prin urmare, este esențial să urmăriți toate modificările aduse sarcinilor dvs. programate.

Jeff este director de inginerie pentru soluții globale la Netwrix. El este un blogger, vorbitor și prezentator de lungă durată al Netwrix. Pe blogul Netwrix, Jeff împărtășește lifehacks, sfaturi și trucuri care vă pot îmbunătăți dramatic experiența de administrare a sistemului.

Lasă un răspuns

Adresa ta de email nu va fi publicată.