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
Ir visada sekite visą seriją likusiai savaitę.
Naudojant paketo modulius
Anksčiau serijoje, kai pristatėme jus prie dujotiekio, parodėme, kaip jūs galite pasiimti objektus, kurie yra vienas cmdlet išvestis, ir perduoda juos kaip įvedimą kitai cmdlet, naudodami tokį patį:
Get-Process -Name notepad | Stop-Process
Tai užmuštų bet kokį procesą pavadinimu "notepad". Bet jūs tikriausiai įdomu, kaip "PowerShell" gali nužudyti kiekvieną "notepad" egzempliorių su viena komanda. Atsakymas yra Stop-Process cmdlet pagalbos.
help Stop-Process –Full
Jei žiūrite į paskutinę kodo eilutę sintaksės skyriuje, galite pamatyti, kad parametras "InputObject" priima "Process " objektą ir kiekvieną kartą, kai matote tipą, po kurio eina du kvadratinės skliaustus, tai reiškia, kad parametras priima vienas ar daugiau ankstesnio tipo. Tokiu atveju jis priima vieną ar daugiau proceso objektų. Techniškai mes sakytume, kad "InputObject" cmdlet priima procesą masyvas. Kiekvieną kartą, kai turite tokį komandą, kuri palaiko partijos operacijas, naudokite ją. Tai yra pasirinkimo numeris vienas.
WMI naudojimas
Nors WMI nėra geriausias technologijos gabalas, siunčiamas iš "Microsoft" štabo, jis ateina antrajame sąraše, kaip dirbti su objektų kolekcijomis. Mes galime lengvai gauti paleisti procesų sąrašą iš Win32_Process klasės, tokiu būdu:
Get-WmiObject –Class Win32_Process
Get-WmiObject –Class Win32_Process | Get-Member
Get-WmiObject -Class Win32_Process -Filter “name=’notepad.exe'” | Invoke-WmiMethod -Name Terminate
Numeravimas
Jei nebus du kiti metodai, jei turite kažką daryti su daugybe objektų, galite išvardyti visą objektą ir veikti kiekvienam objektui. Pirmiausia turite rasti metodą, kurį naudosite norėdami sustabdyti vieną procesą.
Get-Process | Get-Member -MemberType Method
Get-Process -Name notepad | ForEach-Object -Process {$_.Kill()}
Santrauka
Pasirinkimas vienas
Get-Process -Name notepad | Stop-Process
Pasirinkimas du
Get-WmiObject -Class Win32_Process -Filter “name=’notepad.exe'” | Invoke-WmiMethod -Name Terminate
Trečias pasirinkimas
Get-Process -Name notepad | ForEach-Object -Process {$_.Kill()}
Visa tai tinka šiai dienai žmonėms, kitą savaitę pamatysite daugiau "PowerShell" linksmybių.