当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] PowerShell Switch 语句[附示例]

作者:精品下载站 日期:2024-12-14 05:15:14 浏览:16 分类:玩电脑

PowerShell Switch 语句[附示例]


要编写一个好的PowerShell自动化脚本,您应该知道如何使用Switch语句。我将解释有关 PowerShell switch 语句及其语法的所有内容,并提供一些有用的实时示例。

使用 PowerShell switch 语句,您可以比使用多个 if 语句更有效地检查多个条件。 PowerShell 中的 Switch 语句可以处理不同类型的值,例如字符串、数字,甚至正则表达式。

现在让我从一开始就用一些例子来向您解释。

PowerShell 中的 Switch 语句

PowerShell 中的 switch 语句根据可能值列表评估变量或表达式,并针对匹配的情况执行相应的代码块。这类似于 C、Java 和 JavaScript 等其他编程语言中的 switch 语句。与使用多个 if-else 语句相比,它提供了一种更清晰、更易读的方式来处理多个条件。

PowerShell Switch Case 的语法

PowerShell 中 switch 语句的基本语法如下所示:

switch ($variable) {
    'value1' {
        # Code to execute if $variable is 'value1'
    }
    'value2' {
        # Code to execute if $variable is 'value2'
    }
    default {
        # Code to execute if no match is found
    }
}

以下是如何在 PowerShell 中使用 switch case 的简单示例。

$day = 'Monday'

switch ($day) {
    'Monday' {
        Write-Output "Start of the work week!"
    }
    'Friday' {
        Write-Output "End of the work week!"
    }
    default {
        Write-Output "Midweek days."
    }
}

在此示例中,输出将为 “工作周开始!”,因为 $day 的值为 'Monday'

我执行了上面的 PowerShell 脚本,您可以在下面的屏幕截图中看到确切的输出:

[玩转系统] PowerShell Switch 语句[附示例]

读取具有多个条件的 PowerShell Switch 语句

PowerShell 开关默认值

当指定的大小写都不与该值匹配时,将使用 PowerShell Switch 中的默认大小写。

switch 语句中的 default 关键字指定在没有指定情况与表达式的值匹配时应执行的代码块。

看下面的例子。

$color = 'Yellow'

switch ($color) {
    'Red' {
        Write-Output "Stop"
    }
    'Green' {
        Write-Output "Go"
    }
    'Blue' {
        Write-Output "Cool"
    }
    default {
        Write-Output "Unknown color"
    }
}

在这种情况下,输出将为“未知颜色”,因为'黄色'与任何指定的情况都不匹配。

查看下面的屏幕截图以了解输出:

[玩转系统] PowerShell Switch 语句[附示例]

读取PowerShell开关参数

在 PowerShell Switch 语句中使用 Break

在 PowerShell 中,可以在 switch 块中使用 break 语句来提前退出 switch 语句。当您希望在找到匹配项并执行相应的代码后停止进一步评估案例时,这非常有用。

下面是我在 PowerShell 的 switch 语句中使用break语句的示例。

$number = 2

switch ($number) {
    1 {
        Write-Output "One"
        break
    }
    2 {
        Write-Output "Two"
        break
    }
    3 {
        Write-Output "Three"
        break
    }
    default {
        Write-Output "Other number"
    }
}

在此示例中,输出将为 "Two",并且 switch 语句将立即终止。

现在,请按照下面的屏幕截图查看我使用 VS code 执行上述 PowerShell 脚本后的输出。

[玩转系统] PowerShell Switch 语句[附示例]

阅读 PowerShell 开关通配符示例

PowerShell 开关不区分大小写

默认情况下,PowerShell 中的 switch 语句不区分大小写。匹配值时不区分大小写。不过,您可以使用 -CaseSensitive 参数使其区分大小写。

这是一个完整的 PowerShell 脚本。

$fruit = 'APPLE'

