"Geek" mokykla: sužinokite, kaip "PowerShell" naudoti darbo vietas

Turinys:

"Geek" mokykla: sužinokite, kaip "PowerShell" naudoti darbo vietas
"Geek" mokykla: sužinokite, kaip "PowerShell" naudoti darbo vietas

Video: "Geek" mokykla: sužinokite, kaip "PowerShell" naudoti darbo vietas

Video:
Video: The Best Torrent Client On Raspberry Pi: qBittorent installation and configuration - YouTube 2024, Balandis
Anonim
"PowerShell" turi keturias darbo vietas: "Background Jobs", "Remote Jobs", WMI "Darbas" ir "Scheduled Jobs". Prisijunkite prie mūsų, kai sužinome, kokie jie yra ir kaip mes galime juos naudoti.
"PowerShell" turi keturias darbo vietas: "Background Jobs", "Remote Jobs", WMI "Darbas" ir "Scheduled Jobs". Prisijunkite prie mūsų, kai sužinome, kokie jie yra ir kaip mes galime juos naudoti.

Būtinai perskaitykite ankstesnius serijos straipsnius:

  • Sužinokite, kaip automatizuoti "Windows" su "PowerShell"
  • Mokytis naudotis "PowerShell" kompiliacijomis
  • Mokymasis naudoti objektus PowerShell
  • Mokymosi formatavimas, filtravimas ir palyginimas PowerShell
  • Sužinokite, kaip naudoti "Remoting" "PowerShell"
  • "PowerShell" naudojimas kompiuterio informacijai gauti
  • Darbas su "PowerShell" kolekcijomis

Ir visada sekite visą seriją likusiai savaitę.

Fono darbai

Iki šiol viskas, ką parodžiau PowerShell sistemoje, buvo sinchronizuotas, o tai reiškia, kad mes įrašome kažką į "shell" ir tikrai negalime padaryti daug, kol ši komanda baigs vykdyti. Čia yra fono darbo vietos. Jei norite pradėti fono, darbas paprasčiausiai perduoda scenarijaus bloką į "Start-Job" cmdlet.

Start-Job –Name GetFileList –Scriptblock {Get-ChildItem C: –Recurse}

Dabar mes galime laisvai daryti viską, ko norime, esant lukštui, o scenarijų blokas vykdo fone.
Dabar mes galime laisvai daryti viską, ko norime, esant lukštui, o scenarijų blokas vykdo fone.
Kai pradėsite naują darbą, "PowerShell" sukuria naują darbo objektą, kuris atitinka šį darbą. Bet kada galite gauti visų darbo vietų sąrašą, paleisdami "Get-Job" cmdlet.
Kai pradėsite naują darbą, "PowerShell" sukuria naują darbo objektą, kuris atitinka šį darbą. Bet kada galite gauti visų darbo vietų sąrašą, paleisdami "Get-Job" cmdlet.
Darbo objektai pasakoja apie darbo statusą. Pavyzdžiui, pirmiau pateiktame ekrano paveikslėlyje matome, kad turime BackgroundTob vadinamą GetFileList, kuris vis dar veikia, bet jau pradėjo grąžinti duomenis. Jei bet kuriuo metu nuspręsite, kad darbas buvo vykdomas per ilgai, galite lengvai jį sustabdyti, vamzdžius jį "Stop-Job".
Darbo objektai pasakoja apie darbo statusą. Pavyzdžiui, pirmiau pateiktame ekrano paveikslėlyje matome, kad turime BackgroundTob vadinamą GetFileList, kuris vis dar veikia, bet jau pradėjo grąžinti duomenis. Jei bet kuriuo metu nuspręsite, kad darbas buvo vykdomas per ilgai, galite lengvai jį sustabdyti, vamzdžius jį "Stop-Job".

Get-Job –Name GetFileList | Stop-Job

