📜  PowerShell Switch语句(1)

📅  最后修改于: 2023-12-03 15:33:46.744000             🧑  作者: Mango

PowerShell Switch语句

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中非常实用的条件判断语句。它可以使用具体的值、通配符、正则表达式等多种方式进行条件匹配,使得程序员能够更加灵活地进行条件判断。