我在使用PowerShell,Web部署和转义命令路径时遇到了大问题。我正在尝试在部署之前使用Web部署中的runCommand提供程序运行powershell脚本。但是,即使我用双引号括起来,powershell似乎也将空格解释为单独的参数。
如果我运行
,这就是输出web.deploy.cmd /y
Info: Updating runCommand (powershell.exe -ExecutionPolicy Bypass invoke-command "C:/local dev/mobile/Core/Web services/wsAuthUser/mobilestability/src/wsAuthUser/obj/Debug/Package/PackageTmp/install/installboot.ps1" -computername server01 -argumentlist Mobile2/AuthUser, pre).
但错误是:
Warning: Invoke-Command : A positional parameter cannot be found that accepts a
gument '
Warning: dev/mobile/Core/Web'.
At line:1 char:15
当整个路径都在引号中时,为什么会抱怨?
更新
如果我将以下内容粘贴到Powershell ISE中:
invoke-command "C:\group dev\mobile\Core\Web Services\wsAuthUser\mobilestability\src\wsAuthUser\obj\Debug\Package\PackageTmp\bin\install\installboot.ps1" -computername dev-mob2iis01 -argumentlist Mobile2/AuthUser, pre
运行正常,没有错误。
如果我然后打开一个命令提示符,通过相同的命令,但预先挂起powershell和执行策略参数,如下所示:
powershell.exe -ExecutionPolicy Bypass invoke-command "C:\localdev\mobile\Core\Web Services\wsAuthUser\mobilestability\src\wsAuthUser\obj\Debug\Package\PackageTmp\bin\install\installboot.ps1" -computername server01 -argumentlist Mobile2/AuthUser, pre
再次失败。
答案 0 :(得分:0)
因为它是windows,而不是unix。因此,您将使用反斜杠作为文件路径,而不是常规斜杠。
更新: 你只需要使用引号来使其通过cmd工作
powershell.exe -ExecutionPolicy Bypass -command "invoke-command 'C:\localdev\mobile\Core\Web Services\wsAuthUser\mobilestability\src\wsAuthUser\obj\Debug\Package\PackageTmp\bin\install\installboot.ps1' -computername server01 -argumentlist Mobile2/AuthUser, pre"