switch ($fruit) {
    'apple' {
        Write-Output "This is an apple."
    }
    'banana' {
        Write-Output "This is a banana."
    }
    default {
        Write-Output "Unknown fruit."
    }
}

在此示例中,即使大小写不匹配,输出也将为“This is an apple.”。如果您想使其区分大小写,可以修改 switch 语句,如下所示:

$fruit = 'APPLE'
switch -CaseSensitive ($fruit) {
    'apple' {
        Write-Output "This is an apple."
    }
    'banana' {
        Write-Output "This is a banana."
    }
    default {
        Write-Output "Unknown fruit."
    }
}

现在,输出将为“未知水果。”,因为在区分大小写的比较中,'APPLE''apple' 不匹配。

输出如下面的屏幕截图所示。当您执行脚本时,它将返回相同的输出。

[玩转系统] PowerShell Switch 语句[附示例]

使用正则表达式读取 PowerShell Switch Case

PowerShell 中的嵌套 Switch 语句

以下是如何在 PowerShell 中使用嵌套 switch 语句的示例。

示例:

$data = @(
    @{Name="John"; Age=28}
    @{Name="Jane"; Age=32}
)

foreach ($person in $data) {
    switch ($person.Name) {
        "John" {
            switch ($person.Age) {
                {$_ -lt 30} { "John is under 30" }
                default { "John is 30 or older" }
            }
        }
        "Jane" {
            switch ($person.Age) {
                {$_ -lt 35} { "Jane is under 35" }
                default { "Jane is 35 or older" }
            }
        }
        default { "Unknown person" }
    }
}

PowerShell Switch 语句示例

现在,让我向您展示一些如何在 PowerShell 中使用 switch 语句的实际示例。

示例 1:检查文件类型

此示例说明如何使用 switch 语句根据文件扩展名识别文件类型。

以下是完整的 PowerShell 脚本。

$file = 'document.pdf'

switch -Regex ($file) {
    '\.txt$' {
        Write-Output "Text file"
    }
    '\.pdf$' {
        Write-Output "PDF document"
    }
    '\.jpg$' {
        Write-Output "JPEG image"
    }
    default {
        Write-Output "Unknown file type"
    }
}

在此示例中,输出将为 “PDF 文档”,因为文件扩展名与 \.pdf$ 匹配。

我执行了上面的 PowerShell 脚本,您可以在下面的屏幕截图中看到输出:

[玩转系统] PowerShell Switch 语句[附示例]

示例 2:用户角色分配

此示例显示如何根据输入分配用户角色。看下面的脚本:

$userRole = 'Admin'

switch ($userRole) {
    'Admin' {
        Write-Output "Full access granted."
    }
    'Editor' {
        Write-Output "Edit access granted."
    }
    'Viewer' {
        Write-Output "Read-only access granted."
    }
    default {
        Write-Output "No access granted."
    }
}

此处,输出将为“已授予完全访问权限。”,因为 $userRole'Admin'

示例 3:星期几消息

此示例使用 switch 语句根据星期几打印消息。

要获取输出,您可以使用 VS 代码运行以下 PowerShell 脚本。

$today = (Get-Date).DayOfWeek

switch ($today) {
    'Monday' {
        Write-Output "Start your week strong!"
    }
    'Wednesday' {
        Write-Output "Midweek hustle!"
    }
    'Friday' {
        Write-Output "Almost weekend!"
    }
    'Saturday' -or 'Sunday' {
        Write-Output "Enjoy your weekend!"
    }
    default {
        Write-Output "Keep going!"
    }
}

由于今天是星期四,因此输出显示“继续前进”。您可以检查下面的屏幕截图:

[玩转系统] PowerShell Switch 语句[附示例]

结论

通过上面的教程和示例,我希望您现在知道如何在 PowerShell 中使用 Switch 语句。我还解释了如何在 PowerShell switch case 中使用break语句。

如果您仍有疑问,请随时在下面发表评论。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