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
A zostávajte celú týždeň na zvyšok série.
Použitie šarží
Predtým v sérii, keď sme vás predstavili do potrubia, ukázali sme vám, ako môžete vziať objekty, ktoré sa dajú vyprodukovať v jednom cmdlet a odovzdať ich ako vstup do iného cmdletu pomocou niečoho podobného:
Get-Process -Name notepad | Stop-Process
Tým by zabili všetky procesy s názvom "poznámkový blok". Ale pravdepodobne sa zaujímate o to, ako je PowerShell schopný zabiť každú inštanciu poznámkového bloku jediným príkazom. Odpoveď spočíva v pomoci stop-process cmdlet.
help Stop-Process –Full
Ak sa pozriete na posledný riadok kódu v sekcii syntaxe, môžete vidieť, že parameter InputObject akceptuje objekt typu Process a vždy, keď uvidíte typ nasledovaný dvoma hranatými zátvorkami, to znamená, že parameter akceptuje jeden alebo viac predchádzajúceho typu. V tomto prípade prijíma jeden alebo viac objektov procesu. Technicky by sme povedali, že cmodlet InputObject akceptuje proces rad, Kedykoľvek máte cmdlet, ktorý týmto spôsobom podporuje dávkové operácie, použite ho. Toto je voľba číslo jedna.
Používanie služby WMI
Aj keď služba WMI nie je najlepšou technológiou na odosielanie z hlavného sídla spoločnosti Microsoft, prišla na druhú stranu v zozname, ako pracovať so zbierkami predmetov. Mohli by sme ľahko získať zoznam bežiacich procesov z triedy Win32_Process takto:
Get-WmiObject –Class Win32_Process
Keďže dotaz WMI vráti vlastný typ objektu, budete musieť hľadať metódu, ktorá môže zastaviť proces, a tak nechá dúchadlo, aby sa dostal do členstva.
Get-WmiObject –Class Win32_Process | Get-Member
Get-WmiObject -Class Win32_Process -Filter “name=’notepad.exe'” | Invoke-WmiMethod -Name Terminate
výpočet
Pokiaľ nedosiahnete ostatné dve metódy, ak musíte urobiť niečo na veľa objektov, môžete vymenovať celý objekt a konať na každom jednotlivom objekte. Najprv musíte nájsť metódu, ktorú by ste použili na zastavenie jedného procesu.
Get-Process | Get-Member -MemberType Method
Get-Process -Name notepad | ForEach-Object -Process {$_.Kill()}
zhrnutie
Voľba jedna
Get-Process -Name notepad | Stop-Process
Voľba dva
Get-WmiObject -Class Win32_Process -Filter “name=’notepad.exe'” | Invoke-WmiMethod -Name Terminate
Výber tri
Get-Process -Name notepad | ForEach-Object -Process {$_.Kill()}
To je všetko pre túto chvíľu ľudia, uvidíme vás budúci týždeň pre viac PowerShell zábava.