Geek skola Uzziniet, kā lietot darbus PowerShell
PowerShell ir četru veidu darba vietas - fona darbi, attālās darba vietas, WMI darba vietas un plānotās darba vietas. Pievienojieties mums, kad mēs uzzinām, kas viņi ir un kā mēs tos varam izmantot.
Noteikti izlasiet iepriekšējos sērijas rakstus:
- Uzziniet, kā automatizēt Windows ar PowerShell
- Mācīšanās lietot Cmdlet PowerShell
- Mācīšanās lietot objektus PowerShell
- Mācību formatēšana, filtrēšana un salīdzināšana programmā PowerShell
- Uzziniet, kā lietot Remoting PowerShell
- Izmantojot PowerShell, lai iegūtu informāciju par datoru
- Darbs ar kolekcijām PowerShell
Un visu nedēļu palieciet pārējo sēriju.
Fona darbavietas
Līdz šim viss, ko esmu jums rādījis PowerShell ietvaros, ir bijis sinhrons, kas nozīmē, ka mēs ierakstām kaut ko čaulā un nevaram daudz darīt, kamēr šī komanda nav pabeigusi izpildi. Tas ir, ja fona darbavietas ienāk. Lai sāktu fonu, darbs vienkārši nodod skriptu bloku Start-Job cmdlet.
Start-Job -Name GetFileList -Scriptblock Get-ChildItem C:
Tagad mēs varam brīvi darīt visu, ko mēs vēlamies apvalkā, kamēr skriptu bloks izpilda fonā.
Kad sākat jaunu darbu, PowerShell izveido jaunu darba objektu, kas pārstāv šo darbu. Visu darba vietu sarakstu var iegūt jebkurā laikā, palaižot Get-Job cmdlet.
Darba objekti informē par darbu statusu. Piemēram, augstāk redzamajā ekrānā mēs redzam, ka mums ir BackgroundJob, ko sauc par GetFileList, kas joprojām darbojas, bet jau ir sācis atgriezt datus. Ja jebkurā brīdī jūs nolemjat, ka darbs ir darbojies pārāk ilgi, jūs varat to viegli apturēt, pievadot to uz Stop-Job.
Get-Job-Name GetFileList | Stop-Job
Tomēr, tiklīdz esat apturējis darbu, neatkarīgi no tā, kādi dati ir saņemti līdz brīdim, kad jūs pārtraucāt darbu, tas joprojām ir pieejams. Tomēr ir gotcha. PowerShell, tiklīdz saņemsiet rezultātus par darbu, viņi tiek dzēsti. Lai tie paliktu, jums ir jānorāda saņemšanas darba parametra saglabāšanas slēdzis.
Get-Job-Name GetFileList | Saņemšana-Job -Keep
Kad esat pabeidzis darbu, vislabāk ir to noņemt. Lai noņemtu darbu, vienkārši ievietojiet to noņemšanas uzdevuma cmdlet.
Get-Job-Name GetFileList | Noņemt-Job
Tas noņems to no darbavietu saraksta, ko atgriezīs Get-Job.
Attālās darba vietas
Pirms dažām stundām mēs noskatījāmies, kā mēs varam izmantot tālvadību, lai izpildītu PowerShell komandas tālvadības ierīcē, izmantojot Invoke-Command, bet vai jūs zinājāt, ka varat izmantot arī Invoke-Command, lai sāktu remoting darbu fonā? Lai to izdarītu, komandas beigās vienkārši pievienojiet parametru -AsJob:
Ielādēt-komandu -ComputerName Flash, Viper -Kvalificēts administrators -ScriptBlock gci -AsJob
Tā bija vienkārša komanda, un tagad tā bija jāpabeidz, lai varētu apskatīt mūsu darba statusu.
Hmm, izskatās, ka tas neizdevās. Tas mani aizved uz pirmo darbu ar darbu. Kad jūs izveidojat jaunu darbu jebkura veida darbībā programmā PowerShell, tas izveido vienu vecāku darbu papildus vienam bērna darbam katram datoram, kurā strādājat. Kad jūs izmantojat Get-Job cmdlet, tas parāda tikai vecākos darbus, un valsts īpašums ir sliktākais scenārijs, kas nozīmē, ka pat tad, ja komanda neizdevās darboties tikai vienā no simts datoriem, vecāku darba stāvoklis teiks neizdevās. Lai redzētu bērnu darbu sarakstu, jums jāizmanto parametrs IncludeChildJob.
Ja paskatīsieties tuvāk, jūs redzēsiet, ka darbs patiešām neizdevās tikai vienā datorā, kas mūs aizved uz nākamo gotcha. Kad jūs mēģināt iegūt rezultātus par darbu, ja norādāt vecāka darba nosaukumu vai ID, PowerShell atgriezīs datus no visiem bērnu darbiem. Problēma ir tā, ka gadījumā, ja kādā no darba vietām ir radusies kļūda, mums paliks sarkans teksts.
Ir divi veidi, kā to apiet. Pirmkārt, ja jūs zināt, kādus datorus vēlaties iegūt, varat vienkārši izmantot cmdlet parametra ComputerName parametru..
Get-Job -Id 3 | Saņemt-Job -Keep -ComputerName Viper
Varat arī iegūt rezultātus no konkrēta bērna darba, izmantojot tā darba ID.
Get-Job -Id 3 -IncludeChildJob
Get-Job -Id 5 | Saņemšana-Job -Keep
WMI darba vietas
WMI darbavietas ir daudz tādas pašas kā attālās darbavietas, pieprasot tikai -AsJob parametru pievienošanai cmdlet Get-WmiObject.
Diemžēl tas nozīmē, ka uz tiem attiecas arī tie paši noteikumi, kurus es minēju sadaļā Attālinātās darba vietas.
Plānotās darba vietas
Pēdējie trīs veidu darbi, kurus mēs apskatījām, nebija noturīgi, kas nozīmē, ka tie ir pieejami tikai jūsu pašreizējā sesijā. Būtībā tas nozīmē, ka, ja jūs atlaidīsiet darbu un pēc tam atverat citu PowerShell konsoli un palaidīsiet Get-Job, jūs neredzēsiet nevienu darbu. Tomēr atgriezieties pie konsoles, no kuras jūs noņēmāt darbu, jūs varēsiet redzēt tā statusu. Tas atšķiras no plānotajām darbavietām ir noturīgi. Būtībā plānotais darbs ir skriptu bloks, kas darbojas grafikā. Agrāk to pašu ietekmi varēja sasniegt, izmantojot Windows uzdevumu plānotāju, kas tiešām notiek zem pārsega. Lai izveidotu jaunu ieplānoto darbu, mēs rīkojamies šādi:
Register-ScheduledJob -Name GetEventLogs -ScriptBlock Get-EventLog -LogName drošība -Newest 100 -Trigger (New-JobTrigger -Dienas -At 17:00) -ScheduledJobOption (New-ScheduledJobOption -RunElevated)
Šajā komandā notiek diezgan daudz, tāpēc izjauciet to.
- Pirmkārt, mēs piešķiram mūsu plānotajam darbam GetEventLogs nosaukumu.
- Tad mēs to sakām, ka, aktivizējot, mēs vēlamies, lai tas darbosies ar norādīto skriptu bloka saturu, kas būtībā saņem jaunākos 100 drošības notikumu žurnāla ierakstus..
- Tālāk mēs norādām sprūdu. Tā kā sprūda parametrs ievada sprūda objektu kā ievadi, mēs izmantojām noklusējuma komandu, lai radītu sprūdu, kas katru dienu izslēdzas plkst..
- Tā kā mēs nodarbojamies ar notikumu žurnālu, mums jādarbojas kā administratoram, ko mēs varam norādīt, izveidojot jaunu ScheduledJobOption objektu un nododot to ScheduledJobOption parametram.
Tā kā tas ir nedaudz atšķirīgs darba veids, jums būs jāizmanto cita komanda, lai ielādētu sarakstu ar visiem plānotajiem darbiem iekārtā..
Get-ScheduledJob
Tas viss ir ar to.