Megosztás:

Ez egy Adam Gordon által írt, folyamatban lévő blogsorozat része. Adam minden héten végigvezet egy-egy PowerShell-parancson, bemutatva, hogy mikor és hogyan kell használni az egyes parancsokat. Ezen a héten Adam a Where-Object paranccsal foglalkozik.

Mikor használjuk a Where-Object parancsot

A Where-Object cmdlet olyan objektumokat választ ki a neki átadott objektumok gyűjteményéből, amelyek bizonyos tulajdonságértékekkel rendelkeznek.

A Windows PowerShell 3.0-tól kezdve a Where-Object parancsot kétféleképpen lehet felépíteni.

  • Script block. A szkriptblokk segítségével megadhatja a tulajdonság nevét, egy összehasonlító operátort és a tulajdonság értékét. A Where-Object visszaadja az összes olyan objektumot, amelyre a szkriptblokk utasítása igaz.
  • Összehasonlító utasítás. Írhat összehasonlító utasítást is, ami sokkal inkább hasonlít a természetes nyelvre.

How to use Where-Object

Get stopped services:

(1.) Get-Service | Where-Object {$_.Status -eq “Stopped”}

(2.) Get-Service | where Status -eq “Stopped”

Ezekkel a parancsokkal az összes jelenleg leállított szolgáltatás listáját kapjuk meg.

A $_ automatikus változó minden olyan objektumot jelöl, amelyet a Where-Object cmdletnek adunk át.

Az (1.) parancs a szkriptblokk formátumot, a (2.) parancs az összehasonlító utasítás formátumot használja.

Folyamatok lekérdezése a munkakészlet alapján:

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

Ezek a parancsok felsorolják azokat a folyamatokat, amelyek munkakészlete nagyobb, mint 25000 kilobájt (KB).

Mivel a WorkingSet tulajdonság értéke bájtban van tárolva, a 25 000-es értéket megszorozzuk 1024-gyel.

A parancsblokk és az utasítás szintaxisa egyenértékű, és felcserélhető.

Az összehasonlító utasítás formátumát használja:

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

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

Ez a példa a Where-Object cmdlet új összehasonlító utasítás formátumának használatát mutatja.

A (1st) parancs az összehasonlító utasítás formátumát használja. Ebben a parancsban nem használunk aliasokat, és minden paraméter tartalmazza a paraméter nevét.

A (2.) parancs az összehasonlítási parancs formátumának természetesebb használata. A where alias helyettesíti a Where-Object cmdlet nevét, és minden opcionális paraméternév elhagyásra kerül.

Minden feltétel használata:

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

A parancs a Get-Module cmdlet -ListAvailable paraméterét használja a számítógépen lévő összes modul lekérdezéséhez.

A csővezeték-operátor (|) elküldi a modulokat a Where-Object cmdletnek, amely megszerzi azokat a modulokat, amelyek neve nem Microsoft vagy PS kezdőbetűvel kezdődik, és rendelkeznek a HelpInfoURI tulajdonság értékével, amely megmondja a PowerShellnek, hogy hol keresse a modul frissített súgófájljait.

Az összehasonlító utasításokat az And logikai operátor köti össze.

A példa a parancsblokkok parancsformátumát használja.

FIGYELEM: A logikai operátorok, például az And és az Or csak a parancsblokkokban érvényesek. A Where-Object parancs összehasonlító utasítás formátumában nem használhatók.

Tanulja meg a múlt heti parancsot: Get-WinEvent.

Kell PowerShell képzés? Tekintse meg az ITProTV PowerShell online informatikai tanfolyamát.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.