Adam Automatorul

aveți nevoie să creați o mulțime de sarcini programate sau să automatizați crearea sarcinilor programate? Dacă da, ai noroc. În acest articol, veți învăța cum să gestionați sarcinile programate folosind PowerShell.

sarcinile programate care efectuează acțiuni simple sunt rapid de a face și suficient de confortabil pentru a repeta folosind Task Scheduler app interface (GUI). Dar, administratorii de sistem sau dezvoltatorii ar putea avea nevoie să implementeze sarcini mai complicate cu mai multe programe, declanșatoare sau argumente.din fericire, puteți utiliza PowerShell pentru a crea și gestiona sarcinile programate. Gestionarea sarcinilor programate cu PowerShell este posibilă cu utilizarea modulului ScheduledTasks care este încorporat în Windows.

cuprins

premise

deoarece acesta este un tip de articol de învățare prin practică, există câteva premise pentru a putea urma. Mai jos sunt cerințele pentru a crea sarcini programate PowerShell folosind PowerShell.

  • exemplele din acest articol utilizează Windows 10. Dar Windows Server 2012 și mai noi pot face același lucru.
  • Windows PowerShell 5.1 sau PowerShell 7.
  • ar ajuta dacă ați avea un editor de scripturi, cum ar fi Visual Studio Code, Notepad++ sau Windows PowerShell ISE.

crearea unei noi activități programate

o activitate programată necesită minimum două componente pentru a funcționa; acțiune și declanșare. Adăugarea unui context de securitate și a unui set de setări conexe este opțională. Pentru o mai bună înțelegere, consultați explicația succintă pentru fiecare componentă de activitate programată de mai jos:

  • acțiune – acțiunea care este executată de activitatea programată. O acțiune este de obicei pentru a rula un program sau un script. O sarcină programată poate avea mai multe acțiuni.
  • Trigger-controlează când se execută sarcina programată. Declanșatoarele pot fi bazate pe timp, cum ar fi stabilirea unui program pentru repetarea zilnică sau orară. Declanșatoarele pot fi, de asemenea, bazate pe activități, care rulează o sarcină bazată pe activități detectate, cum ar fi pornirea computerului, un utilizator se conectează sau evenimente înregistrate.
  • Principal – controlează contextul de securitate utilizat pentru a rula activitatea programată. Printre altele, un principal include contul de utilizator și privilegiul necesar utilizat de sarcina programată.
  • Settings – este un set de opțiuni și condiții care controlează modul în care comportamentul sarcină programată. De exemplu, puteți personaliza o activitate pentru a fi eliminată după un număr consecutiv de zile în care activitatea este neutilizată.

în timpul creării unei activități programate, principalul și setările nu sunt necesare în mod explicit. Valorile implicite se folosesc în schimb.

crearea unei acțiuni de activitate

când doriți ca o activitate programată să facă ceva, creați o nouă acțiune de activitate. În acest exemplu, veți crea o sarcină care va apela PowerShell.exe și rulați un script. Asigurați-vă că aveți pregătit editorul de scripturi.

rețineți că scriptul de mai jos este doar un exemplu aleatoriu și nu vi se cere să îl utilizați. Puteți utiliza orice script pe care doriți. Cu toate acestea, utilizarea scriptului de mai jos creează un rezultat ușor verificabil care poate confirma dacă sarcina programată a funcționat.

scriptul de exemplu de mai jos, atunci când este executat, primește primele zece evenimente din jurnalul de evenimente al aplicației. Apoi, exportați evenimentele într-un nou fișier XML în c:\temp dosar. Copiați codul de mai jos, lipiți-l în editorul de scripturi și salvați cu numele fișierului Get-LatestAppLog.ps1 în orice folder doriți.

codul de mai jos foloseșteNew-ScheduledTaskAction pentru a crea un nou obiect de acțiune programat-task stocat în$taskAction variabilă. Această acțiune va apelapowershell.exe executabil și va trece argumentul pentru a rula C:\scripts\Get-LatestAppLog.ps1.

copiați comanda de mai sus și rulați-o în PowerShell. Obiectul rezultat din variabila$taskAction ar trebui să arate ca imaginea de mai jos.

crearea unei noi acțiuni de activitate programată

adăugarea unui declanșator

