2016-12-06 3 views
0

일괄 StartTask에서 powershell 스크립트를 실행하려고하는데 오류가 발생했습니다. 다음은 풀 startTask를 만들 때 내가 잘못된 코드입니다 :푸른 색 일괄 처리에서 .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'] 
    ... ... 

그리고 나중에 내가 한 줄에 앞서 "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