簡體   English   中英

卡在Powershell中的命令,但不在Cmd.exe中

[英]Stuck command in Powershell but not in Cmd.exe

我面臨一個問題,我的powershell腳本有一個非常奇怪的提示。

有一個大腳本:

Write-Host "Installation in progress..." 
Invoke-Command -Session $session -ThrottleLimit 64 -ScriptBlock {.\XenDesktopServerSetup.exe /QUIET /CONFIGURE_FIREWALL /components $using:componentparam /nosql }
Write-Host "Installation completed" 

有時即使完成XenDesktopServerSetup.exe的執行,我的腳本也不會傳遞給下一個命令Write-Host "Installation completed"我仍然需要單擊外殼中的某個位置或使用CTRL + C斷開腳本以查看我的結尾腳本;

我試圖更改ThrottleLimit ,但沒有效果。

我正在使用Powershell V4.0。

$ Session中只有一台服務器。

編輯:直接在我的服務器上嘗試了此命令,我打開了PS Shell並執行了:

.\XenDesktopServerSetup.exe /QUIET /CONFIGURE_FIREWALL /components CONTROLLER /nosql 

我有同樣的問題 !

但是,當我在Cmd.exe中嘗試相同的命令時,它每次都能完美運行!

如何在Cmd.exe中執行此命令? 我想要這樣的東西:

Write-Host "Installation in progress..." 
Invoke-Command -Session $session -ThrottleLimit 64 -ScriptBlock {Cmd.exe .\XenDesktopServerSetup.exe /QUIET /CONFIGURE_FIREWALL /components $using:componentparam /nosql }
Write-Host "Installation completed"

這向我們展示了cmd.exe和powershell在PS如何調用.exe文件方面存在差異,但是我完全不理解為什么它在cmd.exe中起作用,而在powershell中卻不起作用

謝謝你的建議

您確定所有遠程服務器都已完成嗎? 您可以使用-AsJob參數,然后使用Get-Job定期檢查每個作業的狀態。 使用Receive-Job檢索輸出。 您甚至可以使用Wait-Job $ jobs -Timeout 120等待所有超時結束

這是我解決的方法,我進行了很多測試,沒有任何問題:

Write-Host "Installation in progress..." 
Invoke-Command -Session $session -ScriptBlock {$Components = $using:componentparam}
Invoke-Command -Session $session -ScriptBlock {Invoke-Expression "cmd /C '$IsoLetter\x64\XenDesktop Setup\XenDesktopServerSetup.exe' /QUIET /CONFIGURE_FIREWALL /components $Components /nosql" }
Write-Host "Installation completed"

你怎么看? 我認為問題出在.exe文件中。

但最后我通過使用Invoke-expressioncmd /C解決了它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM