2013-04-08 35 views
5

Tôi đang cố gắng chạy tác vụ khởi động cmd-script trên Vai trò Windows Azure.Lỗi khi chạy Lệnh PowerShell trên Azure WorkerRole

Đây là hai dòng kịch bản tập lệnh:

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

Bây giờ vấn đề là, tôi nhận được một thông báo lỗi từ vỏ lệnh, nói rằng:

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

Dường như có được sử dụng một số loại codepages khác nhau hoặc một cái gì đó linke rằng, bởi vì những ký tự đặc biệt không có trong tập tin cmd của tôi. Tệp cmd được tạo trên Windows 8 qua VS 2012 Ultimate.

Bạn có ý tưởng không, làm cách nào tôi có thể loại bỏ các ký tự đặc biệt ở đầu lệnh? Nếu tôi sao chép lệnh từ tập tin cmd sang bàn điều khiển thông qua máy tính từ xa, nó hoạt động tốt!

Trả lời

8

Mở tệp whatever.cmd với VS 2012 Ultimate của bạn. Nhấp vào File ->Save whatever.cmd as -> trên hộp thoại có mũi tên nhỏ bên cạnh nút [save]. Nó sẽ hiển thị một menu sẽ có tùy chọn Save with Encoding:

Save With Encoding

Chọn nó. Bây giờ chọn "US-ASCII Codepage 20127" từ danh sách các mã hóa có sẵn.

+0

Cảm ơn, đó là giải pháp! – sebastian87

+0

+1. Bạn có thể giải thích tại sao mã hóa này là cần thiết không? –

+4

Visual Studio theo mặc định lưu tệp trong UTF-8 bằng BOM (Dấu byte đơn hàng - Các byte đầu tiên của tệp). Hệ điều hành, bao gồm cả Windows không nhận ra điều này khi thực thi các tệp 'script'. Điều này gây ra bất kỳ tập tin kịch bản, được lưu trong UTF-8 với BOM để thất bại. Quy tắc chung là các tệp kịch bản (tệp DOS Batch, tệp PS, kịch bản BASCH, Peral, PHP, v.v.) sẽ được hệ điều hành thực thi, để có Mã hóa ASCII gốc. – astaykov

Các vấn đề liên quan