Tačiau, kai sustojote darbą, kokie duomenys, kuriuos jis gavo iki tos dienos, kai sustojote, vis dar yra prieinami. Tačiau yra gothka. "PowerShell", kai gausite darbo rezultatus, jie bus ištrinti. Kad jie liktų, turite nurodyti "Get-Job" palaikymo jungiklio parametrą.
Tačiau, kai sustojote darbą, kokie duomenys, kuriuos jis gavo iki tos dienos, kai sustojote, vis dar yra prieinami. Tačiau yra gothka. "PowerShell", kai gausite darbo rezultatus, jie bus ištrinti. Kad jie liktų, turite nurodyti "Get-Job" palaikymo jungiklio parametrą.

Get-Job –Name GetFileList | Receive-Job –Keep

Image
Image

Kai baigsite darbą, geriausia tai pašalinti. Norėdami pašalinti darbą, paprasčiausiai įkelkite jį į cmdlet "Remove-Job".

Get-Job –Name GetFileList | Remove-Job

Tai pašalins jį iš "Get-Job" sugrąžintų darbų sąrašo.

Image
Image

Nuotolinis darbas

Prieš keletą pamokų mes pažvelgėme, kaip mes galime naudoti atkūrimą, norėdami paleisti "PowerShell" komandas nuotolinėje mašinoje, naudodamiesi "Invoke-Command", bet ar žinojote, kad galite naudoti "Invoke-Command", kad pradėtumėte pašalinimo darbą fone? Norėdami tai padaryti, tiesiog pridėkite parametro -AsJob į savo komandos pabaigą:

Invoke-Command -ComputerName Flash,Viper -Credential administrator -ScriptBlock {gci} –AsJob

Tai buvo paprastas komandas ir turėtų būti baigtas vykdyti dabar, kad galėtume pažvelgti į mūsų darbo statusą.
Tai buvo paprastas komandas ir turėtų būti baigtas vykdyti dabar, kad galėtume pažvelgti į mūsų darbo statusą.
Hmm, atrodo, kad nepavyko. Tai atveda mane į mano pirmąją "Gutcha" darbą. Kai kuriame "PowerShell" kuriate bet kokio tipo naują darbą, jis sukuria dar vieną tėvų darbą be vieno vaiko darbo kiekvienam kompiuteriui, kuriame dirbate. Kai naudojate "Get-Job" cmdlet, tai parodo tik tėvų užduotis, o valstybinis turtas yra blogiausias scenarijus, o tai reiškia, kad net jei komanda nepavyko paleisti viename iš šimtų kompiuterių, tėvų darbų būsena pasakys nepavyko. Norėdami pamatyti vaikų darbo vietų sąrašą, turite naudoti "IncludeChildJob" parametrą.
Hmm, atrodo, kad nepavyko. Tai atveda mane į mano pirmąją "Gutcha" darbą. Kai kuriame "PowerShell" kuriate bet kokio tipo naują darbą, jis sukuria dar vieną tėvų darbą be vieno vaiko darbo kiekvienam kompiuteriui, kuriame dirbate. Kai naudojate "Get-Job" cmdlet, tai parodo tik tėvų užduotis, o valstybinis turtas yra blogiausias scenarijus, o tai reiškia, kad net jei komanda nepavyko paleisti viename iš šimtų kompiuterių, tėvų darbų būsena pasakys nepavyko. Norėdami pamatyti vaikų darbo vietų sąrašą, turite naudoti "IncludeChildJob" parametrą.
Jei žiūrėsite arčiau, pamatysite, kad viename kompiuteryje darbas iš tikrųjų buvo nesėkmingas, o tai atvedė mus į kitą ghetą. Kai bandysite gauti rezultatus už darbą, jei nurodysite tėvų darbo pavadinimą ar ID, "PowerShell" grąžins duomenis iš visų vaiko darbo vietų. Problema ta, kad jei buvo viena iš vaiko darbo vietų klaida, mes turėsime palikti raudoną tekstą.
Jei žiūrėsite arčiau, pamatysite, kad viename kompiuteryje darbas iš tikrųjų buvo nesėkmingas, o tai atvedė mus į kitą ghetą. Kai bandysite gauti rezultatus už darbą, jei nurodysite tėvų darbo pavadinimą ar ID, "PowerShell" grąžins duomenis iš visų vaiko darbo vietų. Problema ta, kad jei buvo viena iš vaiko darbo vietų klaida, mes turėsime palikti raudoną tekstą.
Yra du būdai, kaip išspręsti šią problemą. Pirma, jei žinote, kokius kompiuterius norite gauti rezultatus, galite tiesiog naudoti "ComputerName" parametrą "Recieve -Job" cmdlet.
Yra du būdai, kaip išspręsti šią problemą. Pirma, jei žinote, kokius kompiuterius norite gauti rezultatus, galite tiesiog naudoti "ComputerName" parametrą "Recieve -Job" cmdlet.

