📅  最后修改于: 2023-12-03 15:33:46.744000             🧑  作者: Mango
Switch
语句是在PowerShell中进行条件判断的一种方式。与If
语句相似,Switch
语句也是用来检查条件,并根据条件执行相应的代码块。但相较于If
语句,Switch
语句更适用于多个条件下的判断。
switch -Expression <expression>
{
<value> { <statement list> }
<value> { <statement list> }
...
default { <statement list> }
}
-Expression
: 需要判断的表达式,通常为一个变量或者一个表达式。<value>
: 需要匹配的值或者一组用逗号分隔开的值列表。<statement list>
: 匹配到相应的值时需要执行的语句列表。default
: 如果没有任何匹配,则执行这个语句块。下面的示例演示了如何使用Switch
语句来判断一个数字所在的范围。
$x = 3
switch ($x)
{
0 { Write-Host "Less than 1" }
1,2 { Write-Host "Between 1 and 2" }
3,4,5 { Write-Host "Between 3 and 5" }
default { Write-Host "Greater than 5" }
}
执行以上代码,将得到以下输出:
Between 3 and 5
除了具体的值,我们还可以使用通配符来匹配一组值。下面的示例演示了如何使用通配符匹配几种不同格式的文件名。
$files = Get-ChildItem | Select-Object -ExpandProperty Name
foreach ($file in $files)
{
switch -Wildcard ($file)
{
*.txt { Write-Host "Text file: $file" }
*.jpg,*.png,*.gif { Write-Host "Image file: $file" }
*.{zip,rar} { Write-Host "Archive file: $file" }
default { Write-Host "Unknown file type: $file" }
}
}
执行以上代码,将得到以下输出:
Text file: file1.txt
Image file: image1.jpg
Image file: image2.png
Archive file: archive1.zip
Unknown file type: file2.docx
除了使用通配符,我们还可以使用正则表达式来匹配一组值。下面的示例演示了如何使用正则表达式匹配一组URL。
$urls = @(
"https://www.google.com/",
"http://www.bing.com/",
"https://www.yahoo.com/",
"ftp://ftp.example.com/"
)
foreach ($url in $urls)
{
switch -Regex ($url)
{
"^https:" { Write-Host "Secure URL: $url" }
"^http:" { Write-Host "Insecure URL: $url" }
default { Write-Host "Unknown protocol: $url" }
}
}
执行以上代码,将得到以下输出:
Secure URL: https://www.google.com/
Insecure URL: http://www.bing.com/
Secure URL: https://www.yahoo.com/
Unknown protocol: ftp://ftp.example.com/
Switch
语句是PowerShell中非常实用的条件判断语句。它可以使用具体的值、通配符、正则表达式等多种方式进行条件匹配,使得程序员能够更加灵活地进行条件判断。