【问题标题】:Command Prompt powershell command to elevate batch file passing arguments [duplicate]命令提示符powershell命令提升批处理文件传递参数[重复]
【发布时间】:2019-02-13 22:11:11
【问题描述】:

我在 cmd 中使用 powershell 命令来提升批处理脚本并传递参数。参数包含双引号,但我不知道为什么它不起作用。

这是我的命令:

powershell -command "Start-Process -FilePath 'C:\My Path\update.bat' -ArgumentList '\"My File.zip\"'"

上面的命令工作正常,我的批处理脚本接收双引号中的参数,但是当我使用-Verb Runas 更改命令以提升时出现问题(批处理脚本打开,但立即关闭):

powershell -command "Start-Process -Verb Runas -FilePath 'C:\My Path\update.bat' -ArgumentList '\"My File.zip\"'"

【问题讨论】:

  • 这是一个answer,来自昨天刚刚发布的question,它可能会对您有所帮助!
  • 你太棒了。谢谢!
  • 我知道,但有时从我的治疗师以外的人那里听到它是件好事!

标签: powershell cmd runas elevation


【解决方案1】:

来自@Compo 上述回复的最终解决方案。当批处理脚本的路径也包含空格时,此解决方案对我有用并处理。

set "Args=%*"
net file 1>nul 2>&1 || (powershell -Command ^
Start-Process -Verb RunAs -FilePath '%comspec%' -ArgumentList '/c \""\""%~f0\"" %Args:"=\""%\""'
goto :eof)

【讨论】:

  • 感谢处理批处理文件路径包含嵌入空格的情况,但此解决方案仍然不完全可靠 - 请参阅 stackoverflow.com/a/54701990/45375
  • @mklement0,我同意。我正在研究一个更好的解决方案,但这至少让我克服了我看到的一些最初的问题。完成后我会跟进。
  • linked answer 是我尝试创建一个完全强大的解决方案;我邀请您尝试并告诉我们是否存在无法正确处理的情况 - 如果可能,我很乐意修改它。
  • @mkelement0,你一天前在哪里?工作完美,谢谢。
猜你喜欢
  • 2012-04-18
  • 2019-11-13
  • 1970-01-01
  • 1970-01-01
  • 2019-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-09
相关资源
最近更新 更多