Jaa tämä viesti:

Tämä on osa jatkuvaa blogisarjaa, jonka on kirjoittanut Adam Gordon. Adam käy joka viikko läpi yhden PowerShell-komennon ja näyttää, milloin ja miten kutakin komentoa kannattaa käyttää. Tällä viikolla Adam käsittelee Where-Objectia.

Kun käyttää Where-Objectia

Cdlet Where-Object valitsee sille välitetystä objektien kokoelmasta objekteja, joilla on tietyt ominaisuuksien arvot.

Windows PowerShell 3.0:sta alkaen Where-Object-komennon voi rakentaa kahdella eri tavalla.

  • Script block. Skriptilohkon avulla voit määrittää ominaisuuden nimen, vertailuoperaattorin ja ominaisuuden arvon. Where-Object palauttaa kaikki objektit, joiden kohdalla skriptilohkon lauseke on tosi.
  • Vertailulauseke. Voit myös kirjoittaa vertailulausekkeen, joka muistuttaa paljon enemmän luonnollista kieltä.

How to use Where-Object

Get stopped services:

(1.) Get-Service | Where-Object {$_.Status -eq ”Pysäytetty”}

(2.) Get-Service | where Status -eq ”Pysäytetty”

Näillä komennoilla saadaan luettelo kaikista tällä hetkellä pysäytetyistä palveluista.

Automaattimuuttuja $_ edustaa jokaista kohdetta, joka siirretään Where-Object-cmdletille.

(1.) komento käyttää komentosarjalohkon muotoa, (2.) komento käyttää vertailulausekkeen muotoa.

Hakee prosessit työjoukon perusteella:

Get-Process | Where-Object {$_.WorkingSet -GT 25000*1024}
Get-Process | Where-Object WorkingSet -GT (25000*1024)

Näillä komennoilla luetellaan prosessit, joiden työmäärä on suurempi kuin 25 000 kilotavua (KB).

Koska WorkingSet-ominaisuuden arvo tallennetaan tavuina, arvo 25 000 kerrotaan 1024:llä.

Skriptilohko- ja lausekesyntaksi vastaavat toisiaan, ja niitä voidaan käyttää keskenään vaihdettavina.

Käytä vertailulausekemuotoa:

(1.) Get-Process | Where-Object -Property Handles -GE -Value 1000

(2.) Get-Process | where Handles -GE 1000

Tässä esimerkissä näytetään, miten Where-Object-cmdletin uutta vertailulausekemuotoa käytetään.

(1.) komento käyttää vertailulausekemuotoa. Tässä komennossa ei käytetä peitenimiä ja kaikki parametrit sisältävät parametrin nimen.

(2.) komento on vertailukomennon muodon luonnollisempi käyttö. Where-alias korvaa Where-Object-komentokomennon nimen ja kaikki valinnaisten parametrien nimet jätetään pois.

Käytä useita ehtoja:

Get-Module -ListAvailable | where {($_.Name -notlike ”Microsoft*” -and $_.Name -notlike ”PS*”) -and $_.HelpInfoUri}

Komento käyttää Get-Module-komentokomennon -ListAvailable-parametria saadakseen kaikki tietokoneen moduulit.

Putkioperaattori (|) lähettää moduulit Where-Object-komentokomennolle, joka hakee moduulit, joiden nimi ei ala Microsoftilla tai PS:llä ja joilla on arvo HelpInfoURI-ominaisuudelle, joka kertoo PowerShellille, mistä moduulin päivitetyt ohjetiedostot löytyvät.

Vertailulausekkeet on yhdistetty loogisella And-operaattorilla.

Esimerkissä käytetään komentolohkon komentomuotoa.

Huomautus: Loogiset operaattorit, kuten And ja Or, ovat voimassa vain komentolohkoissa. Niitä ei voi käyttää Where-Object-komennon vertailulausekemuodossa.

Opi viime viikon komento: Get-WinEvent.

Tarvitsetko PowerShell-koulutusta? Tutustu ITProTV:n PowerShell-tietotekniikan verkkokoulutuksiin.

Vastaa

Sähköpostiosoitettasi ei julkaista.