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.