You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何简化含多组连续匹配项的PowerShell switch语句

简化PowerShell连续匹配的Switch语句

PowerShell里可以用**范围运算符..**生成连续数字,配合字符串格式化快速创建你需要的PC名称列表,不用手动逐个输入。

核心方法说明

  • 生成连续数字:1..9会输出1到9的整数序列,10..19对应10到19,以此类推
  • 格式化带前导零的字符串:"{0:D3}" -f $数字可把数字转成三位带前导零的格式(比如1→"001",10→"010")
  • 拼接前缀:将"pc"和格式化后的字符串拼接,得到完整PC名称

简化后的Switch代码

# 预先生成各楼层的PC名称集合
$floor1PCs = 1..9 + 20..29 | ForEach-Object { "pc{0:D3}" -f $_ }
$floor2PCs = 10..19 | ForEach-Object { "pc{0:D3}" -f $_ }

switch ($env:COMPUTERNAME) {
    { $_ -in $floor1PCs } {
        Write-Output 'These PC are located at the 1st floor.'
        break
    }
    { $_ -in $floor2PCs } {
        Write-Output 'These PC are located at the 2nd floor.'
        break
    }
    default {
        Write-Output 'Unknown location.'
        break
    }
}

紧凑写法(直接在条件中生成)

如果不想单独定义变量,也可以把生成逻辑直接嵌入Switch条件块:

switch ($env:COMPUTERNAME) {
    { $_ -in (1..9 + 20..29 | ForEach-Object { "pc{0:D3}" -f $_ }) } {
        Write-Output 'These PC are located at the 1st floor.'
        break
    }
    { $_ -in (10..19 | ForEach-Object { "pc{0:D3}" -f $_ }) } {
        Write-Output 'These PC are located at the 2nd floor.'
        break
    }
    default {
        Write-Output 'Unknown location.'
        break
    }
}

后续调整PC范围时,只需修改数字区间即可,不用手动添加大量字符串,维护更便捷。

内容的提问来源于stack exchange,提问作者Livy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 07:02:37