2013-04-08 20 views
5

Bir Windows Azure Rolünde bir başlangıç ​​görevi cmd komut dosyasını çalıştırmaya çalışıyorum.PowerShell Komutlarını Çalıştırma Hatası Azure WorkerRole

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

Şimdi, komut kabuğundan bir hata mesajı alıyorum olduğunu sorun, der ki::

Bu komut dosyası yazısının iki hatlarıdır

Öyle görünüyor
D:\Users\UserAccount>powershell $command = "set-executionpolicy Unrestricted" 
'powershell' is not recognized as an internal or external command, 
operable program or batch file. 

Bu tür özel chars'ler benim cmd dosyamda olmadığı için, bir çeşit farklı kod sayfası veya bir şey linke kullanılır. Cmd dosyası, VS 2012 Ultimate aracılığıyla Windows 8'de oluşturuldu.

Komutun başında özel karakterleri nasıl reddedebilirim? Komutu cmd dosyasından uzak masaüstüyle konsola kopyalarsam iyi çalışır!

cevap

8

whatever.cmd dosyanızı VS 2012 Ultimate ile açın. File ->Save whatever.cmd as -> iletişim kutusuna tıklayın, [save] düğmesinin yanında küçük bir ok var.

Save With Encoding

onu seçin: Bu seçenek Save with Encoding olacak bir menü görünecektir. Şimdi mevcut kodlamalar listesinden "US-ASCII Codepage 20127" yi seçin.

+0

Teşekkürler, çözüm bu! – sebastian87

+0

+1. Bu kodlamanın neden gerekli olduğunu açıklayabilir misiniz? –

+4

Visual Studio varsayılan olarak dosyaları BOM ile UTF-8'e kaydedin (Bayt Sırası İşareti - Dosyanın ilk baytı). Windows dahil OS'ler, 'script' dosyalarını çalıştırırken bunu tanımıyor. Bu, başarısız olması için BOM ile UTF-8'de kaydedilen herhangi bir komut dosyasına neden olur. Genel Genel Kural, OS tarafından çalıştırılacak komut dosyaları (DOS Batch dosyaları, PS dosyaları, BASCH komut dosyaları, Peral, PHP, vb.), Yerel ASCII Kodlama sahip olmaktır. – astaykov

İlgili konular