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

如何在名称含单个左方括号的文件夹中运行PowerShell命令行

PowerShell 路径含未配对左方括号无法执行脚本的解决方案

问题根因

PowerShell 的 -File 启动参数解析路径时,默认将方括号识别为通配符语法,单个左方括号属于不合法的通配符格式,会直接触发解析错误。命令行层面的反引号转义会被外层调用解析器提前消费,无法作用于 PowerShell 的路径解析逻辑,因此转义无效。

通用解决方法

放弃 -File 参数,改用 -Command 参数配合 Get-Item -LiteralPath 加载脚本,-LiteralPath 会将输入路径完全作为字面量处理,不会解析任何通配符,兼容所有特殊字符场景:

# 基础调用示例
powershell.exe -Command "& { & (Get-Item -LiteralPath 'C:\Test[\Test.ps1') }"

# 带参数传递示例
powershell.exe -Command "& { & (Get-Item -LiteralPath 'C:\Test[\Test.ps1') -Arg1 '参数值1' -Arg2 '参数值2' }"

HTA 调用适配方案

如果是在 HTA 中通过 WScript.Shell 调用 PowerShell,只需要提前转义路径中的单引号即可,示例(VBS 写法):

Dim shell, scriptFullPath
' 替换为你的脚本实际路径,支持含任意括号、空格等特殊字符
scriptFullPath = "C:\Test[\Test.ps1"
' 转义路径中的单引号,避免字符串解析错误
scriptFullPath = Replace(scriptFullPath, "'", "''")
Set shell = CreateObject("WScript.Shell")
' 执行命令,最后两个参数分别对应窗口显示模式、是否等待脚本执行结束
shell.Run "powershell.exe -Command ""& { & (Get-Item -LiteralPath '" & scriptFullPath & "') }""", 1, False

注意事项

  • 路径统一用单引号包裹,可兼容路径含空格、特殊符号的场景
  • 无需额外转义路径中的方括号、空格等字符,-LiteralPath 会自动处理所有字面量内容
  • 该方案对单左括号、单右括号、成对括号、路径含特殊字符的所有场景均生效,稳定性远高于 -File 参数方案

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 23:06:02