在 PowerShell 中,若执行脚本所在路径包含通配符时,会导致 Start-Process 出错

比如在这样的路径:D:\[测试1]脚本测试\test

如果执行 Start-Process ..\setchar.exe 会报错:

Start-Process : 无法执行操作,因为通配符路径 D:\[测试1]脚本测试\test 无法解析为文件。
所在位置 行:1 字符: 1
......

下面虽然还有一堆错,但是重点其实是在第一行

在 PS 中是有这些通配符:https://learn.microsoft.com/zh-cn/powershell/module/microsoft.powershell.core/about/about_wildcards

实际能写在路径中的,主要就是 [、] 这两个字符

再根据 Start-Process 文档:https://learn.microsoft.com/zh-cn/powershell/module/microsoft.powershell.management/start-process

执行该方法时实际还有一个默认参数:

-WorkingDirectory
指定新进程的起始位置。
如果未指定,则 cmdlet 默认为 FilePath 参数中指定的完全限定位置。 如果 FilePath 参数的值不是完全限定的,则它默认为调用进程的当前工作目录。
不支持通配符。 路径不得包含将解释为通配符的字符。

在未指定时,默认使用当前目录,但不知道它是怎么获取的当前目录,导致路径中的 [ ] 被认为是通配符

解决方法也很简单,显式指定一下工作目录即可:

Start-Process -FilePath "..\setchar.exe" -WorkingDirectory "..\"

唔,很是神奇。

posted @   不是豆豆  阅读(244)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
历史上的今天:
2020-07-20 debian 国内源
友情链接:迷途


点击右上角即可分享
微信分享提示