Nesnenin PowerShell'de Özelliği olup olmadığını kontrol edin [5 Yol]


-match Parametresini Kullanma

Bir nesnenin PowerShell'de bir özelliği olup olmadığını kontrol etmek için -match parametresini kullanın.

-match Parametresini kullanın:

$greetings = "Hi"
$name = "Java2blog"

$props = $([ordered]@{
    greetings=$greetings
    name=$name
})

$results = New-Object psobject -Property $props
[bool] ($results.PSobject.Properties.name -match "greetings")

ÇIKTI:

True

Burada, bizim durumumuzda $result olan verilen nesnenin greetings özelliğine sahip olup olmadığını kontrol etmek için -match parametresini kullandık. Artık $result nesnesinin nasıl oluşturulduğunu öğrenmek için bu makaleye başvurabilirsiniz.

-match parametresi eşleşecek ve eğer varsa özellik adını döndürecek, belirtilen özellik yoksa hiçbir şey döndürmeyecektir. Anlamak için aşağıdaki örneklere bakın.

-match Parametresini kullanın:

 $results.psobject.Properties.name -match "greetings"
 $results.psobject.Properties.name -match "first_name"

ÇIKTI:

greetings

Bakın, yalnızca zaten var olan greetings özellik adını aldık ve ikinci komut için first_name'in mevcut olmadığını söyleyen herhangi bir hata veya uyarı almadık. Bu nedenle, özellik eşleşirse True değerini elde etmek amacıyla onu açıkça Boolean'a aktarmak için [bool] kullandık; aksi halde Yanlış.

Veri tipinin açıkça dönüştürüldüğü bu işleme tip dökümü adı verilir. Örneğin, [bool] kullanmak istemiyor ancak Boolean (True/False) cinsinden sonuçlar almak istiyorsak, o zaman aşağıdaki çözüm işimize yarayacaktır.

-contains Parametresini Kullanma

Bir nesnenin PowerShell'de bir özelliği olup olmadığını kontrol etmek için -contains parametresini kullanın.

-contains parametresini kullanın:

$greetings = "Hi"
$name = "Java2blog"

$props = $([ordered]@{
    greetings=$greetings
    name=$name
})

$results = New-Object psobject -Property $props
$results.PSobject.Properties.name -contains "greetings"

ÇIKTI:

True

Boolean çıktısını almak için -contains parametresini kullandık. Yani örneğin, belirtilen nesne verilen özelliği içeriyorsa True sonucunu elde ederiz; aksi halde Yanlış.

if-else Bloğunu Kullanma

Bir nesnenin PowerShell'de bir özelliği olup olmadığını kontrol etmek için if-else bloğunu kullanın.

if-else bloğunu kullanın:

$greetings = "Hi"
$name = "Java2blog"

$props = $([ordered]@{
    greetings=$greetings
    name=$name
})

$results = New-Object psobject -Property $props
if($results.greetings){
    echo "True"
}else{
echo "False"
}

ÇIKTI:

True

Yukarıdaki kodda verilen nesnenin belirtilen özelliğe sahip olup olmadığını kontrol etmek için if-else bloğunu kullandık. Burada nesnenin belirli bir özelliğini hedeflemek için nokta gösterimini kullandık. Daha sonra, eğer verilen koşul karşılanıyorsa True'u yazdırmak için echo'yu kullandık; aksi halde Yanlış.

.Match() İşlevini if-else Bloğuyla Kullanma

Bir nesnenin PowerShell'de bir özelliği olup olmadığını kontrol etmek için .Match() işlevini kullanın.

.Match() İşlevini if-else Bloğuyla kullanın:

$greetings = "Hi"
$name = "Java2blog"

$props = $([ordered]@{
    greetings=$greetings
    name=$name
})

$results = New-Object psobject -Property $props
if($results.PSObject.Properties.Match('greetings')){"True"}
else{"False"}

ÇIKTI:

True

Bu kod, bir nesnenin belirli bir özelliğe sahip olup olmadığını kontrol etmek için yalnızca if-else bloğunu kullandığımız önceki örneğe benzer. Burada if koşulu içinde greetings özellik adını argüman olarak alan .Match() fonksiyonunu kullandık. Yine önceki örnekte olduğu gibi, if koşulu yerine getirilirse True yazdırdık; aksi halde Yanlış.

Get-Member Cmdlet'ini kullanma

Belirtilen nesnede mevcutsa, özellikle ilgili ayrıntıları almak için Get-Member cmdlet'ini kullanın.

Get-Member Cmdlet'ini kullanın:

$greetings = "Hi"
$name = "Java2blog"

$props = $([ordered]@{
    greetings=$greetings
    name=$name
})

$results = New-Object psobject -Property $props
Get-Member -inputobject $results -name "greetings" -Membertype Properties

ÇIKTI:

   TypeName: System.Management.Automation.PSCustomObject

Name      MemberType   Definition
----      ----------   ----------
greetings NoteProperty string greetings=Hi

Verilen özelliğin mevcut olup olmadığını kontrol etmekle ilgilendiğimiz ve özellik adını, değerini ve MemberType'ı bilmek istediğimiz için Get-Member cmdlet'ini kullandık.

Get-Member cmdlet'i verilen nesnelerin üyelerini, yöntemlerini ve özelliklerini almak için kullanılır. Nesneyi belirtmek veya Get-Member'e yönlendirmek için -InputObject parametresini kullandık.

Belirli üye türlerini almak için -MemberType parametresini kullandık, örneğin NoteProperties; aksi halde statik üyeler hakkında bilgi almak için -Static parametresini kullanabiliriz.

Get-Member cmdlet'inin, yöntemlerin ilk önce listelendiği alfabetik olarak sıralanmış üyeleri içeren bir liste döndürdüğünü unutmayın. Get-Member cmdlet'ini if-else bloğuyla birlikte kullanabiliriz.

Get-Member'ı `if-else ile kullanın:

if(Get-Member -inputobject $results -name "greetings" -Membertype Properties){
"True"
}
else{"False"}

ÇIKTI:

True

Belirtilen koşul yerine getirilirse yukarıdaki kod True sonucunu verdi; aksi halde Yanlış. Get-Member cmdlet’inin takma adını da aşağıdaki gibi kullanabiliriz.

Get-Member Cmdlet'inin Takma Adını Kullan:

if(gm -inputobject $results -name "greetings" -Membertype Properties){"True"}
else{"False"}

ÇIKTI:

True

Bunların hepsi nesnenin PowerShell'de özelliği olup olmadığını kontrol etmekle ilgilidir.

İlgili makaleler