acum că ați creat o acțiune de activitate, pasul următor este de a defini când sarcina trebuie să ruleze. Cmdlet-ul de utilizat pentru crearea unui declanșator este New-ScheduledTaskTrigger cmdlet. Comanda de mai jos creează un declanșator pentru a rula zilnic la 3 PM. Copiați și rulați codul în PowerShell.

# Create a new trigger (Daily at 3 AM)$taskTrigger = New-ScheduledTaskTrigger -Daily -At 3PM$tasktrigger

obiectul rezultat în$tasktrigger variabila ar trebui să arate la fel ca imaginea de mai jos.

crearea unui declanșator (zilnic la 3 dimineața)

înregistrarea sarcinii

până în prezent, ați creat cerințele de bază pentru a crea o nouă sarcină programată. Următorul pas este să creați sarcina programată și să o înregistrați în sistem.

codul de mai jos utilizează Register-ScheduledTask cmdlet pentru a înregistra activitatea programată. Parametrul-Action este necesar pentru a trece obiectul de acțiune al sarcinii stocat în variabila numită $taskAction. Parametrul-Trigger este necesar pentru a trece conținutul variabilei$taskTrigger.

# Register the new PowerShell scheduled task# The name of your scheduled task.$taskName = "ExportAppLog"# Describe the scheduled task.$description = "Export the 10 newest events in the application log"# Register the scheduled taskRegister-ScheduledTask ` -TaskName $taskName ` -Action $taskAction ` -Trigger $taskTrigger ` -Description $description

copiați codul de mai sus și rulați-l în PowerShell. Ca urmare, noua sarcină programată este înregistrată, așa cum se arată mai jos.

înregistrarea noii sarcini programate

rularea sarcinii

după crearea unei sarcini programate, trebuie să confirmați că sarcina programată sarcina există acum în sistem. Deschideți Planificatorul de activități și găsiți sarcina programată din listă. Ar trebui să vedeți sarcina înregistrată pe listă.

noua activitate programată așa cum se vede în aplicația Task Scheduler

de asemenea, puteți confirma existența activității programate înregistrate executând comanda PowerShell de mai jos.

Get-ScheduledTaskInfo -TaskName ExportAppLog

ar trebui să vedeți apoi o ieșire similară, ca captura de ecran a rezultatului de mai jos.

obținerea informațiilor de activitate programate.

și în cele din urmă, noua sarcină programată ar trebui să funcționeze pentru a determina dacă ceea ce ați făcut până acum a avut succes. Pentru a testa sarcina programată, puteți fie să așteptați următorul program de rulare, fie să utilizați comanda de mai jos pentru a declanșa manual.

Start-ScheduledTask -TaskName ExportAppLog

după rularea codului, ar trebui să vedeți un rezultat similar cu cel prezentat mai jos. După cum puteți vedea, rularea codului a creat un fișier XML, ceea ce indică faptul că sarcina programată a funcționat conform așteptărilor.

rularea sarcinii programate

actualizarea unei sarcini programate existente

după crearea unei sarcini programate, unele aspecte ale acesteia ar putea necesita actualizarea la un moment dat. Poate doriți să o executați cu o oră mai devreme sau să schimbați locația fișierului script. Acestea sunt câteva dintre modificările la sarcina programată care pot fi necesare.

în secțiunile următoare, veți învăța cum să faceți modificări la sarcinile programate înregistrate existente folosind PowerShell.

schimbarea contului de utilizator, a opțiunilor de securitate și a setărilor de compatibilitate

în secțiunea anterioară, activitatea programată rulează în același context de cont de utilizator care l-a creat. Ce se întâmplă dacă sarcina trebuie să ruleze folosind un alt cont de utilizator, cum ar fi un cont de serviciu, de exemplu.

în acest exemplu, veți modifica opțiunile de securitate ale activității programate la setările de mai jos.

  • trebuie să modificați contul de utilizator pentru a rula activitatea programată.
  • permite sarcina pentru a rula dacă utilizatorul logat sau nu.
  • rulați cu cele mai înalte niveluri de privilegii.
  • setați Compatibilitatea sarcinii la Windows 10.

prima linie din Codul de mai jos va crea un obiect principal cu noul cont de utilizator și va seta sarcina să ruleze cu cele mai mari privilegii. Asigurați-vă că modificați valoarea parametrului -UserID după cum este necesar. A doua linie configurează Compatibilitatea sarcinii cu Windows 10.

