PowerShell-skriptien automatisointi tehtäväsuunnittelijan avulla

Microsoft Windowsin tehtäväsuunnittelijan avulla voit käynnistää ohjelman tai PowerShell-skriptin automaattisesti tiettyyn aikaan tai tiettyjen ehtojen täyttyessä. Voit myös ajastaa sähköpostien lähettämisen ja jopa tiettyjen viestien näyttämisen. Tässä blogissa näytämme, miten voit suorittaa PowerShell-skriptin Tehtävien ajoitusohjelmasta, joka hälyttää minkä tahansa ohjelmiston asennuksesta paikalliselle tietokoneelle.

Luomme myös ajastettuja tehtäviä PowerShell-skriptien avulla. Opit, miten:

  • Luo tehtäviä tehtäväsuunnittelijalla
  • Muokkaa tai poista ajastettuja tehtäviä
  • Luo ajastettuja tehtäviä PowerShell-skripteillä.

Tehtävien luominen tehtäväsuunnittelijalla

Avaat tehtäväsuunnittelijan painamalla näppäinyhdistelmää ”Windows+R” ja kirjoittamalla avautuvaan ikkunaikkunaan komentoriville ”tehtäväsuunnittelija”. Suorita sitten seuraavat vaiheet:

1. Napsauta ”Luo tehtävä” ja anna uudelle tehtävälle nimi ja kuvaus. Jos haluat suorittaa ohjelman järjestelmänvalvojan oikeuksin, merkitse ”Suorita korkeimmilla oikeuksilla” -ruutu. Esimerkissämme määrittelemme palvelutilin suorittamaan tehtävän ja suoritamme sen riippumatta siitä, onko käyttäjä kirjautuneena sisään.

2. Siirry Käynnistimet-välilehdelle ja napsauta ”Uusi…” -painiketta. Tässä voit määrittää ehdot, jotka käynnistävät tehtävän suorittamisen. Voit esimerkiksi määrätä sen suoritettavaksi aikataulun mukaan, sisäänkirjautumisen yhteydessä, tyhjäkäynnillä, käynnistyksen yhteydessä tai aina kun jokin tietty tapahtuma tapahtuu. Haluamme, että tehtävämme käynnistyy jokaisen uuden ohjelmiston asennuksen yhteydessä, joten valitsemme pudotusvalikosta ”Tapahtuman yhteydessä” ja lokiasetuksista ”Sovellus”. Jätä ”Source”-parametri tyhjäksi ja aseta EventID:ksi ”11707”. Tallenna muutokset napsauttamalla ”OK”.

3. Siirry ”Actions”-välilehdelle ja napsauta ”New…”. Tässä voit määrittää toiminnot, jotka suoritetaan aina kun laukaisuehdot täyttyvät. Voit esimerkiksi lähettää sähköpostin tai näyttää viestin. Meidän tapauksessamme haluamme käynnistää ohjelman, joten meidän on luotava PowerShell-skripti, jonka haluamme suorittaa, ja tallennettava se ”ps1”-päätteellä. Löydät komentosarjan täältä; se lähettää hälytyksen, jossa on tapahtuman tiedot asennetusta ohjelmistosta.

PowerShell-komentosarjan ajoittamiseksi määritä seuraavat parametrit:

  • Toiminto: Käynnistä ohjelma
  • Program\script: powershell
  • Lisää argumentteja (valinnainen): -File

Tallenna muutokset napsauttamalla ”OK”.

4. ”Ehdot”-välilehdellä voit määrittää ehdot, jotka yhdessä laukaisimen kanssa määrittävät, pitäisikö tehtävä suorittaa. Meidän tapauksessamme kannattaa jättää tämän välilehden oletusasetukset.

5. Voit määrittää ajastetulle tehtävälle myös muita parametreja ”Asetukset”-välilehdellä. Esimerkissämme jätämme ne kuitenkin ennalleen.

6. Kun tehtävä on täysin määritetty, järjestelmä kysyy sinulta palvelutilin salasanaa. Huomaa, että tällä tilillä on oltava ”Log on as Batch Job” -oikeus. Syötä salasana ja tallenna tehtävä napsauttamalla ”OK”.
7. Jotta Tehtäväsuunnittelija toimisi oikein, Tehtäväsuunnittelija-palvelu on asetettava käynnistymään Suorita ”Services.msc”. Etsi palveluiden luettelosta Task Scheduler ja kaksoisnapsauta sitä. Aseta Yleiset-välilehdellä käynnistystyypiksi ”Automaattinen” ja tallenna muutos napsauttamalla OK-painiketta.

Jatkossa aina, kun Microsoft Windows Server -palvelimeesi asennetaan uusi ohjelmisto, saat ilmoituksen sähköpostitse, jossa ilmoitetaan asennusajankohta, ohjelmiston nimi ja sen asentajan käyttäjätunnus (SID).

Ajoitettujen tehtävien muokkaaminen tai poistaminen

Muuttaaksesi olemassa olevaa tehtävää napsauta sitä hiiren kakkospainikkeella luettelossa, valitse Ominaisuudet, muokkaa haluttuja asetuksia ja napsauta OK. Jos haluat poistaa ajastetun tehtävän, napsauta sitä hiiren kakkospainikkeella, valitse Poista ja vahvista toimenpide.

Ajoitettujen tehtävien luominen PowerShell-skripteillä

Nyt kun tiedät, miten tehtävä luodaan Tehtävien ajoitusohjelman avulla, selvitetään, miten ajastettu tehtävä luodaan PowerShellin avulla. Oletetaan, että haluamme tehtävän käynnistyvän päivittäin klo 10 aamulla, ja sen on suoritettava täältä löytyvä PowerShell-skripti, joka valvoo Active Directory -sivuston ryhmäjäsenyyden muutoksia.

Windows Powershell 2.0:ssa (Windows 7, Windows Server 2008 R2) ajoitetun tehtävän luominen edellyttää TaskScheduler-moduulin käyttöä. Asenna moduuli suorittamalla komento ”Import-Module TaskScheduler” ja luo seuraavalla komentosarjalla tehtävä, joka suorittaa PowerShell-skriptin nimeltä GroupMembershipChanges.ps1 päivittäin klo 10:

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 ja uudemmat) ei sisällä Task Scheduler -moduulia, joten tämä komento ei toimi. Sen sijaan PowerShell 3.0:ssa ja 4.0:ssa otettiin käyttöön uudet cmdletit ajastettujen tehtävien luomiseen, New-ScheduledTaskTrigger ja Register-ScheduledTask, jotka tekevät ajastetun tehtävän luomisesta paljon helpompaa ja kätevämpää. Luodaan siis tehtävä, joka suorittaa komentosarjamme päivittäin klo 10 käyttäen järjestelmätiliä (SYSTEM). Tämän tehtävän suorittaa tili, jolla on korotetut oikeudet.

$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

Muita laukaisuvaihtoehtoja, jotka voivat olla hyödyllisiä uusien tehtävien luomisessa, ovat:

  • -AtStartup – Laukaisee tehtäväsi Windowsin käynnistyessä.
  • -AtLogon – Laukaisee tehtäväsi käyttäjän kirjautuessa sisään.
  • Muita laukaisuvaihtoehtoja, jotka voivat olla hyödyllisiä uusien tehtävien luomisessa, ovat:

    • -AtStartup – Käynnistää tehtävän Windowsin käynnistyksen yhteydessä. Voit asettaa toistovälin -RepetitionInterval-parametrilla.
    • -Weekly – Käynnistää tehtäväsi kerran viikossa.

    Huomaa, että näiden komentorivien avulla ei ole mahdollista käynnistää suoritusta ”tapahtumasta”, kuten Tehtävien ajoitus -työkalulla. PowerShell-skriptit, joissa on ”on an event” -laukaisimet, ovat paljon monimutkaisempia, joten tämä on todellinen haitta PowerShellin käyttämisessä Task Schedulerin sijaan.

    Johtopäätös

    Kuten näet, ajastettujen tehtävien luominen on helppoa Task Schedulerin tai PowerShellin avulla. Muista kuitenkin, että epäasianmukaiset muutokset ajastettuihin tehtäviin voivat aiheuttaa palvelinkatkoksia ja heikentää palvelimen suorituskykyä. Siksi on tärkeää seurata kaikkia ajastettuihin tehtäviin tehtäviä muutoksia.

    Jeff on Netwrixin Global Solutions Engineering -yksikön johtaja. Hän on pitkäaikainen Netwrix-bloggaaja, puhuja ja esitelmöitsijä. Netwrix-blogissa Jeff jakaa lifehackeja, vinkkejä ja temppuja, jotka voivat parantaa järjestelmänhallintakokemustasi huomattavasti.

Vastaa

Sähköpostiosoitettasi ei julkaista.