Get-Job –Id 3 | Receive-Job –Keep –ComputerName Viper

Image
Image

Arba galite gauti rezultatus iš konkretaus vaiko darbo su savo darbo ID.

Get-Job -Id 3 –IncludeChildJob

Image
Image

Get-Job -Id 5 | Receive-Job –Keep

Image
Image

WMI darbai

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

Image
Image
Deja, tai reiškia, kad jiems taip pat priklauso tos pačios "gotchas", kurias minėjau skyriuje "Nuotoliniai darbai".
Deja, tai reiškia, kad jiems taip pat priklauso tos pačios "gotchas", kurias minėjau skyriuje "Nuotoliniai darbai".

Planiniai darbai

Paskutinės trys darbo vietos, į kurias mes pažvelgėme, nebuvo ilgalaikiai, o tai reiškia, kad jie yra prieinami tik jūsų dabartiniame seanse. Iš esmės tai reiškia, kad jei pradėsite darbą ir atidarysite kitą "PowerShell" konsolę, paleiskite "Get-Job", jūs nematysite jokių darbo vietų. Tačiau sugrįžk prie konsolės, į kurią išjungėte darbą, galėsite pamatyti jo būseną. Tai prieštarauja "Scheduled Jobs", kuris yra patvarios. Iš esmės numatytasis darbas yra scenarijų blokas, kuris veikia pagal tvarkaraštį. Anksčiau toks pat poveikis galėjo būti pasiektas naudojant "Windows Task Scheduler", kuris tikrai yra tai, kas vyksta po gaubtu. Norėdami sukurti naują numatytą darbą, atlikite šiuos veiksmus:

Register-ScheduledJob -Name GetEventLogs -ScriptBlock {Get-EventLog -LogName Security -Newest 100} -Trigger (New-JobTrigger -Daily -At 5pm) -ScheduledJobOption (New-ScheduledJobOption -RunElevated)

Šioje komandoje gana daug vyksta, todėl pasidalinkime.

  • Pirma, mes suteikiame savo numatytą darbą "GetEventLogs" pavadinimą.
  • Tada mes sakome, kad kai suaktyvinamas, mes norime, kad jis paleistų nurodyto scenarijaus bloko turinį, kuris iš esmės gauna naujausius 100 įrašų apie saugą įvykį.
  • Tada mes nurodome trigerį. Kadangi trigerio parametras įveda trigerio objektą kaip įvestį, mes panaudojome komandą "tęsinys", kad sugeneruotumėte trigerį, kuris kiekvieną dieną bus 5 kartus per dieną.
  • Kadangi mes susiduriame su įvykių žurnalu, turime paleisti kaip administratorius, kurį mes galime nurodyti, sukurdami naują ScheduledJobOption objektą ir perduodamas jį į ScheduledJobOption parametrą.
Kadangi tai yra šiek tiek kitokio pobūdžio darbas, taip pat reikės naudoti kitą komandą, kad galėtumėte peržiūrėti visų numatytų darbų sąrašą kompiuteryje.
Kadangi tai yra šiek tiek kitokio pobūdžio darbas, taip pat reikės naudoti kitą komandą, kad galėtumėte peržiūrėti visų numatytų darbų sąrašą kompiuteryje.

Get-ScheduledJob

Rekomenduojamas: