Koduleht » kuidas » Geek Kool Õpi kasutama töökohti PowerShellis

    Geek Kool Õpi kasutama töökohti PowerShellis

    PowerShellil on nelja tüüpi töökohti - taustal töökohti, kaugtööd, WMI töökohti ja planeeritud töökohti. Liitu meiega, kui saame teada, mis nad on ja kuidas neid kasutada.

    Lugege kindlasti seeria eelmisi artikleid:

    • Lugege, kuidas Windowsi PowerShelli abil automatiseerida
    • Õppimine kasutama Cmdleti PowerShellis
    • Õppimine, kuidas kasutada objekte PowerShellis
    • Vormindamine, filtreerimine ja võrdlemine PowerShellis
    • Õpi kasutama Remotingit PowerShellis
    • PowerShelli kasutamine arvutiteabe saamiseks
    • Töötamine kogudega PowerShellis

    Ja hoia ülejäänud sarja jaoks terve nädal.

    Tausta töökohti

    Siiani on kõik, mida ma olen PowerShelli sees näidanud, sünkroonne, mis tähendab, et me kirjutame midagi kesta ja ei saa tegelikult palju teha, kuni see käsk on lõpetanud. See on koht, kus taustal töökohti tulevad. Tausta alustamiseks läheb töö lihtsalt skripti blokeerimise käivitus-cmdletile.

    Start-Job -Nimi GetFileList -Scriptiblokk Get-ChildItem C: \ t

    Nüüd on meil vabadus teha kõike, mida tahame koorega, samas kui skriptiplokk täidab taustal.

    Uue töö käivitamisel loob PowerShell uue tööobjekti, mis esindab seda tööd. Kõikide töökohtade loendi saate igal ajal, käivitades Get-Job cmdlet.

    Tööobjektid ütlevad teile töökohtade staatuse. Näiteks näeme ülaltoodud pildil, et meil on BackgroundJob nimega GetFileList, mis on veel töötav, kuid on juba alustanud andmete tagastamist. Kui te otsustate, et töö on kestnud liiga kaua, saate selle lihtsalt peatada Stop-Jobile.

    Get-Job -Nimi GetFileList Stop-Job

    Kuid kui olete töö peatanud, olenemata sellest, milliseid andmeid see on kuni selle peatamiseni, mida te lõpetasite, on veel saadaval. Kuid on olemas ka mina. PowerShellis, kui olete saanud töö tulemuse, kustutatakse need. Selleks, et need jääksid, peate määrama vastuvõtmise tööparameetri.

    Get-Job -Nimi GetFileList Vastuvõtt-töö -Keep

    Kui olete tööga lõpetanud, on see hea tava eemaldada. Töö eemaldamiseks pange see lihtsalt eemaldatava töö cmdletile.

    Get-Job -Nimi GetFileList Eemalda-Job

    See eemaldab selle Get-Jobi tagastatud tööde loendist.

    Kaugtööd

    Mõningaid õppetunde, me vaatasime, kuidas me saame kasutada kaugjuhtimist, et käivitada PowerShelli käsud kaugarvutis Invoke-Command'i abil, aga kas teadsite, et saate kasutada ka Invoke-Commandit, et alustada remotingu tööd taustal? Selleks lisage lihtsalt -AsJob parameeter käsu lõppu:

    Käivita käsk -arvuti nimi Flash, Viper -Kvaliteedihaldur -ScriptBlock gci -AsJob

    See oli lihtne käsk ja see oleks pidanud nüüdseks täitma, nii et saate vaadata meie töökohtade olekut.

    Hmm, näeb välja nagu ebaõnnestus. See toob mind töökohtadega minu esimesele tuttavale. Kui loote PowerShellis mis tahes tüüpi uue töö, loob see ühe vanemtöö lisaks ühele lapstööle iga arvuti jaoks, millega te tööd teete. Kui kasutate Get-Job'i cmdletit, näitab see ainult vanemate töökohti ja riigi vara on halvim stsenaarium, mis tähendab, et isegi kui käsku ei õnnestunud käivitada ainult ühest sajast arvutist, ütleb vanemate töökohtade seisund ebaõnnestus. Laste tööde loendi vaatamiseks peate kasutama parameetrit IncludeChildJob.

    Kui te lähemalt vaatate, näete, et see töö tõepoolest ainult ühes arvutis ebaõnnestus, mis toob meid järgmise gotcha peale. Kui proovite töö tulemuste saamiseks, kui määrate vanema töökoha nime või ID, tagastab PowerShell andmed kõigi laste töökohtadest. Probleem on selles, et kui mõnes lapse töökohas on viga, jäetakse meile punaseks tekstiks.

    Selle saavutamiseks on kaks võimalust. Esiteks, kui te teate, milliseid arvuteid soovite tulemusi saada, saate lihtsalt kasutada cmdleti Recnie -Job ComputerName parameetrit.

    Get-Job -Id 3 | Vastuvõtt-töö -Keep -arvuti nimi Viper

    Teise võimalusena saate tulemuste saamiseks konkreetse lapse töö, kasutades oma töö ID-d.

    Get-Job -Id 3 -IncludeChildJob

    Get-Job -Id 5 | Vastuvõtt-töö -Keep

    WMI töökohti

    WMI tööpakkumised on palju sarnased kaugtöödega, nõudes ainult -AsJobi parameetri lisamist cmdletile Get-WmiObject.

    Kahjuks tähendab see seda, et neile kehtivad ka need, mida ma mainisin kaugtööde jaotises.

    Planeeritud töökohad

    Kolm viimast tööd, mida me vaatasime, ei olnud püsivad, mis tähendab, et need on saadaval ainult teie praegusel seansil. Põhimõtteliselt tähendab see, et kui te tööle hakkate ja seejärel avate teise PowerShelli konsooli ja käivitate Get-Jobi, ei näe te ühtegi töökohta. Kuid tulge tagasi konsooli, mille te töö ära viskasite, saate näha selle staatust. See on erinevalt ajastatud töökohtadest, mis on püsivad. Põhimõtteliselt on planeeritud töö skripti plokk, mis töötab ajakavaga. Varem oli sama mõju võimalik saavutada ka Windowsi ülesannete planeerija abil, mis tõesti toimub kapoti all. Uue planeeritud töö loomiseks teeme järgmist:

    Register-ScheduledJob -Name GetEventLogs -ScriptBlock Get-EventLog -LogName Turvalisus - uusim 100 -Trigger (New-JobTrigger -Daily -At 17:00) -ScheduledJobOption (uus-planeeritudJobOption -RunElevated)

    Selles käskluses on üsna palju, nii et lõhkem seda.

    • Esiteks anname meie planeeritud tööle GetEventLogs'i nime.
    • Seejärel räägime sellest, et kui käivitada, siis tahame, et see käivitaks määratud skriptiploki sisu, mis põhimõtteliselt saab uusima 100 turvavõistluslogi kirjet.
    • Järgmiseks määrame käivitaja. Kuna trigeri parameeter võtab sisendina käivitusobjekti, kasutasime sulgemiskäsku, et genereerida käivitus, mis väljub iga päev kell 5:00.
    • Kuna tegemist on sündmuste logiga, peame töötama administraatorina, mida me saame määrata uue ScheduledJobOption objekti loomisega ja edastades selle ScheduledJobOption parameetrile.

    Kuna tegemist on pisut teistsuguse tööga, peate kasutama ka teistsugust käsku, et laadida loend kõigi planeeritud töökohtade kohta.

    Get-ScheduledJob

    See on kõik selleks.