2013-04-08 84 views
5

我試圖在Windows Azure角色上運行啓動任務cmd腳本。在Azure WorkerRole上運行PowerShell命令時出錯

這是命令文件腳本的兩行:

powershell $command = "set-executionpolicy Unrestricted"  
powershell $command = ".\setupAgent.ps1" -NonInteractive >; out.txt 

現在是,我得到的命令shell錯誤消息的問題,上面寫着:

D:\Users\UserAccount>powershell $command = "set-executionpolicy Unrestricted" 
'powershell' is not recognized as an internal or external command, 
operable program or batch file. 

它看起來像有使用某種不同的代碼頁或連接,因爲這些特殊字符不在我的cmd文件中。 cmd文件是通過VS 2012 Ultimate在Windows 8上創建的。

你有什麼想法,我怎麼能在命令開始時忽略特殊字符?如果我通過遠程桌面將命令從cmd文件複製到控制檯,它可以正常工作!

回答

8

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

Save With Encoding

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

+0

謝謝,這是解決方案! – sebastian87 2013-04-11 13:12:14

+0

+1。你能否詳細說明爲什麼需要這種編碼? – 2014-11-14 18:52:23

+4

Visual Studio默認將文件保存爲UTF-8和BOM(字節順序標記 - 文件的第一個字節)。包括Windows在內的操作系統在執行'script'文件時無法識別這一點。這會導致任何以UTF-8和BOM保存的腳本文件失敗。一般的經驗法則是,要由OS執行的腳本文件(DOS批處理文件,PS文件,BASCH腳本,Peral,PHP等)具有本機ASCII編碼。 – astaykov 2014-11-14 21:09:19