în cele din urmă, a treia linie actualizeazăExportAppLog **sarcina programată folosind valorile stocate înthe $taskPrincipal și$taskSettings variabile. Copiați codul de mai jos și rulați-l în PowerShell.

# Set the task principal's user ID and run level.$taskPrincipal = New-ScheduledTaskPrincipal -UserId 'DEVPC\svcTask' -RunLevel Highest# Set the task compatibility value to Windows 10.$taskSettings = New-ScheduledTaskSettingsSet -Compatibility Win8# Update the task principal settingsSet-ScheduledTask -TaskName 'ExportAppLog' -Principal $taskPrincipal -Settings $taskSettings

veți observa că -Compatibility valoarea parametrului este Win8. Nu te confunda. Se pare că Microsoft nu a actualizat selecția „cea mai recentă” versiune de la Windows 8. Cu toate acestea, specificarea valorii Win8 va duce la compatibilitatea Windows 10.

în continuare, comanda de mai jos foloseșteSet-ScheduledTask cmdletul pentru a actualiza activitateaExportAppLog **programată. Asigurați-vă că modificați valoarea parolei în parametrul -Password pentru a utiliza parola corectă a contului de utilizator.

# Update the task user account and passwordSet-ScheduledTask -TaskName 'ExportAppLog' -User $taskPrincipal.UserID -Password 'PASSWORD'

după rularea comenzii de mai sus, sarcina programată se actualizează. Dacă verificați activitatea programată, puteți confirma că opțiunile de securitate s-au modificat.

opțiunea de securitate, contul de utilizator și setările de compatibilitate

schimbarea declanșatorului

uneori programul de declanșare trebuie să fie schimbat. Poate din cauza unor ajustări operaționale sau a optimizării resurselor. În orice caz, puteți utiliza și PowerShell pentru a înlocui sau adăuga declanșatoare la o sarcină programată.

în prezent, sarcina programată ExportAppLog este declanșată în fiecare zi la 3 PM. Să presupunem că trebuie să schimbați programul de declanșare la zilnic la 4:30 PM și 1:00 AM. Mai întâi trebuie să creați două noi obiecte de declanșare a sarcinilor pentru cele două programe.

$taskTrigger1 = New-ScheduledTaskTrigger -Daily -At 4:30PM$taskTrigger2 = New-ScheduledTaskTrigger -Daily -At 1:00AM

apoi, pentru a actualiza declanșatorul sarcinii programate, utilizați comanda de mai jos. Veți observa -Trigger parametrul acceptă cele două obiecte de declanșare a sarcinilor, și anume $taskTrigger1 și $taskTrigger2.

în plus, deoarece actualizați o sarcină programată cu o parolă salvată pentru contul de utilizator, va trebui să furnizați din nou valorile-User și-Password.

Set-ScheduledTask -TaskName 'ExportAppLog' -Trigger $taskTrigger1,$taskTrigger2 -User 'DEVPC\svcTask' -Password 'PASSWORD'

mai jos este rezultatul așteptat după rularea codului.

actualizarea sarcinii programate cu mai multe declanșatoare

și după cum puteți vedea mai jos, există acum două declanșatoare în sarcina programată ExportAppLog.

sarcina programată cu declanșatoare multiple

ștergerea și restaurarea unei sarcini programate

sarcinile programate pot deveni caduce în timp. La un moment dat, poate fi necesar să efectuați menaj pentru sarcini programate. În această secțiune, Veți învăța cum să gestionați ștergerea sarcinilor programate în PowerShell.

copierea de rezervă a unei activități programate

înainte de a continua ștergerea sarcinilor programate, este o practică bună să faceți mai întâi o copie de rezervă. Copierea de rezervă a sarcinilor programate vă oferă un punct de restaurare atunci când lucrurile merg prost.

nu există cmdlet încorporat pentru a face o copie de rezervă programată a activității. Dar, totul în PowerShell este un obiect, iar exportul obiectelor în fișier este posibil. Când trebuie să faceți o copie de rezervă a unui obiect într-un fișier, utilizați Import-Clixml cmdlet.

