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

如何为PowerShell Switch语句添加扩展名与文件名双重条件

解决PowerShell Switch语句多条件匹配问题

需求:当处理的文件为**xyz.txt**(扩展名.txt且文件名完全匹配)时,执行带/un参数的LGPO命令;其他.txt文件执行带/t参数的命令。原代码中重复的.txt分支会导致逻辑冲突,以下是修正后的实现:

修改后的完整代码

function Import-GpoSettings{
<#
.SYNOPSIS
    导入组策略文件。
.DESCRIPTION
    应用DISA/ESS特定组策略。
.PARAMETER Resource
    查找pol文件的资源路径。
.PARAMETER MatchString
    查找文件名包含该字符串的pol文件。
#>
    Param (
        [string] $Resource,
        [string] $MatchString
    )
    
    $policies = Get-ChildItem (Get-ResourcePath $Resource) | Where-Object Extension -in '.txt', '.inf', '.csv' | Where-Object Name -match $matchString

    ForEach ($policy in $policies) {
        [string] $currentPolicy = $policy.BaseName
        Write-HostAndLog "`t 应用标准 $currentPolicy 策略设置。`n"
        # 切换为匹配文件对象,支持多条件判断
        switch ($policy) {
            # 匹配文件名精确为xyz.txt的情况
            {$_.Name -eq 'xyz.txt'} { 
                Invoke-CommandAndLog @((Get-ResourcePath "UtilityModules\LGPO.exe"), " /un", $policy.FullName, " /q")
                break # 匹配后跳出,避免触发后续txt分支
            }
            # 匹配其他.txt扩展名的文件
            {$_.Extension -eq '.txt'} { 
                Invoke-CommandAndLog @((Get-ResourcePath "UtilityModules\LGPO.exe"), " /t", $policy.FullName, " /q")
                break
            }
            '.inf' { 
                Invoke-CommandAndLog @((Get-ResourcePath "UtilityModules\LGPO.exe"), " /s", $policy.FullName, " /q")
                break
            }
            '.csv' { 
                Invoke-CommandAndLog @((Get-resourcepath "UtilityModules\LGPO.exe"), " /a", $policy.FullName, " /q")
                break
            }
            Default { }
        }
    }
}#endFunction

关键修改说明

  • 将Switch的匹配目标从$policy.Extension改为文件对象$policy,允许使用脚本块作为匹配条件,实现多维度判断
  • 新增文件名精确匹配分支{$_.Name -eq 'xyz.txt'},优先匹配特定文件,执行/un命令后用break跳出,避免触发后续的.txt分支
  • 针对.txt文件调整为脚本块条件,确保仅匹配非xyz.txt的其他文本文件
  • 每个分支添加break,避免Switch继续匹配后续条件,符合单一匹配逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 07:20:36