Obavezno pročitajte prethodne članke serije:
- Saznajte kako automatizirati sustav Windows pomoću programa PowerShell
- Učenje pomoću Cmdletsa u PowerShellu
- Učenje kako koristiti objekte u PowerShellu
- Oblikovanje učenja, filtriranje i uspoređivanje u PowerShellu
- Saznajte kako koristiti Remoting u PowerShellu
- Upotreba programa PowerShell za dobivanje informacija o računalu
- Rad s zbirkama u PowerShellu
I ostanite u tijeku cijele serije cijeli tjedan.
Pozadinski poslovi
Do sada sve što sam vam pokazao u PowerShellu bio je sinkroniziran, što znači da upisujemo nešto u ljusku i stvarno ne možemo puno učiniti sve dok naredba ne završi. Tu dolaze pozadinski poslovi. Za početak pozadine posao jednostavno prolazi skriptni blok u cmdlet Start-Job.
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
To će je ukloniti s popisa poslova koje dobije Get-Job.
Udaljeni poslovi
Prije nekoliko sati smo pogledali kako možemo koristiti remotiranje za izvršavanje naredbi PowerShell na udaljenom računalu koristeći Invoke-Command, ali jeste li znali da možete koristiti Invoke-Command da započnete remoting posao u pozadini? Da biste to učinili, jednostavno dodajte parametar -AsJob na kraj naredbe:
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
WMI poslovi
WMI poslovi mnogo su isti kao i udaljeni poslovi, pri čemu je potreban samo parametar -AsJob koji se dodaje cmdletu Get-WmiObject.
Planirani poslovi
Posljednje tri vrste poslova koje smo gledali nisu bile uporni, što znači da su dostupne samo u trenutačnoj sesiji. Uglavnom, to znači da ako započnete posao, a zatim otvorite drugu PowerShell konzolu i pokrenete Get-Job, nećete vidjeti nikakve poslove. Međutim, vratite se na konzolu s kojeg ste isključili posao, moći ćete vidjeti njegov status. Ovo je za razliku od zakazanih radnih mjesta koja su ustrajni, U osnovi, zakazani posao je blok skripte koji radi na rasporedu. U prošlosti, isti utjecaj mogao je postići pomoću Windows Task Scheduler, što je zapravo ono što se događa ispod nape. Za izradu novog zakazanog posla učinit ćemo sljedeće:
Register-ScheduledJob -Name GetEventLogs -ScriptBlock {Get-EventLog -LogName Security -Newest 100} -Trigger (New-JobTrigger -Daily -At 5pm) -ScheduledJobOption (New-ScheduledJobOption -RunElevated)
Dosta se toga događa u toj zapovijedi pa ćemo ga slomiti.
- Prvo, dajemo našem zakazanom zadatku ime GetEventLogs.
- Zatim nam kažemo da kada se aktivira, želimo da pokrenemo sadržaj navedenog skriptnog bloka koji u osnovi dobiva najnovije 100 zapisa dnevnika događaja Sigurnost.
- Zatim ćemo odrediti okidač. Budući da parametar okidača uzima aktivni okidač kao ulaz, koristili smo zagradnu naredbu za generiranje okidača koji će izaći svaki dan u 5PM.
- Budući da se radi o zapisniku događaja, moramo se izvoditi kao administrator, što možemo odrediti izradom novog ciljanog objekta i dostavljanjem parametra ScheduledJobOption.
Get-ScheduledJob