Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Kısa açıklama
Birden çok if deyimi işlemek için anahtarın nasıl kullanılacağını açıklar.
Uzun açıklama
Betik veya işlevdeki bir koşulu denetlemek için bir if deyimi kullanın. deyimi if , değişkenlerin değeri ve nesnelerin özellikleri dahil olmak üzere birçok koşul türünü denetleyebilir.
Birden çok koşulu denetlemek için bir switch deyimi kullanın.
switch deyimi, bir dizi if deyimiyle eşdeğerdir, ancak daha basittir.
switch deyimi her koşulu ve isteğe bağlı eylemi listeler. Bir koşul elde edilirse, eylem gerçekleştirilir.
deyimi switch ve $_ otomatik değişkenlerini kullanabilir$switch. Daha fazla bilgi için bkz. about_Automatic_Variables.
Sözdizimi
Temel switch deyim aşağıdaki biçime sahiptir:
Switch (<test-expression>)
{
<result1-to-be-matched> {<action>}
<result2-to-be-matched> {<action>}
}
Eşdeğer if deyimleri şunlardır:
if (<result1-to-be-matched> -eq (<test-expression>)) {<action>}
if (<result2-to-be-matched> -eq (<test-expression>)) {<action>}
<test-expression>, bir değer döndürmek için ifade modunda değerlendirilen tek bir ifadedir.
<result-to-be-matched> değeri giriş değeriyle karşılaştırılan bir ifadedir. İfadeler değişmez değerler (dizeler veya sayılar), değişkenler ve boole değeri döndüren betik blokları içerir.
Sayı olarak tanınmayan tüm sıralanmamış değerler dize olarak kabul edilir.
Karışıklığı veya istenmeyen dize dönüştürmeyi önlemek için her zaman dize değerlerini tırnak içine almalısınız. İfadenin doğru değerlendirildiğinden emin olmak için tüm ifadeleri ()parantez içine alın ve alt ifadeler oluşturur.
<result-to-be-matched> değerinin karşılaştırma ifadesinin sol tarafında olduğunu anlamak önemlidir. Bu, sonucunun <test-expression> sağ tarafta olduğu ve karşılaştırma için sol taraftaki değerin türüne dönüştürülebileceği anlamına gelir. Daha fazla bilgi için bkz. about_Comparison_Operators
Değer default , başka eşleşme olmadığında kullanılan eylem için ayrılmıştır.
Otomatik $_ değişken, deyimine switch geçirilen ifadenin değerini içerir ve deyimleri kapsamında <result-to-be-matched> değerlendirme ve kullanım için kullanılabilir.
Deyimin tam switch söz dizimi aşağıdaki gibidir:
switch [-regex | -wildcard | -exact] [-casesensitive] (<test-expression>)
{
"string" | number | variable | { <value-scriptblock> } { <action-scriptblock> }
default { <action-scriptblock> } # optional
}
veya
switch [-regex | -wildcard | -exact] [-casesensitive] -file filename
{
"string" | number | variable | { <value-scriptblock> } { <action-scriptblock> }
default { <action-scriptblock> } # optional
}
Parametre kullanılmazsa, switchExact parametresini kullanmakla aynı şekilde davranır. Değer için büyük/küçük harfe duyarlı olmayan bir eşleşme gerçekleştirir. Değer bir koleksiyonsa, her öğe göründüğü sırayla değerlendirilir.
Deyimi en switch az bir koşul deyimi içermelidir.
default yan tümcesi, değer herhangi bir koşulla eşleşmediğinde tetikleniyor.
else deyimindeki bir if yan tümcesine eşdeğerdir. Her default deyimde yalnızca bir switch yan tümceye izin verilir.
switch aşağıdaki parametrelere sahiptir:
- Joker karakter - Koşulun bir joker karakter dizesi olduğunu gösterir. Match yan tümcesi bir dize değilse, parametre yoksayılır. Karşılaştırma büyük/küçük harfe duyarlı değildir.
- Tam - Bir dizeyse eşleştirme yan tümcesinin tam olarak eşleşmesi gerektiğini gösterir. Match yan tümcesi bir dize değilse, bu parametre yoksayılır. Karşılaştırma büyük/küçük harfe duyarlı değildir.
- CaseSensitive - Büyük/küçük harfe duyarlı bir eşleşme gerçekleştirir. Match yan tümcesi bir dize değilse, bu parametre yoksayılır.
- dosya -
<test-expression>yerine bir dosyadan girdi alır. Birden çok Dosya parametresi dahil edilirse, yalnızca sonuncusu kullanılır. Dosyanın her satırıswitchdeyimi tarafından okunur ve değerlendirilir. Karşılaştırma büyük/küçük harfe duyarlı değildir. -
Regex - Değerin koşulla normal ifade eşleştirmesini gerçekleştirir. Match yan tümcesi bir dize değilse, bu parametre yoksayılır.
Karşılaştırma büyük/küçük harfe duyarlı değildir. Otomatik
$matchesdeğişken, eşleşen deyim bloğu içinde kullanılabilir.
Uyarı
Regex ve Joker Karakter gibi çakışan değerler belirtilirken, belirtilen son parametre önceliklidir ve çakışan tüm parametreler yoksayılır. Birden çok parametre örneğine de izin verilir. Ancak, yalnızca listelenen son parametre kullanılır.
Örnekler
Aşağıdaki örnekte, switch deyimi 3 test değerini koşulların her biri ile karşılaştırır. Test değeri koşulla eşleştiğinde eylem gerçekleştirilir.
switch (3)
{
1 {"It is one."}
2 {"It is two."}
3 {"It is three."}
4 {"It is four."}
}
It is three.
Bu basit örnekte değer, 3 değeri için bir eşleşme olsa bile listedeki her koşulla karşılaştırılır. Aşağıdaki switch deyimi 3 değeri için iki koşula sahiptir. Varsayılan olarak tüm koşulların test edilmiş olduğunu gösterir.
switch (3)
{
1 {"It is one."}
2 {"It is two."}
3 {"It is three."}
4 {"It is four."}
3 {"Three again."}
}
It is three.
Three again.
bir eşleşmeden switch sonra karşılaştırmayı durdurmak için öğesini yönlendirmek için deyimini break kullanın. deyimi break deyimini switch sonlandırır.
switch (3)
{
1 {"It is one."}
2 {"It is two."}
3 {"It is three."; Break}
4 {"It is four."}
3 {"Three again."}
}
It is three.
Test değeri dizi gibi bir koleksiyonsa, koleksiyondaki her öğe göründüğü sırayla değerlendirilir. Aşağıdaki örneklerde 4 ve sonra 2 değerlendirilir.
switch (4, 2)
{
1 {"It is one." }
2 {"It is two." }
3 {"It is three." }
4 {"It is four." }
3 {"Three again."}
}
It is four.
It is two.
Tüm break deyimler, aşağıdaki örnekte gösterildiği gibi her değere değil koleksiyona uygulanır. deyimi switch , 4 değerinin break koşulundaki deyimi tarafından sonlandırılır.
switch (4, 2)
{
1 {"It is one."; Break}
2 {"It is two." ; Break }
3 {"It is three." ; Break }
4 {"It is four." ; Break }
3 {"Three again."}
}
It is four.
Bu örnekte, dize veya sayısal veri olmayan bir nesne öğesine switchgeçirilir. nesnesi switch üzerinde bir dize zorlaması gerçekleştirir ve sonucu değerlendirir.
$test = @{
Test = 'test'
Test2 = 'test2'
}
$test.ToString()
switch -Exact ($test)
{
'System.Collections.Hashtable'
{
'Hashtable string coercion'
}
'test'
{
'Hashtable value'
}
}
System.Collections.Hashtable
Hashtable string coercion
Bu örnekte eşleşen bir büyük/küçük harf olmadığından çıkış yoktur.
switch ("fourteen")
{
1 {"It is one."; Break}
2 {"It is two."; Break}
3 {"It is three."; Break}
4 {"It is four."; Break}
"fo*" {"That's too many."}
}
yan tümcesini default ekleyerek, başka bir koşul başarılı olmadığında bir eylem gerçekleştirebilirsiniz.
switch ("fourteen")
{
1 {"It is one."; Break}
2 {"It is two."; Break}
3 {"It is three."; Break}
4 {"It is four."; Break}
"fo*" {"That's too many."}
Default {
"No matches"
}
}
No matches
"On dört" sözcüğünün bir servis talebiyle eşleşmesi için -Wildcard veya -Regex parametresini kullanmanız gerekir.
PS> switch -Wildcard ("fourteen")
{
1 {"It is one."; Break}
2 {"It is two."; Break}
3 {"It is three."; Break}
4 {"It is four."; Break}
"fo*" {"That's too many."}
}
That's too many.
Aşağıdaki örnekte parametresi kullanılır -Regex .
$target = 'https://bing.com'
switch -Regex ($target)
{
'^ftp\://.*$' { "$_ is an ftp address"; Break }
'^\w+@\w+\.com|edu|org$' { "$_ is an email address"; Break }
'^(http[s]?)\://.*$' { "$_ is a web address that uses $($matches[1])"; Break }
}
https://bing.com is a web address that uses https
Aşağıdaki örnekte betik bloklarının deyim koşulları olarak switch kullanımı gösterilmektedir.
switch ("Test")
{
{$_ -is [String]} {
"Found a string"
}
"Test" {
"This $_ executes as well"
}
}
Found a string
This Test executes as well
Aşağıdaki örnek, iki tarih değeri içeren bir diziyi işler. her <value-scriptblock> tarihin Year özelliğini karşılaştırır. , <action-scriptblock> bir karşılama iletisi veya 2022 yılının başına kadar olan gün sayısını görüntüler.
switch ((Get-Date 1-Jan-2022), (Get-Date 25-Dec-2021)) {
{ $_.Year -eq 2021 } {
$days = ((Get-Date 1/1/2022) - $_).days
"There are $days days until 2022."
}
{ $_.Year -eq 2022 } { 'Welcome to 2022!' }
}
Değer birden çok koşulla eşleşiyorsa, her koşul için eylem yürütülür. Bu davranışı değiştirmek için veya break anahtar sözcüklerini kullanıncontinue.
anahtar break sözcüğü işlemeyi durdurur ve deyiminden switch çıkar.
anahtar continue sözcüğü geçerli değeri işlemeyi durdurur, ancak sonraki değerleri işlemeye devam eder.
Aşağıdaki örnek bir sayı dizisini işler ve tek veya çift olup olmadığını görüntüler. Negatif sayılar anahtar sözcüğüyle continue atlanır. Sayı olmayan bir değerle karşılaşılırsa yürütme anahtar sözcüğüyle break sonlandırılır.
switch (1,4,-1,3,"Hello",2,1)
{
{$_ -lt 0} { continue }
{$_ -isnot [Int32]} { break }
{$_ % 2} {
"$_ is Odd"
}
{-not ($_ % 2)} {
"$_ is Even"
}
}
1 is Odd
4 is Even
3 is Odd