PowerShell Nerede Nesne | PowerShell Where Nesnesi Oluşturmanın İki Yolu


PowerShell Where Nesnesine Giriş

Where-Object, belirli bir nesneyi, dosyayı, işlemi, hizmetleri vb. o nesnenin, dosyanın, işlemin, hizmetlerin belirli özelliklerine göre seçmemize veya almamıza olanak tanır. Bu özellikler boyut, isim, tarih vb. olabilir. Size bir örnek vereyim, diyelim ki 1000 dosya içeren bir klasörünüz var ve en son oluşturulan dosya veya ilk oluşturulan dosya üzerinde bir işlem yapmak istiyorsunuz. Böylece dosya tarihini akıllıca seçebiliriz. Başka bir örnek, tüm dosyalar arasında en büyük dosyayı seçmek istediğimizi varsayalım, böylece dosyanın boyutunun koşulunu nereye koyabiliriz. Ayrıca herhangi bir hizmet, paket, süreç vb. hakkında bilgi almak için koşullar da yazabiliriz. Bu konuda PowerShell Where-Object hakkında bilgi edineceğiz.

Powershell'de Nerede Nesnesi komutu nasıl oluşturulur?

Aşağıda verilen Where-Object komutunu oluşturmanın başlıca iki yolu vardır.

1. Komut dosyası bloğu

Özellik adını, karşılaştırma operatörünü ve özellik değerini tanımlamak için Script bloğunu kullanabiliriz. Where-object komutu bloğun doğru olduğu nesneleri kontrol edecek ve döndürecektir.

Get-Process | Where-Object {comparison condition}

2. Karşılaştırma beyanı

Bu şekilde, herhangi bir normal programlamayı kullandığımız gibi doğrudan karşılaştırmayı kullanabiliriz.

Get-Process | Where-Object condition

Sözdizimi:

Tüm söz dizimini ve parametreleri almanın çok basit bir yolu aşağıdaki komutu çalıştırmaktır. Aşağıda verilen söz dizimlerinin tümü farklı durumlarda kullanılacaktır. Bunlardan bazılarını tartışacağız.

Get-Help Where-Object -full

Where-Object [-Property] <Property like date,size etc> [[-Value] <Object>] [-InputObject <psobject>] [-EQ] [<CommonParameters>]
Where-Object [-FilterScript] <Here we write script containing conditions> [-InputObject <psobject>] [<CommonParameters>]
Where-Object [-Property] <Property like date,size etc> [[-Value] <Object>] -GE [-InputObject <psobject>] [<CommonParameters>]
Where-Object [-Property] <Property like date,size etc> [[-Value] <Object>] -CEQ [-InputObject <psobject>] [<CommonParameters>]
Where-Object [-Property] <Property like date,size etc> [[-Value] <Object>] -NE [-InputObject <psobject>] [<CommonParameters>]
Where-Object [-Property] <Property like date,size etc> [[-Value] <Object>] -CNE [-InputObject <psobject>] [<CommonParameters>]
Where-Object [-Property] <Property like date,size etc> [[-Value] <Object>] -GT [-InputObject <psobject>] [<CommonParameters>]
Where-Object [-Property] <Property like date,size etc> [[-Value] <Object>] -CGT [-InputObject <psobject>] [<CommonParameters>]
Where-Object [-Property] <Property like date,size etc> [[-Value] <Object>] -LT [-InputObject <psobject>] [<CommonParameters>]
Where-Object [-Property] <Property like date,size etc> [[-Value] <Object>] -CLT [-InputObject <psobject>] [<CommonParameters>]
Where-Object [-Property] <Property like date,size etc> [[-Value] <Object>] -CGE [-InputObject <psobject>] [<CommonParameters>]
Where-Object [-Property] <Property like date,size etc> [[-Value] <Object>] -LE [-InputObject <psobject>] [<CommonParameters>]
Where-Object [-Property] <Property like date,size etc> [[-Value] <Object>] -CLE [-InputObject <psobject>] [<CommonParameters>]
Where-Object [-Property] <Property like date,size etc> [[-Value] <Object>] -Like [-InputObject <psobject>] [<CommonParameters>]
Where-Object [-Property] <Property like date,size etc> [[-Value] <Object>] -CLike [-InputObject <psobject>] [<CommonParameters>]
Where-Object [-Property] <Property like date,size etc> [[-Value] <Object>] -NotLike [-InputObject <psobject>] [<CommonParameters>]
Where-Object [-Property] <Property like date,size etc> [[-Value] <Object>] -CNotLike [-InputObject <psobject>] [<CommonParameters>]
Where-Object [-Property] <Property like date,size etc> [[-Value] <Object>] -Match [-InputObject <psobject>] [<CommonParameters>]
Where-Object [-Property] <Property like date,size etc> [[-Value] <Object>] -CMatch [-InputObject <psobject>] [<CommonParameters>]
Where-Object [-Property] <Property like date,size etc> [[-Value] <Object>] -NotMatch [-InputObject <psobject>] [<CommonParameters>]
Where-Object [-Property] <Property like date,size etc> [[-Value] <Object>] -CNotMatch [-InputObject <psobject>] [<CommonParameters>]
Where-Object [-Property] <Property like date,size etc> [[-Value] <Object>] -Contains [-InputObject <psobject>] [<CommonParameters>]
Where-Object [-Property] <Property like date,size etc> [[-Value] <Object>] -CContains [-InputObject <psobject>] [<CommonParameters>]
Where-Object [-Property] <Property like date,size etc> [[-Value] <Object>] -NotContains [-InputObject <psobject>] [<CommonParameters>]
Where-Object [-Property] <Property like date,size etc> [[-Value] <Object>] -CNotContains [-InputObject <psobject>] [<CommonParameters>]
Where-Object [-Property] <Property like date,size etc> [[-Value] <Object>] -In [-InputObject <psobject>] [<CommonParameters>]
Where-Object [-Property] <Property like date,size etc> [[-Value] <Object>] -CIn [-InputObject <psobject>] [<CommonParameters>]
Where-Object [-Property] <Property like date,size etc> [[-Value] <Object>] -NotIn [-InputObject <psobject>] [<CommonParameters>]
Where-Object [-Property] <Property like date,size etc> [[-Value] <Object>] -CNotIn [-InputObject <psobject>] [<CommonParameters>]
Where-Object [-Property] <Property like date,size etc> [[-Value] <Object>] -Is [-InputObject <psobject>] [<CommonParameters>]
Where-Object [-Property] <Property like date,size etc> [[-Value] <Object>] -IsNot [-InputObject <psobject>] [<CommonParameters>]
Where-Object [-Property] <Property like date,size etc> -Not [-InputObject <psobject>] [<CommonParameters>]

