PowerShell Switch Beyanı: Başlangıç Kılavuzu!
Switch ifadesi, test edilecek bir dizi koşul belirtmenize ve her koşul için farklı bir kod kümesini yürütmenize olanak tanır. Farklı verilere dayalı olarak farklı eylemler gerçekleştirmeniz gerektiğinde bu son derece yararlı olabilir. PowerShell'deki switch ifadesi, diğer programlama dillerindeki switch ifadesine benzer. Giriş olarak bir ifade alır ve ardından ifadenin değerini bir durum listesiyle karşılaştırır. Bir eşleşme bulunursa bu durumla ilişkili kod bloğu yürütülür. Eşleşme bulunamazsa, kod bloğunu yürütmek için isteğe bağlı bir varsayılan durum kullanılabilir. İster yeni başlayan ister deneyimli bir PowerShell kullanıcısı olun, bu kılavuz Switch deyiminde uzmanlaşmanıza ve komut dosyalarınızdaki yeteneklerinden yararlanmanıza yardımcı olacaktır.
PowerShell switch ifadesinin ne olduğuna ve nasıl çalıştığına ilişkin bir genel bakışın yanı sıra PowerShell betiklerinizde nasıl kullanılabileceğine dair bazı örnekleri görelim. Switch ifadesini kullanmanın sözdizimi oldukça basittir. "Switch" anahtar kelimesiyle başlar ve ardından, karşılaştırmak istediğiniz değeri içeren parantez içindeki bir ifade gelir. Daha sonra her koşul, içlerinden biri ifade değeriyle eşleşene kadar sırayla değerlendirilir ve ilişkili kod bloğu yürütülür. Koşullardan hiçbiri eşleşmiyorsa bunun yerine isteğe bağlı bir "varsayılan" kod bloğu kullanılabilir.
PowerShell'deki switch ifadesinin sözdizimi
PowerShell'deki switch ifadesinin sözdizimine daha yakından bakalım.
İfade
Switch ifadesindeki ifade herhangi bir geçerli PowerShell ifadesi olabilir. Bu, değişkenleri, cmdlet çıktısını veya başka herhangi bir PowerShell ifadesini içerebilir.
Değerler
Switch ifadesindeki değerler, sabit bir değer olarak değerlendirilen herhangi bir geçerli PowerShell ifadesi olabilir. Bu, dizeleri, sayıları veya başka herhangi bir sabit değeri içerebilir.
Kod blokları
Switch ifadesindeki kod blokları, ifade karşılık gelen değerle eşleştiğinde yürütülen PowerShell kodunun satırlarıdır. Her kod bloğu küme parantezleri {comcode> içine alınmalıdır.
PowerShell'deki switch case ifadesinin temel sözdizimi aşağıdaki gibidir:
switch (expression)
{
value1 {code block}
value2 {code block}
value3 {code block}
default {code block}
}
PowerShell anahtarı varsayılan bloğu
Switch ifadesindeki varsayılan durum, hiçbir durumun değerlendirilen ifadeyle eşleşmediği durumları işlemek için kullanılır. Eşleşmeyen değerler için herhangi bir özel eylemin gerçekleştirilmesi gerekmediğinde bir geri dönüş seçeneği olarak hizmet eder.
PowerShell anahtar parametreleri
PowerShell'de Switch ifadesi, tek bir ifadenin veya değişkenin farklı değerlerine göre gerçekleştirilecek farklı eylemleri belirtmenize olanak tanır. Switch deyiminin davranışını özelleştirmek için kullanabileceğiniz çeşitli parametreler vardır.
Switch ifadesiyle kullanabileceğiniz bazı parametrelerin listesi aşağıda verilmiştir:
-Regex: Bu parametre, karşılaştırılan değerlerdeki kalıpları eşleştirmek için normal ifadeler kullanmanıza olanak tanır.-Wildcard: Bu parametre, karşılaştırılan değerlerdeki kalıpları eşleştirmek için joker karakterleri (*ve?gibi) kullanmanıza olanak tanır.-Exact: Bu parametre, karşılaştırılan değerlerin herhangi bir joker karakter veya normal ifade eşleşmesi olmadan tam olarak eşleştirilmesi gerektiğini belirtir.-CaseSensitive: Bu parametre, karşılaştırılan değerlerin büyük/küçük harfe duyarlı bir şekilde eşleştirilmesi gerektiğini belirtir.-File: Bu parametre, eşleştirilecek değerlerin listesini içeren bir dosyayı belirtir. Dosyadaki her değer ayrı bir satırda olmalıdır.
PowerShell anahtar örnekleri
Switch ifadesi if ifadesine benzer ancak birden çok koşulu test etmenize ve her koşul için farklı kod bloklarını çalıştırmanıza olanak tanır. Switch ifadeleri herhangi bir veri türüyle kullanılabilir, ancak en yaygın olarak dize verileriyle kullanılırlar. PowerShell anahtarlarının kullanımını göstermek için sayısal bir değere göre haftanın gününü belirlediğimiz basit bir örneği ele alalım. İşte kod:
$day = Read-Host "Enter the Day number (1-7):"
switch ($day) {
1 { Write-Host "It's Monday." }
2 { Write-Host "It's Tuesday." }
3 { Write-Host "It's Wednesday." }
4 { Write-Host "It's Thursday." }
5 { Write-Host "It's Friday." }
6 { Write-Host "It's Saturday." }
7 { Write-Host "It's Sunday." }
default { Write-Host "Invalid input. Please enter a number between 1 and 7." }
}
Bu örnekte kullanıcıdan 1 ile 7 arasında bir sayı girmesi istenir. Switch ifadesi giriş değerini değerlendirir ve haftanın karşılık gelen gününü görüntüler. Geçersiz bir giriş sağlanırsa, varsayılan durum yürütülür ve bir hata mesajı görüntülenir.
PowerShell'de önceden tanımlanmış değere sahip basit bir switch ifadesinin örneği:
$value = "apple"
switch ($value) {
"apple" {
Write-Host "The value is an apple"
}
"banana" {
Write-Host "The value is a banana"
}
default {
Write-Host "The value is something else"
}
}
#Output: The value is an apple
Bu örnekte $value değişkeninin değeri “apple” olarak ayarlanmıştır. switch ifadesi daha sonra $value değerini “apple” ve “muz” durumlarıyla karşılaştırır. $value'ın değeri “apple” olduğundan “apple” durumuyla ilişkili kod bloğu yürütülür ve çıktı “The value is an apple” olur.
Değerleri Switch İfadesiyle Karşılaştırma
Switch ifadesi, tek bir değere karşı test yapmanın yanı sıra sayısal değerleri de karşılaştırabilir. Bu, farklı değer aralıklarına göre farklı eylemler gerçekleştirmenize olanak tanır. Switch deyimini kullanarak kullanıcı girişini birden fazla koşulla nasıl doğrulayabileceğiniz aşağıda açıklanmıştır.
$input = 10
Switch ($input) {
{ $_ -lt 10 } {
Write-Host "The value is less than 10."
}
{ $_ -ge 10 -and $_ -lt 20 } {
Write-Host "The value is between 10 and 20."
}
{ $_ -ge 20 -and $_ -lt 30 } {
Write-Host "The value is between 20 and 30."
}
{ $_ -ge 30 } {
Write-Host "The value is greater than or equal to 30."
}
default {
Write-Host "The number is not valid" -f Red
}
}
Bu örnekte $input değişkeni 10'a ayarlanmıştır. Switch ifadesi bu değeri switch bloğundaki her koşulla karşılaştırır. İlk koşul değerin 10'dan küçük olup olmadığını test eder, ikinci koşul değerin 10 ile 20 arasında olup olmadığını test eder, üçüncü koşul değerin 20 ile 30 arasında olup olmadığını test eder ve dördüncü koşul değerin 10'dan büyük olup olmadığını test eder 30'a eşit. Ayrıca başka herhangi bir değerle eşleşecek varsayılan bloğumuz da var.
Joker karakterli PowerShell anahtar ifadesi
Birden fazla değeri eşleştirmek için switch durumlarınızdaki joker karakter desenlerini de kullanabilirsiniz. Örneğin:
$value = "orange"
switch -wildcard ($value) {
"a*" {
Write-Host "The value starts with the letter 'a'"
}
"b*" {
Write-Host "The value starts with the letter 'b'"
}
"*e" {
Write-Host "The value ends with the letter 'e'"
}
default {
Write-Host "The value does not match any patterns"
}
}
Bu örnekte $value'ın değeri “turuncu” olarak ayarlanmıştır. switch ifadesi, $value değerini joker karakter dizisi deseni kullanan durumlarla karşılaştırır. $value değeri “e” harfiyle bittiği için “*e” durumuyla ilişkili kod bloğu çalıştırılır ve çıktı “Değer 'e' harfiyle biter” olur. ”.
PowerShell'deki switch deyimi, onu daha da güçlü ve esnek hale getirebilecek birkaç ek parametreye de sahiptir. Örneğin. -Büyük/Küçük Harfe Duyarlı -Tam -Paralel -Wildcard vb.
İfadeyi Dosyadaki İçeriği Ara'ya değiştir
Bir metin dosyasındaki belirli anahtar kelimeleri aramak için switch ifadesinin -File parametresini kullanabilirsiniz. İşte bir örnek:
Switch -File "C:\Logs\AppLog.txt" {
{$_ -match "Error"} {
Write-Host "The log file contains Errors"
}
{$_ -match "warning"} {
Write-Host "The log file contains Warnings"
}
{$_ -match "information"} {
Write-Host "The log file contains information"
}
default {
Write-Host -f Yellow "The log file does not contain any specific keywords!"
}
}
Bu komut dosyası, verilen metin dosyasının her satırında döngü yapar ve match cümleciği, satırın verilen anahtar kelimeyle eşleşip eşleşmediğini kontrol eder.
RegEx Örneği ile Geçiş Yapın
Böyle bir seçenek, switch ifadenizdeki büyük/küçük harf sayılarını eşleştirmek için normal ifadeler kullanmanıza olanak tanıyan -regex parametresidir. Örneğin:
#$value = "123-456-7890"
$value = "Salaudeen@crescent.com"
switch -regex ($value) {
"\d{3}-\d{3}-\d{4}" {
Write-Host "The value is a phone number"
}
"^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$" {
Write-Host "The value is an email address"
}
default {
Write-Host "The value does not match any patterns"
}
}
Bu örnekte $value değeri bir telefon numarasına ayarlanmıştır. switch ifadesi, $value değerini normal ifadeler kullanan durumlarla karşılaştırır. $value değeri bir telefon numarasının normal ifadesiyle eşleştiğinden, bu durumla ilişkili kod bloğu yürütülür ve çıktı “Değer bir telefon numarasıdır” olur.
PowerShell birden fazla değeri değiştirir (Diziler)
Tek bir ifadenin veya değişkenin farklı değerlerine dayalı olarak farklı eylemler gerçekleştirmek için Switch deyimini kullanabilirsiniz. Belirli bir eylemin gerçekleştirilmesi gereken birden çok değeri belirtmek için Switch ifadesinin küme parantezleri içindeki virgülle ayrılmış değerler listesini kullanabilirsiniz.
Aşağıda Switch ifadesini birden çok değerle nasıl kullanabileceğinizi gösteren bir örnek verilmiştir:
$value = 1, 2
Switch ($value) {
1 { Write-Host "The Value contains 1" }
2 { Write-Host "The Value contains 2" }
3 { Write-Host "The Value contains 3" }
default { Write-Host "Value is something else" }
}
Yukarıdaki komut dosyası, geçiş yapmak için bir Dizi Değeri iletir. Bu komut dosyası “Değer 1 içerir” ve “Değer 2 içerir” çıktısını verecektir. String dizisiyle başka bir örnek görelim:
$Fruits = "apple", "orange", "banana"
Switch ($fruits) {
"apple" {
Write-Host "We have an apple."
}
"orange" {
Write-Host "We have an orange."
}
"banana" {
Write-Host "We have a banana."
}
default {
Write-Host "The fruit is not recognized."
}
}
Bu örnekte $fruits değişkeni bir meyve dizisi içeriyor. Switch deyimi dizideki her değeri switch bloğundaki her durumla karşılaştırır. Dizi "elma", "portakal" ve "muz" değerlerini içerdiğinden, karşılık gelen "Bir elmamız var", "Bir portakalımız var" ve "Bir muzumuz var" eylemleri yürütülür. Bu betiğin çıktısı şöyle olacaktır:
We have an apple.
We have an orange.
We have a banana.
PowerShell'de “break” içeren Anahtar İfadesi:
PowerShell'de bir döngüden çıkmak için break anahtar sözcüğünü kullanabilirsiniz. Switch bağlamında, switch ifadesini yarıda kesmek ve ondan erken çıkmak için kullanılır. Bir switch ifadesi içinde break ifadesiyle karşılaşıldığında, hemen anahtardan çıkar ve anahtardan sonraki bir sonraki ifadede yürütmeye devam eder. İlk eşleşmeyi durdurmak için PowerShell'deki bir Switch ifadesinin içindeki break ifadesini nasıl kullanabileceğinizi gösteren bir örnek:
$value = 1, 2
$Result = Switch ($value) {
1 { Write-Host "The Value contains 1"; break }
2 { Write-Host "The Value contains 2"; break }
3 { Write-Host "The Value contains 3"; break }
default { Write-Host "Value is something else" }
}
#Get the Result
$Result
Bu, yalnızca "Değer 1 içerir" sonucunu verecektir. Break yalnızca geçerli öğeyi tamamlar, tüm işlemleri keser ve switch ifadesinden çıkar.
Çoklu Koşullara Sahip PowerShell Anahtarı
Benzer şekilde, switch ifadesini birden fazla koşulla kullanabilirsiniz, Örn.,
$value = 4
Switch ($value) {
1 { Write-Host "Value is 1" }
2 { Write-Host "Value is 2" }
{($_ -eq 3) -or ($_ -eq 4) -or ($_ -eq 5)} {"It is 3, 4, or 5."}
default { Write-Host "Value is something else" }
}
Birden fazla durum için daha kısa versiyon şöyle olacaktır:
$value = 5
Switch ($value) {
1 { Write-Host "Value is 1" }
2 { Write-Host "Value is 2" }
{3, 4, 5) } {"It is 3, 4, or 5."}
default { Write-Host "Value is something else" }
}
Bu örnekte Switch ifadesi $value değişkeninin değerini kontrol eder. $value'nin değeri 1 ise “Değer 1” çıktısını verecektir. Değer 2 ise “Değer 2” çıktısını verecektir. Değerin 3, 4 veya 5 olması durumunda “Değer 3, 4 veya 5” çıktısını verecektir. Değer bunlardan hiçbiri değilse “Değer başka bir şeydir” çıktısını verecektir.
Switch İfadesinde Büyük/Küçük Harf Duyarlılığı
Son olarak: Anahtar parametreleri varsayılan olarak büyük/küçük harfe duyarlı değildir. Bu, durumlarına bakılmaksızın dize değerleriyle eşleşeceği anlamına gelir. Başka bir deyişle küçük harf büyük harfe eşittir! Ancak -CaseSensitive parametresini kullanarak bu davranışı değiştirebilir ve Switch deyimini büyük/küçük harfe duyarlı hale getirebilirsiniz.
Test değerinin büyük/küçük harfe duyarlı eşleşmesini gerçekleştirmek için CaseSensitive parametresini kullanın. Örneğin.,
switch -casesensitive ("Banana") {
"banana" { "Given Value is $_"; break }
"mango" { "Given Value is $_"; break }
"Banana" { "Given Value is $_"; break }
default { "Some other fruit fruit" }
}
Bu örnekte verilen değer “Muz” olarak ayarlanmıştır. -CaseSensitive parametresini kullanarak Switch deyimini büyük/küçük harfe duyarlı hale getiriyoruz. Bu, "banana" değil, yalnızca "Banana" durumuyla eşleşeceği anlamına gelir.
PowerShell anahtarı ve if ifadesi - Hangisi daha iyi?
switch ifadesi ile if ifadesi arasında karar verirken, değerlendirmeniz gereken koşulların karmaşıklığını dikkate almak önemlidir. Göz önünde bulundurulması gereken bazı noktalar şunlardır:
Yani genel olarak tek bir değişkeni birçok farklı değere göre test ediyorsanız geçiş daha iyi bir seçim olabilir. Çok sayıda değişkeni test ediyorsanız veya daha karmaşık mantıksal koşullara sahipseniz "eğer" daha iyi bir seçim olabilir. Bu gerçekten özel kullanım durumuna bağlıdır.
- Koşulların Karmaşıklığı: Kontrol edilecek çok sayıda koşul varsa veya koşullar tek bir değişkenin birden fazla farklı değerine dayanıyorsa, switch ifadesi if ifadesinden daha okunabilir ve yönetilmesi daha kolay olabilir. Switch ifadeleri, özellikle kontrol edilecek ikiden fazla koşulun olduğu durumlarda, birden çok değeri zarif bir şekilde işlemek üzere tasarlanmıştır.
- Performans: Switch, eşleştirme için bir karma tablosu kullandığından, çok sayıda koşul olduğunda Switch ifadeleri daha hızlı olabilir. Bu, çok sayıda koşulla uğraşırken performans kazanımlarına yol açabilir.
- Varsayılan Durum İşleme: Switch ifadeleri, varsayılan kullanılarak belirtilen koşullardan hiçbiri karşılanmadığında varsayılan durumu ele almanın kolay bir yolunu sağlar.
- Karmaşık Mantık: Öte yandan, birden fazla farklı değişkeni veya koşulu aynı anda kontrol etmeniz gerekebilecek ifadeler daha karmaşık mantık için daha iyiyse veya koşullar mantıksal operatörler (&& ve | gibi) içeriyorsa |).
- Okunabilirlik: Basit koşullar için, özellikle programlamaya yeni başlayanlar için if ifadeleri daha basit ve anlaşılması daha kolay olabilir.
- Esneklik: İfadelerin, aralıkları içeren koşullar veya basit bir değer listesi olarak kolayca ifade edilemeyen koşullar için daha fazla esneklik sunması.
Kapanıyor
PowerShell anahtarlarına hakim olmak, herhangi bir PowerShell komut dosyası oluşturucusu için çok önemli bir beceridir. Farklı koşullara dayalı karmaşık dallanma mantığını ele almak için esnek ve etkili bir yol sağlarlar. PowerShell'de switch deyimi için kullanılabilen birçok başka seçenek ve özellik vardır; bunlar arasında bir vaka için birden fazla değer belirtme yeteneği, daha karmaşık belirtmek için case deyimlerini kullanma yeteneği de vardır koşullar ve bir switch bloğundan erken çıkmak için break ifadesini kullanma yeteneği. If/else bloğuna benzer, ancak birkaç ek faydası vardır. Örneğin, if/else ifadelerini birbirinin içine yerleştirmeye gerek kalmadan birden fazla koşulu aynı anda değerlendirmek için kullanılabilir.
Genel olarak, switch ifadesi, PowerShell betiklerinizin akışını denetlemek ve farklı değer ve koşullara göre görevleri otomatikleştirmek için güçlü ve esnek bir araçtır. PowerShell dilinin önemli bir parçasıdır ve PowerShell ile çalışan herkes için önemli bir özelliktir.

