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
I ostanite u tijeku cijele serije cijeli tjedan.
Korištenje Batch Cmdlets
Ranije u seriji, kada smo vas upoznali s cjevovodom, pokazali smo kako možete preuzeti objekte koje jedan cmdlet izlaze i proslijediti ih kao unos u drugi cmdlet pomoću ovakvog:
Get-Process -Name notepad | Stop-Process
To bi ubila svaki proces pod nazivom "Notepad". Ali vjerojatno se pitate kako PowerShell može uništiti svaku instancu Notepada jednim naredbom. Odgovor leži unutar pomoći cmdeta Stop-Processa.
help Stop-Process –Full
Ako pogledate zadnju liniju koda u sekciji sintakse, možete vidjeti da parametar InputObject prihvaća objekt vrste Proces , a kad god vidite vrstu koja slijedi dva kvadratna zagrada, to znači da parametar prihvaća jedan ili više od prethodnog tipa. U tom slučaju prihvaća jedan ili više procesnih objekata. Tehnički, reći ćemo da InputObject cmdlet prihvaća postupak red, Kad god imate cmdlet koji podržava serijske operacije na ovaj način, koristite ga. Ovo je izbor broj jedan.
Upotreba WMI-a
Iako WMI nije najbolji komad tehnologije koji se isporučuje iz Microsoftovog sjedišta, dolazi na drugi način na popisu postupaka s zbirkama objekata. Mogli bismo lako nabaviti popis pokrenutih procesa iz klase Win32_Process tako da:
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
nabrajanje
Ako ne uspijete ostale dvije metode, ako morate nešto učiniti s hrpom objekata, možete nabrojati cijeli objekt i djelovati na svaki pojedini objekt. Prvo morate pronaći metodu koju biste upotrijebili za zaustavljanje jednog postupka.
Get-Process | Get-Member -MemberType Method
Get-Process -Name notepad | ForEach-Object -Process {$_.Kill()}
Sažetak
Izbor jedan
Get-Process -Name notepad | Stop-Process
Izbor dva
Get-WmiObject -Class Win32_Process -Filter “name=’notepad.exe'” | Invoke-WmiMethod -Name Terminate
Izbor tri
Get-Process -Name notepad | ForEach-Object -Process {$_.Kill()}
To je sve za ovo vrijeme ljudi, vidimo se sljedeći tjedan za više PowerShell zabave.