Friday, September 23, 2016

1 - Powershell Where filtri (AZ)

PowerShell WHERE filtri

      Powershell-ə işləyənlər yaxşı bilirlər ki, əsas və ən çox istifadə olunan filtrdir. Bu səbəbdən də WHERE filtrindən başlamaq istədim.
     Where filtri istənilən əmr və ya funksiya zamanı axtarışı daha asanlaşdırmaq üçün ən effektiv vasitələrdən biridir. 
        WHERE filtrini ayni zamanda ? işarəsi ilə də əvəz etmək olar. Tamamilə eyni şeydir.

Filtrin yazılma qaydası:   | where {}    

$_.   sütunun başlığını göstərmək üçündür.

Məsələn:

get-service komandasını yazdığımızda kompyuterdə olan servislərin siyahısı gələcək


where filtri ilə servislərin içində bizə lazım olan məlumatları axtarıb tapaq.
Məsələn: bizə lazımdər ki, status bölməsindən Running olanları listələyək. Bu zaman 
get-service | where {$_.status -eq "Running"} yazmaq lazımdır. 
Burada -eq  Equal yəni bərabər deməkdir. Yəni, Status bölməsindəki yazı Running-ə bərabərdir.
-eq yerinə -like komandasından da istifadə etmək olar. Bu zaman artıq -like "Run* yazacıq. Burada qoyular * işarəsi hər hansı bir məlumat deməkdir. Yəni, ilk üç hərfi run-dır və arxasında nə yazı olur-olsun fərq etməz.
get-service | where {$_.status -like "Run*"}

Indi isə iki və daha artıq filtrdən istifadə edək. 
Bu zaman artıq where { } daxilinə ( ) mötərizə əlavə edərək -and və yaxud da -or əmrlərindən istifadə edəcəyik. 
məsələn:
get-service | where { ( ) -and ( )} və yaxud get-service | where { ( ) -or ( )}
Mötərizələrin içinə isə yenidən əvvəlki qayda ilə axtarmaq istədiyimiz məlumatı və yerini qeyd edirik.
get-service | where {($_.status -eq "Running") -and ($_.name -like "win*")}
Bu o deməkdir ki, bizə sistem həm Status sütunundan yalnizca Running olanları, Name sütunundan isə Başlığı Win olan bütün servislərin siyahısını verəcək.

Bundan başqa daha da dərinlərə gedərək ikidən çox axtarış filtrindən istifadə etmək istəsək bu zaman ( ) mötərizələri yaddan çıxarmayaq və hər bir mötərizə arasında -and vəyaxud da -or komanlarının yerləşməsini nəzərə alaq. Əlavə olaraq bildirim ki, riyazi qaydalara əsasən mötərizələrin yerləşməsi və əsasların da yenidən mötərizə daxilinə düzgün alınması kodun nəticəsinini dəyişməsinə gətirib çıxaracaq.
Məsələn:
get-service | where { ( ) -and  ( ( )-or ( ) )    }
Burada fikir versəniz -or komandası yerləşdiyi mötərizələr özləri də mötərizə daxilinə alınıblar. Bu o deməkdir ki, birinci mötərizə axtarış etdikdən sonra özünə digər mötərizələrdən hər hansı birinin nəticəsini birləşdirəcək.
get-service | where { ($_.status -eq "Running" ) -and  ( ($_.name -like "win*")-or ($_.displayname -like "win*" ) ) }

Əlavə olaraq qeyd edim ki, birbaşa adı bilirsinizsə get-service əmrinin yanında həmin adın Name bölməsində olduğu kimi eynilə yazılması da where filtrsiz yalnız bu servisi göstərəcək.


___________________________________________________
Daha ətraflı videoda:



No comments:

Post a Comment