„PowerShell“ yra keturių tipų darbai - fono darbai, nuotoliniai darbai, WMI darbai ir suplanuoti darbai. Prisijunkite prie mūsų, kai sužinosime, kokie jie yra ir kaip galime jais naudotis.
Būtinai perskaitykite ankstesnius serijos straipsnius:
- Sužinokite, kaip automatizuoti „Windows“ naudojant „PowerShell“
- Išmokite naudoti „CFS“ „PowerShell“
- Išmokite naudotis objektais „PowerShell“
- Formatavimo, filtravimo ir palyginimo mokymasis naudojant „PowerShell“
- Išmokite naudotis nuotoliniu valdymu „PowerShell“
- „PowerShell“ naudojimas norint gauti kompiuterio informaciją
- Darbas su kolekcijomis „PowerShell“
Ir visą savaitę stebėkite likusį serialą.
Fono darbai
Iki šiol viskas, ką jums parodžiau„PowerShell“ buvo sinchronizuota, tai reiškia, kad mes įvedame ką nors į apvalkalą ir tikrai negalime padaryti daug, kol ta komanda nebus baigta vykdyti. Čia gaunami foniniai darbai. Norėdami paleisti foną, užduotis tiesiog perduokite scenarijaus bloką į „cmdlet“ Pradėti darbą.
„Pradėti darbą“ - „Pavadinimas„ GetFileList “- scenarijų blokas {Get-ChildItem C: –Recurse}
Dabar mes galime laisvai daryti, ką norime, naudodami apvalkalą, kol scenarijų blokas vykdomas fone.
Kai pradedate naują užduotį, „PowerShell“ sukuria naują užduoties objektą, kuris reprezentuoja tą užduotį. Bet kuriuo metu galite gauti visų darbų sąrašą naudodami „cmdlet“ „Get-Job“.
Darbo objektai pasakoja apiedarbo vietų. Pavyzdžiui, aukščiau esančioje ekrano kopijoje matome, kad turime „BackgroundJob“, vadinamą „GetFileList“, kuri vis dar veikia, bet jau pradėjo grąžinti duomenis. Jei bet kuriuo metu nuspręsite, kad darbas vykdomas per ilgai, galite lengvai jį sustabdyti, įtraukdami į „Stop-Job“.
„Get-Job“ - vardas „GetFileList“ „Stop-Job“
Tačiau nutraukę darbą, kad ir kąduomenys, kuriuos ji gavo iki to momento, kai juos sustabdėte, vis dar yra. Vis dėlto yra „getcha“. „PowerShell“, kai gausite darbo rezultatus, jie bus ištrinti. Norėdami, kad jie liktų, turite nurodyti parametro „Laikyti jungiklį“ palaikymą „Gavimas – darbas“.
„Get-Job“ - vardas „GetFileList“ Gauti darbą - išlaikyti
Kai baigsite darbą, geriausia jį pašalinti. Norėdami pašalinti užduotį, tiesiog perkelkite ją į cmdlet „Remove-Job“.
„Get-Job“ - vardas „GetFileList“ Pašalinti-darbas
Tai pašalins iš „Get-Job“ grąžintų darbų sąrašo.
Nuotoliniai darbai
Prieš keletą pamokų mes pažvelgėme, kaip galime ja naudotisnuotolinis kompiuterio valdymas, naudojantis „PowerShell“ komandomis nuotoliniame kompiuteryje, naudojant „Invoke-Command“, tačiau ar žinojai, kad naudodamiesi „Invoke-Command“ taip pat galite naudoti nuotolinio darbo fone? Norėdami tai padaryti, tiesiog pridėkite parametrą –AsJob prie komandos pabaigos:
Invoke-Command -Kompiuterio vardo „Flash“, „Viper“ –Kredencialo administratorius –ScriptBlock {gci} –AsJob
Tai buvo paprasta komanda, kuri jau turėjo būti baigta vykdyti, taigi galime pažvelgti į mūsų darbo būseną.
Hmm, atrodo, kad nepavyko. Tai pritraukia mane prie mano pirmojo darbo su darbais. Kai kuriate naują bet kokio tipo užduotį „PowerShell“, ji sukuria vieną iš tėvų darbo, ne tik prie vieno vaiko darbo, kiekviename kompiuteryje, kuriame dirbate. Kai naudojate cmdlet „Get-Job“, jame rodomi tik pagrindiniai darbai, o valstybės nuosavybė yra blogiausio atvejo scenarijus, reiškiantis, kad net jei komanda nesugebėjo vykdyti tik viename iš šimto kompiuterių, pagrindinės užduoties būsena pasakys nepavyko. Norėdami pamatyti vaikų darbų sąrašą, turite naudoti „IncludeChildJob“ parametrą.
Jei pažvelgsite atidžiau, pamatysite, kad darbas pavykoiš tikrųjų žlunga tik viename kompiuteryje, kuris mus nukreipia į kitą kompiuterį. Bandant gauti darbo rezultatus ir nurodžius tėvo darbo pavadinimą arba ID, „PowerShell“ grąžins duomenis apie visus vaiko darbus. Problema ta, kad jei viename iš vaiko darbų įvyko klaida, mums teks palikti raudoną tekstą.
Yra du būdai, kaip tai išvengti. Pirma, jei žinote, kokiais kompiuteriais norite gauti rezultatų, galite tiesiog naudoti cmdlet „Recieve –Job“ parametrą ComputerName.
„Get-Job“ - 3 id. | Gauti darbą - saugoti - kompiuterio pavadinimą „Viper“
Arba galite gauti konkretaus vaiko darbo rezultatus naudodamiesi jo darbo ID.
„Get-Job-Id 3“ - įtraukite „vaikų auklėtoją“
„Get-Job -Id 5“ Gauti darbą - išlaikyti
WMI darbai
WMI darbai yra beveik tokie patys kaip nuotoliniai darbai, reikalaujantys, kad į „cmdlet“ „Get-WmiObject“ būtų įtrauktas tik parametras –AsJob.
Deja, tai reiškia, kad jiems taip pat taikomi tie patys daiktai, kuriuos paminėjau skyriuje „Nuotoliniai darbai“.
Suplanuoti darbai
Paskutinės trys darbo rūšys, į kurias žiūrėjome, buvonėra nuolatinis, tai reiškia, kad jie galimi tik jūsų dabartinėje sesijoje. Iš esmės tai reiškia, kad jei pasirinksite darbą, tada atidarysite kitą „PowerShell“ pultą ir paleisite „Get-Job“, nematysite jokių darbų. Tačiau grįžę prie konsolės, nuo kurios pradėjote darbą, galėsite pamatyti jos būseną. Tai priešingai nei suplanuoti darbai, kurie yra atkaklūs. Iš esmės Suplanuotas darbas yra scenarijų blokaskuris vykdomas pagal grafiką. Anksčiau tas pats poveikis galėjo būti pasiektas naudojant „Windows“ užduočių planuoklę, kuri iš tikrųjų vyksta po gaubtu. Norėdami sukurti naują suplanuotą darbą, mes darome šiuos veiksmus:
Registruotis-SuplanuotasJobas-Pavadinimas „GetEventLogs -ScriptBlock“ {„Get-EventLog -LogName" sauga -Newest 100} -Trigger (New-JobTrigger -Diena -At 17:00) -PlanuotasJobOption (Naujas-ScheduledJobOption -RunElevated)
Ta komanda vykdoma gana daug, todėl ją suskaidykime.
- Pirmiausia mes suteikiame savo suplanuotam darbui „GetEventLogs“ vardą.
- Tada sakome, kad suaktyvinę norime, kad jis paleistų nurodyto scenarijaus bloko, kuris iš esmės gauna naujausius 100 saugos įvykių žurnalo įrašų, turinį.
- Toliau nurodome aktyviklį. Kadangi trigerio parametras paleidžia trigerio objektą kaip įvestį, mes panaudojome skliaustelią komandą generuoti aktyviklį, kuris pasikartos kiekvieną dieną 17:00.
- Kadangi kalbame apie įvykių žurnalą, turime veikti kaip administratorius, kurį galime nurodyti sukurdami naują objektą „ScheduledJobOption“ ir pervesdami jį į „ScheduledJobOption“ parametrą.
Kadangi tai yra šiek tiek kitoks darbo tipas, taip pat turėsite naudoti kitą komandą, norėdami nuskaityti visų mašinoje numatytų darbų sąrašą.
„Get-ScheduledJob“
Tam viskas yra.