2012-08-03 185 views
2

我有一個啓動任務,用於從我的卷軸下載一些可執行文件,然後繼續安裝。Azure啓動任務,等待所有其他任務完成

從.cmd文件中,我啓動一個下載文件的Power Shell腳本,然後從.cmd啓動該文件。

如果我在發佈完成後通過RDP手動運行腳本,該腳本可以正常工作。

但是,如運行啓動腳本時,有時(經常)不能在不同的點。

taskType設置爲background

上次的錯誤是PowerShell不存在命令

另外,我跑我的PS腳本之前使用powershell -command set-executionpolicy unrestricted,但我讀here其他任務可以重設此設置,使我的失敗。

很亂。

所以這讓我覺得,如果我可以等待所有其他任務開始我之前來執行,這將消除這類問題

我想,如果某個進程正在運行,我可以檢查並等待它完成,但我沒有線索至關重要的過程來檢查。

或者也許還有另一種解決方案。

〜編輯〜

我讀here大約PowerShell中不存在可以通過批處理文件造成的錯誤被保存在Visual Studio UTF-8。我在記事本++中重新編寫它,並確保它保存爲ANSI。然後,同樣的錯誤。完整的信息是:

'PowerShell'不被識別爲內部或外部命令, 可操作的程序或批處理文件。

同樣,腳本可以在遠程桌面的命令行中完美運行。

+0

你可以嘗試將你的'taskType'從** simple **改爲** ** **嗎? RDP通過** background **啓用,這可能會導致您遇到此問題。 – SliverNinja 2012-08-03 19:52:01

+0

'taskType'已經設置爲'background',我忘了提及它。 – Johnny5 2012-08-03 20:11:21

+0

你在安裝什麼?它是否將任何功能添加到IIS?有一個稱爲IISConfigurator.exe的進程引導了IIS,但是我沒有足夠的上下文來解釋你試圖用安裝程序實現的目標。 – 2012-08-04 17:55:22

回答

0

可以在需要完成的腳本末尾設置環境變量,然後在等待依賴關係的腳本中循環,直到設置了環境變量,然後啓動其活動。

您也可以運行單個powershell腳本中的所有內容,並在您的安裝程序語句中使用'-asjob'開關,使用'wait-job'cmdlet阻止,直到任務完成,然後繼續。 Powershell還提供'?!'確保最後一條語句正確執行的操作符。

+0

問題是我無法控制其他任務。例如,遠程桌面的設置。這是MS代碼。 – Johnny5 2012-08-05 03:19:28

0

這可能是由編碼問題引起的。如this answer中所述,您應將文件保存在ASCII以確保正確解釋您的腳本。

從鏈接答案:

與VS 2012終極打開whatever.cmd文件。在對話框中點擊File-> Save whatever.cmd as - > [save]按鈕旁邊的小箭頭。它會顯示一個菜單,可以選擇Save with Encoding選項。

選擇它。現在從可用編碼列表中選擇「US-ASCII Codepage 20127」。