2016-12-06 15 views
0

PowerShellスクリプトをStartTaskで実行しようとしましたが、エラーが発生しました。以下では、プールタスク開始を作成するときに、私は間違っていたコードです:azureバッチで.ps1スタートアップタスクを作成する際に予期しないトークンエラーが発生しました

def create_pool(batch_service_client, pool_id, resource_files, node_os_family): 
    print('Creating pool [{}]...'.format(pool_id)) 
    task_commands = [ 
     'copy $AZ_BATCH_TASK_WORKING_DIR/python_tutorial_task.py $AZ_BATCH_NODE_SHARED_DIR', 
     'powershell.exe -command set-executionpolicy remotesigned', 
     "powershell.exe -command $AZ_BATCH_NODE_STARTUP_DIR" + "\\" + "PrepPython.ps1", 
     'pip install azure-batch', 
     'pip install azure-storage', 
     'pip install cryptography'] 
    ... ... 

以降私は1つのラインが先に「cmd.exeの/ c」を付けにこれらのコマンドを包みました。しかし、これはうまくいかず、次のエラーが発生し続けました。

At line:1 char:27 
+ $AZ_BATCH_NODE_STARTUP_DIR\PrepPython.ps1 
+       ~~~~~~~~~~~~~~~ 
Unexpected token '\PrepPython.ps1' in expression or statement. 
    + CategoryInfo   : ParserError: (:) [], ParentContainsErrorRecordEx 
    ception 
    + FullyQualifiedErrorId : UnexpectedToken 
... ... 

誰でもこのアイデアはありますか?

+0

ご意見ありがとうございますが、これはまだ動作しません。そして、エラー・メッセージが次のように変わります。{引数 '$ AZ_BATCH_NODE_STARTUP_DIR \ PrepPython.ps1'を-Fileパラメーターに指定していません。既存の.ps1ファイルへのパスを-Fileパラメータの引数として指定します。}しかし、私はファイルが存在すると思います。 – user123

+0

@Avshalomまた、私は自分のローカルコンピュータでスクリプトをテストしたので、 '-command'を '-file'に変更することは問題ではないと考えています。両方ともうまくいきました。 – user123

+0

これを試すことができます: 'powershell.exe -file "$ AZ_BATCH_NODE_STARTUP_DIR \ PrepPython.ps1" ' – Avshalom

答えて

0

あなたがWindows上で、あなたのコマンドを実行していることが表示されます。環境変数の形式が正しくありません。%VAR%形式のLinux $VAR形式を使用しています。また、ディレクトリセパレータのスラッシュが混在しているようです(たとえば、最初のコピーコマンド)。

+0

ああ、それは良い点です!私はそれを変えようとします、思い出させてくれてありがとう! – user123

0

同様の問題が発生していました。以下は、私は「コマンド」の値を構成していた方法ですが、あなたの変数を使用して:

cmd /c powershell.exe %AZ_BATCH_NODE_STARTUP_DIR%\PrepPython.ps1 
+0

ああ、私はこれらのコマンドが後にこのフォームに組み込まれたことに言及するのを忘れていました。 – user123

関連する問題