場合msdeploy runCommand関数からPowerShellを実行すると、終了しません
-
26-09-2019 - |
質問
イム場合msdeployは、リモートサーバー上でPowerShellスクリプトを実行するために取得しようとしています。これは私がする場合msdeployを実行する方法です。
msdeploy \
-verb:sync \
-source:runCommand='C:\temp\HelloWorld.bat', \
waitInterval=15000,waitAttempts=1 \
-dest:auto,computername=$WebDeployService$Credentials -verbose
HelloWorld.bat含まれています:
echo "Hello world!"
powershell.exe C:\temp\WebDeploy\Package\HelloWorld.ps1
echo "Done"
HelloWorld.ps1しか含まれています:
Write-Host "Hello world from PowerShell!"
PowerShellが終了したことがないようにしかし、それはそうです。これは、場合msdeployを実行しているから出力されます:
Verbose: Performing synchronization pass #1.
Verbose: Source runCommand (C:\temp\HelloWorld.bat) does not match destination (C:\temp\HelloWorld.bat) differing in attributes (isSource['True','False']). Update pending.
Info: Updating runCommand (C:\temp\HelloWorld.bat).
Info:
Info: C:\temp>echo "Hello world!"
"Hello world!"
C:\temp\WebDeploy>powershell.exe C:\temp\HelloWorld.ps1
Info: Hello world from Powershell!
Info:
Warning: The process 'C:\Windows\system32\cmd.exe' (command line '/c "C:\Users\peter\AppData\Local\Temp\gaskgh55.b2q.bat
"') is still running. Waiting for 15000 ms (attempt 1 of 1).
Error: The process 'C:\Windows\system32\cmd.exe' (command line '/c "C:\Users\peter\AppData\Local\Temp\gaskgh55.b2q.bat"'
) was terminated because it exceeded the wait time.
Error count: 1.
誰もが解決策を知っている?
解決
この報告された問題に似てあなたのシナリオと問題表情: STDINがリダイレクトされている場合は、たpowershell.exeハングアップすることができますの
このような場合は、そして、この回避策を試してください:使用-inputformat none
ます:
powershell.exe -inputformat none C:\temp\WebDeploy\Package\HelloWorld.ps1
私はこのような.batファイルを呼び出す「偽の場合msdeploy」プログラムでこれを試してみました。
using System.Diagnostics;
class Program
{
static void Main(string[] args)
{
ProcessStartInfo si = new ProcessStartInfo();
si.FileName = "cmd.exe";
si.Arguments = "/c " + args[0];
si.RedirectStandardInput = true;
si.UseShellExecute = false;
var process = Process.Start(si);
process.WaitForExit();
}
}
このデモでは、あなたが記述するのと同じ問題を持っているし、回避策が役立ちます。 msdeploy
は、同一または類似の方法で、.batファイルを呼び出す場合は、うまくいけば、これは解決されます。
他のヒント
powershell.exe -file ScriptFile.ps < CON
これは文書化されていない機能に頼らずに問題を解決します。
所属していません StackOverflow