/ / Geek mokykla: Sužinokite, kaip naudotis darbais „PowerShell“

Geek mokykla: Sužinokite, kaip naudotis darbais „PowerShell“

„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}

vaizdas

Dabar mes galime laisvai daryti, ką norime, naudodami apvalkalą, kol scenarijų blokas vykdomas fone.

vaizdas

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“.

vaizdas

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“

vaizdas

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

vaizdas

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.

vaizdas

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

vaizdas

Tai buvo paprasta komanda, kuri jau turėjo būti baigta vykdyti, taigi galime pažvelgti į mūsų darbo būseną.

vaizdas

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ą.

vaizdas

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ą.

vaizdas

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“

vaizdas

Arba galite gauti konkretaus vaiko darbo rezultatus naudodamiesi jo darbo ID.

„Get-Job-Id 3“ - įtraukite „vaikų auklėtoją“

vaizdas

„Get-Job -Id 5“ Gauti darbą - išlaikyti

vaizdas

WMI darbai

WMI darbai yra beveik tokie patys kaip nuotoliniai darbai, reikalaujantys, kad į „cmdlet“ „Get-WmiObject“ būtų įtrauktas tik parametras –AsJob.

vaizdas

vaizdas

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ą.

vaizdas

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“

vaizdas

Tam viskas yra.