【发布时间】:2021-08-25 15:54:41
【问题描述】:
我们的一个用户需要从快捷方式调用 PowerShell 脚本,因为使用命令行可能超出了他们的能力范围。脚本的路径包含空格,我一直无法成功地让脚本从快捷方式运行。快捷方式的目标是:
powershell.exe -file "C:\Users\xxxxx\xxxx xxxx\Finance - Documents\Secure\xxx (Finance Officer)\Rent\Data File Loader - XXXXX\InvokeDataLoader.ps1"
(我已经用 x 替换了人和公司的名字)
单击快捷方式只是短暂地打开一个 cmd 窗口(我认为),所以我一直在尝试通过在 cmd.exe 中运行命令来诊断问题。但是,当我尝试这样做时,我收到一条错误消息,指出它找不到路径“C:\Users\xxxxx\xxxx”,即它正在第一个空格上分割路径。用单引号或双引号将路径括起来不会改变这一点,如果我尝试用反引号转义空格,我会收到一条消息,指出路径不存在。
【问题讨论】:
-
如果这是在
\User目录下,您的帐户是否有权限?你从DIR "C:\Users\xxxx\xxx xxx....ps1"得到什么?你从powershell.exe -NoLogo -NoProfile -Command "Get-ChildItem 'C:\Users\xxxx\xxx xxx....ps1'"得到什么? -
我使用过许多使用快捷方式运行的 PowerShell 脚本,(在没有执行策略限制的情况下运行),它们看起来非常相似,并且不受空格或括号的影响。
%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -ExecutionPolicy RemoteSigned -File "%UserProfile%\xxxx xxxx\Finance - Documents\Secure\xxx (Finance Officer)\Rent\Data File Loader - XXXXX\InvokeDataLoader.ps1"非常好。你确定他们的执行政策不是问题吗? -
假设脚本路径正确,您的命令应该如图所示(
-File与 double 引用路径的组合),即使路径包含空格。您可以在-File之前添加-NoExit以保持控制台窗口打开,这有助于故障排除。 -
@mklement0 我似乎仍然遇到双引号问题,但感谢 -NoExit 提示
-
@thistledown,它与引号没有任何关系,所有的响应,包括我的使用它们。唯一的区别是我使用了 PowerShell 可执行文件的完整路径,要求 PowerShell 不要加载配置文件,(这可能不是您需要的,取决于您的脚本所做的),我使用了非默认执行策略。我的建议是确定哪个是您的问题,是消除其中的每一个差异,一次一个,直到您的问题再次出现。
标签: powershell cmd shortcut