2013-04-08 15 views
5

Windows Azureロールで起動タスクcmd-scriptを実行しようとしています。Azure WorkerRoleでPowerShellコマンドを実行中にエラーが発生しました。

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

は今、私は、コマンドシェルからのエラーメッセージを取得している問題は、こう述べています:

これは、コマンドファイルのスクリプトの2行です

それがどのように見える
D:\Users\UserAccount>powershell $command = "set-executionpolicy Unrestricted" 
'powershell' is not recognized as an internal or external command, 
operable program or batch file. 

これらの特別な文字は私のcmdファイルにはないので、いくつかの種類の異なるコードページやlinkeが使用されています。 cmd-fileは、VS 2012 Ultimate経由でWindows 8上に作成されました。

コマンドの冒頭に特別な文字が表示されないようにするにはどうすればよいですか? cmd-fileからリモートデスクトップ経由でコンソールにコマンドをコピーすると、正常に動作します。

答えて

8

whatever.cmdファイルをVS 2012 Ultimateで開きます。 File - >Save whatever.cmd as - >をクリックすると、[save]ボタンの横に小さな矢印が表示されます。

Save With Encoding

は、それを選択します。これは、オプションSave with Encodingを持つことになり、メニューを表示されます。次に、利用可能なエンコードのリストから「US-ASCII Codepage 20127」を選択します。

+0

ありがとう、それが解決策でした! – sebastian87

+0

+1。このエンコーディングがなぜ必要なのかを詳しく説明できますか? –

+4

Visual Studioでは、デフォルトでBOM付きのUTF-8でファイルを保存します(バイトオーダーマーク - ファイルの最初のバイト)。 Windowsを含むOSは、 'script'ファイルを実行する際にこれを認識しません。これにより、BOM付きUTF-8で保存されたスクリプトファイルがすべて失敗します。一般的な経験則は、OSによって実行されるスクリプトファイル(DOSバッチファイル、PSファイル、BASCHスクリプト、Peral、PHPなど)であり、ネイティブのASCIIエンコーディングを持ちます。 – astaykov

関連する問題