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}
Get-Job –Name GetFileList | Stop-Job
Get-Job –Name GetFileList | Receive-Job –Keep
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.
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
Get-Job –Id 3 | Receive-Job –Keep –ComputerName Viper
Arba galite gauti rezultatus iš konkretaus vaiko darbo su savo darbo ID.
Get-Job -Id 3 –IncludeChildJob
Get-Job -Id 5 | Receive-Job –Keep
WMI darbai
WMI darbai yra tokie patys kaip nuotoliniai darbai, reikalaujantys, kad į "Get-WmiObject" cmdlet būtų įtrauktas tik parametras -AsJob.
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ą.
Get-ScheduledJob