Why dont you use the powershell cmdlets provided by Web Deploy instead of using the exe? These cmdlets get installed by default since V3.
PowerShell sometimes fail to execute .exe
-
28-09-2022 - |
Question
I am trying to script something to sync up IIS servers using MSdeploy.
I tried all the possible ways to run the .exe but sometimes I get this error:
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.
When I execute the same script again after running it the first time it works fine. This is how I ended up calling it:
& 'C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe' -verb:sync ...
Any ideas how to prevent it from failing the first time?
No correct solution
OTHER TIPS
I generally recommend that people use the Start-Process
cmdlet to call external executables.
$MsDeploy = 'C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe';
$ArgumentList = '-verb:sync ... ... ...';
Start-Process -FilePath $MsDeploy -ArgumentList $ArgumentList -Wait -NoNewWindow;
Keep in mind that C:\Program Files
gets redirected for 32-bit processes, so
- Make sure you're starting the same process bitness for powershell.exe (or whatever is hosting PowerShell).
- Use $env:ProgramFiles for a more robust script and put it in quotes along with the full path since the path will likely have spaces in it.
To always use the 32-bit powershell process, on a 32-bit machine run:
%SystemRoot%\system32\WindowsPowerShell\v1\powershell.exe
On a 64-bit machine, run:
%SystemRoot%\SysWOW64\WindowsPowerShell\v1\powershell.exe
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow