Nezabudnite si prečítať predchádzajúce články v sérii:
- Naučte sa ako automatizovať systém Windows pomocou nástroja PowerShell
- Naučiť sa používať Cmdlets v PowerShell
- Učenie ako používať objekty v PowerShell
- Formátovanie učenia, filtrovanie a porovnávanie v systéme PowerShell
- Naučte sa používať Remoting v PowerShell
- Použitie nástroja PowerShell na získanie informácií o počítači
- Práca s kolekciami v systéme PowerShell
A zostávajte celú týždeň na zvyšok série.
Pracovné pozadie
Doteraz bolo všetko, čo som vám uviedlo v systéme PowerShell, synchrónne, čo znamená, že niečo napíšeme do shella a nemôžeme robiť veľa, kým príkaz neskončí. Toto je miesto, kde prídu pozadia úloh. Ak chcete spustiť pozadie, úloha jednoducho odovzdať blok skriptu do cmdlet Štart-úloha.
Start-Job –Name GetFileList –Scriptblock {Get-ChildItem C: –Recurse}
Get-Job –Name GetFileList | Stop-Job
Get-Job –Name GetFileList | Receive-Job –Keep
Get-Job –Name GetFileList | Remove-Job
Tým sa odstráni zo zoznamu úloh vrátených nástrojom Get-Job.
Vzdialené úlohy
Pred pár hodinami sme sa pozreli na to, ako môžeme použiť remoting na vykonanie príkazov PowerShell na vzdialenom počítači pomocou Invoke-Command, ale viete, že môžete použiť aj Invoke-Command na spustenie remoting úlohy na pozadí? Za týmto účelom jednoducho pridajte parameter -AsJob na koniec príkazu:
Invoke-Command -ComputerName Flash,Viper -Credential administrator -ScriptBlock {gci} –AsJob
Get-Job –Id 3 | Receive-Job –Keep –ComputerName Viper
Get-Job -Id 3 –IncludeChildJob
Get-Job -Id 5 | Receive-Job –Keep
Pracovné miesta služby WMI
Pracovné úlohy služby WMI sú rovnaké ako pracovné miesta na diaľku a vyžadujú sa, aby bol do zdielacieho programu Get-WmiObject pridaný iba parameter -AsJob.
Plánované úlohy
Posledné tri druhy pracovných miest, na ktoré sme sa pozreli, neboli pretrvávajúce, čo znamená, že sú k dispozícii len v aktuálnej relácii. V podstate to znamená, že ak odštartujete prácu a potom otvoríte inú PowerShell konzolu a spustite Get-Job, neuvidíte žiadne úlohy. Vráťte sa späť na konzolu, na ktorú ste odhodili úlohu, budete môcť vidieť jej stav. To je na rozdiel od Plánovaných úloh, ktoré sú pretrvávajúce, Plánovaná úloha je v podstate skript bloku, ktorý beží podľa plánu. V minulosti by sa rovnaký vplyv mohol dosiahnuť pomocou Plánovača úloh systému Windows, čo je skutočne to, čo sa deje pod kapotou. Ak chcete vytvoriť novú naplánovanú úlohu, postupujte nasledovne:
Register-ScheduledJob -Name GetEventLogs -ScriptBlock {Get-EventLog -LogName Security -Newest 100} -Trigger (New-JobTrigger -Daily -At 5pm) -ScheduledJobOption (New-ScheduledJobOption -RunElevated)
V tomto príkaze sa deje veľa vecí, a tak to rozdelíme.
- Najprv uvádzame názov GetEventLogs na našu plánovanú prácu.
- Potom ho povieme, že pri spúšťaní chceme spustiť obsah zadaného bloku skriptov, ktorý v podstate získa najnovších 100 záznamov denníka udalostí zabezpečenia.
- Ďalej zadáme spúšťač. Keďže parametr spúšťania zaberá ako vstup spúšťací objekt, použili sme zátvorový príkaz na generovanie spúšťača, ktorý bude vypínať každý deň o 5:00.
- Keďže ide o protokol udalostí, musíme bežať ako správca, ktorý môžeme špecifikovať vytvorením nového objektu ScheduledJobOption a jeho odovzdaním do parametra ScheduledJobOption.
Get-ScheduledJob