@
1054850490 #4 不确定怎么会出错,因为 Set-Location 当然是支持空格的。根据我的脑波调试,你可以尝试考虑下面两个情况:
1. 你的宏软件没有设置正确,导致 PowerShell 脚本的路径有空格的时候根本不能打开脚本,和脚本的 Set-Location 是否成功没有关系。
2. 你的脚本所在的路径包括中括号 [],这是 PowerShell 通配符之一,因此使用 -Path 会失败。
当然,第二个问题即使现在不是你遇到的问题,也应该避免,在不使用通配符的情况,应该尽量用 LiteralPath 提高性能并减少出错的可能。
Set-Location -LiteralPath $PSScriptRoot
第一个问题,你或许需要在 PowerShell 脚本的名字周围加上双引号,这和你的宏程序的具体机制有关。
@
qwq11 #9 不应该假设启动脚本的时候会运行 profile 脚本,因为可以 -NoProfile 。
@
LeeReamond #5 $PSScriptRoot 是字符串类型的变量,写成 "$PSScriptRoot" 没有任何效果,因为后者相当于是 [string]::Format("{0}", $PSScriptRoot),得到的结果必然也是 $PSScriptRoot 自己。
@
NoOneNoBody #6 和 PowerShell 当然有关,并不是所有的 shell 都是同一套语法。