PowerShell Where Nesnesinin Parametreleri

Aşağıda listelenen Parametreler bulunmaktadır.

1. Cİçerir:Tam eşleşme olup olmadığını kontrol eder; bu, yalnızca tam nesne eşleşmesinin işe yaraması durumunda bir nesneyi döndüreceği anlamına gelir.

Bunun için genel sözdizimi aşağıda verilmiştir.

Get-Process | where servicename/processname/etc -CContains "exact matching name

2. CEQ:Aynı özellik değeri aynıysa nesneyi yalnızca o alır

3. CGE: Özellik değeri iletilen değerden büyük veya ona eşitse nesneyi yalnızca o alır.

4. CGT: Özellik değeri iletilen değerden büyükse nesneyi yalnızca o alır. Bu koşulun tamamen büyük/küçük harfe duyarlı olduğunu unutmayın.

5. CIn: Bu, içermeyi kontrol edecektir, yani özellik değeri dahilse nesneyi alır

6. CLE:Bu, iletilen değerden küçük veya ona eşit olup olmadığını kontrol edecektir.

7. CLT:Bu, aktarılan değerden daha azını kontrol edecektir.

8. CLike:Bu, eşleşme özelliğinin değerini kontrol eder ve joker karakterleri de içerir. Ayrıca bu işlem büyük/küçük harfe duyarlıdır.

9. CMatch:Bu özellik normal ifadeleri temel alır. Dolayısıyla, bazı düzenli ifadelerle nerede koşulu kontrol edebiliriz.

10. CNE: Bu komut, aktarılan değerden farklı bir değer bulmaya çalışıyorsak, Where koşuluyla birlikte kullanılacaktır.

11. CNotContains:Özellik değerinin iletilen değerle tam olarak eşleşmemesi durumunda nesneyi alır. Bu komut koşulu büyük/küçük harfe duyarlıdır.

Örnekler

Aşağıda belirtilen PowerShell Where Nesnesinin uygulanmasına yönelik örnekler verilmiştir

Örnek #1

Aşağıdaki örnekte “nginx” isimli servislerin tam eşleşmesini kontrol ediyoruz. Çalışan tüm hizmetleri nginx adıyla döndürür. Lütfen aşağıdaki ekranla birlikte örneğe bakın.

Get-Process | where ProcessName -CContains "nginx"

Örnek #2

Bu komutta, belirli bir sürüme sahip tüm eşleşme paketlerini almak için -eq kullanıyoruz. Öncelikle Get-PackageProvider komutunu çalıştırarak tüm sürümleri görüntülüyoruz ve ardından bir komut dosyası bloğunda tam sürümü atlayarak belirli bir sürümü aradık.

Get-PackageProvider
Get-PackageProvider | Where-Object {$_.Version -eq "3.0.0.1"}
Get-PackageProvider | Where-Object {$_.Version -eq "2.1.3.0"}

Örnek #3

İşte bu örnekte adı “n” ile başlayan çalışan tüm süreçleri bilmek istedik. Çıktıda “düğüm nginx ağ yöneticisi ağları, vb.” görüntülendiğini görebiliriz. Kendi sisteminizde deneyebilirsiniz, sisteminizde çalışan işlemlere göre “n” ile başlayan isimde farklı çıktılar alacaksınız. Bu Where-object örneği script tipini engelliyor.

Get-Process | Where-Object {$_.ProcessName -Match "^n.*"}

Örnek #4

Giriş sırasında iki tür Where-Object olduğunu tartıştığımız gibi, biri blok komut dosyası, diğeri ise caparison'dur. Örnek 3'te blok betiğini tartıştık. Bu örnekte caparison ifade bloğunu anlıyoruz.

Get-Process | Where-Object ProcessName -Match "^n.*"

Çözüm

Bazı nesneleri, dosyaları, süreçleri, hizmetleri vb. belirli koşullara göre getirmek için kullanılan Where-Object, bu koşullar nesnenin, dosyaların, sürecin, hizmetlerin özelliği, adı, boyutu veya tarihi olabilir.

İlgili makaleler