PowerShell有时无法执行.exe

时间:2014-01-15 16:39:33

标签: powershell webdeploy invoke-command

我正在尝试编写使用MSdeploy同步IIS服务器的内容。

我尝试了所有可能的方法来运行.exe但有时我会收到此错误:

The term 'C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe' is 
not recognized as the name of a cmdlet, function, script file, or 
operable program. Check the spelling of the name, or if a path was included, 
verify that the path is correct and try again.

当我第一次运行它后再次执行相同的脚本它工作正常。这就是我最后调用它的方式:

& 'C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe' -verb:sync ...

任何想法如何防止它第一次失败?

3 个答案:

答案 0 :(得分:1)

为什么不使用Web Deploy提供的powershell cmdlet而不是使用exe?默认情况下,从V3开始安装这些cmdlet。

答案 1 :(得分:0)

我通常建议人们使用Start-Process cmdlet调用外部可执行文件。

$MsDeploy = 'C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe';
$ArgumentList = '-verb:sync ... ... ...';
Start-Process -FilePath $MsDeploy -ArgumentList $ArgumentList -Wait -NoNewWindow;

答案 2 :(得分:0)

请记住C:\Program Files被重定向到32位进程,所以

  1. 确保您为powershell.exe(或托管PowerShell的任何内容)启动相同的进程位数。
  2. 使用$ env:ProgramFiles创建一个更健壮的脚本,并将其与完整路径一起放在引号中,因为路径中可能包含空格。
  3. 要在32位机器运行中始终使用32位PowerShell进程:

    %SystemRoot%\system32\WindowsPowerShell\v1\powershell.exe
    

    在64位计算机上,运行:

    %SystemRoot%\SysWOW64\WindowsPowerShell\v1\powershell.exe