codul exemplu de mai jos exportă activitatea programată cu numele ExportAppLog într-un fișier. Puteți schimba numele fișierului și locația în funcție de preferințe.

Imaginea de mai jos afișează fișierul XML de ieșire așteptat.

copierea de rezervă a unei sarcini programate

ștergerea unei sarcini programate

după ce ați asigurat o copie de rezervă a sarcinii programate, acum puteți elimina acea sarcină programată. Codul de mai jos șterge sarcina programată cu numele ExportAppLog. Copiați codul de mai jos și rulați în PowerShell.

# Unregister the scheduled taskUnregister-ScheduledTask -TaskName 'ExportAppLog' -Confirm:$false

deși nu este necesar, este întotdeauna bine să confirmați rezultatul ștergerii sarcinii programate. Utilizați comanda de mai jos pentru a verifica dacă sarcina programată nu mai există.

Get-ScheduledTask -TaskName 'ExportAppLog'

dacă sarcina programată nu mai există, ar trebui să obțineți o ieșire ca cea prezentată mai jos.

verificarea dacă sarcina programată nu mai există

rețineți că backup-ul de activitate programat nu include parole.

restaurarea unei sarcini programate

Deci ați șters sarcina programată și apoi se dovedește că nu trebuia! Ce mai e acum? Acest tip de situație te face să apreciezi și mai mult conceptul de copii de rezervă.

puteți recrea sarcina programată folosind fișierul de rezervă XML cu PowerShell. Iată cum puteți face restaurarea.mai întâi, importați backupul XML în sesiunea PowerShell. Codul de mai jos importă fișierul c:\temp\ExportAppLog.xml. Ca rezultat, variabila$stBackup va conține datele importate.

# Import the Schedule Task backup$stBackup = Import-Clixml -Path c:\temp\ExportAppLog.xml

apoi, utilizați codul de mai jos pentru a reseta valoareaLogOnType a principalului task laInteractive. Resetarea valorii LogonType este esențială pentru a asigura restaurarea cu succes a sarcinilor programate.

# Reset the logon type to "Run only when the user is logged on."$stBackup.Principal.LogonType = 'Interactive'

următorul pas este crearea unui nou obiect de activitate programat. Codul de mai jos creează o nouă sarcină programată. Variabila$restoreTask stochează obiectul de activitate programat rezultat.

veți observa că valorile transmise parametrilor sunt cele importate din backup. Valorile importate sunt în$restoreTask variabilă. Parametrii sunt ActionTriggerSettings și Principal.

după crearea obiectului de activitate programat, este timpul să înregistrați sarcina programată. Utilizați codul de mai jos pentru a înregistra sarcina programată restaurată.

în acest exemplu, numele taskului este ‘ExportAppLog_restored.’ParametrulInputObject acceptă obiectul de activitate programat în variabila$restoreTask. Asigurați-vă că utilizați valorile corecte user și password.

codul este acum complet. Copiați și rulați codul în PowerShell pentru a restabili sarcina programată ștearsă. Captura de ecran de mai jos arată ieșirea așteptată după rularea codului.

restaurarea unei sarcini programate șterse dintr-o copie de rezervă XML

acum sarcina programată este înregistrată în sistem. Captura de ecran de mai jos arată sarcina programată restaurată.

găsirea sarcina programată restaurat

rezumat

caracteristica sarcini programate în Windows este un instrument excelent pentru configurarea sarcinilor sau slujbe. Puteți crea cele mai de bază pentru sarcini mai complexe. Setările și opțiunile sunt flexibile.

cu modulul Sarcini programate PowerShell, este posibilă configurarea sarcinilor programate utilizând comenzile PowerShell. Acest modul oferă posibilitatea și mijloacele de a crea și implementa sarcini programate programatic pe computerele locale și la distanță.

Microsoft nu a actualizat modulul ScheduledTasks, iar unele setări avansate nu sunt încă expuse cu ușurință ca cmdleturi PowerShell. Un exemplu este crearea unui declanșator pentru ” on workstation unlock.”Dar, puteți realiza aceste setări avansate utilizând clasa CIM task scheduler existentă.

cu toate acestea, modulul Sarcini programate PowerShell este încă un instrument excelent și capabil pe care îl puteți adăuga la arsenalul dvs.

Lasă un răspuns

Adresa ta de email nu va fi publicată.