Вызов сценария PowerShell из пакетной пользовательской операции Azure - PullRequest
0 голосов
/ 28 октября 2019

Я пытаюсь запустить сценарий PowerShell из Azure, фабрики данных, пакетной службы, настраиваемой активности. Самое близкое, что я получил к этой работе, это следующее:

powershell powershell -command  '$env:AZ_BATCH_TASK_DIR\wd\processInAzure.ps1'

Когда я запускаю это, я получаю следующее сообщение об ошибке

At line:1 char:23
+ $env:AZ_BATCH_TASK_DIR\wd\processInAzure.ps1
+                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Unexpected token '\wd\processInAzure.ps1' in expression or statement.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : UnexpectedToken

Мне удалось получить каталограспечатка $ env: AZ_BATCH_TASK_DIR \ wd и увидеть, что processInAzure.ps1 существует в этом месте. Я был в состоянии Write-Host «Привет из Azure», так что я вижу, что powershell работает. То, что я не получаю, это как ссылаться на файл сценария ps1, используя переменную окружения. Кто-нибудь знает синтаксис «сахар», чтобы заставить это работать?

Благодаря вкладу архитектора Джейми (включая его удаленное редактирование !!! Поместите редактирование обратно, оно напрямую привело к решению), я смог собрать несколько вещей, чтобы получитьэто на работу. Двойной PowerShell в начале командной строки не является опечаткой. Вот что получилось:

powershell powershell -command ("$env:AZ_BATCH_TASK_DIR" + '\wd\processInAzure.ps1')

Что не сработало, так это:

powershell powershell -command ("$env:AZ_BATCH_TASK_DIR" + "\wd\processInAzure.ps1")
powershell powershell -command ("$env:AZ_BATCH_TASK_DIR\wd\processInAzure.ps1")
powershell -command ("$env:AZ_BATCH_TASK_DIR" + '\wd\processInAzure.ps1')

1 Ответ

1 голос
/ 28 октября 2019

Попробуйте это:

powershell -command "$($env:AZ_BATCH_TASK_DIR)\ws\processInAzure.ps1"

Невозможно получить доступ к свойствам или методам элемента объекта внутри строк, указанных в одинарных кавычках. Использование двойной кавычки в PowerShell позволяет расширять переменные во время выполнения.

Редактировать:

Хотя вышеизложенное верно, в данном случае причина ошибки заключается в том, что PowerShell обрабатывает путь, являющийсяприкреплен как часть идентификатора переменной среды. Использование расширения переменной $ (), как описано выше, будет работать, и вы также сможете использовать ('$env:AZ_BATCH_TASK_DIR' + '\ws\processInAzure.ps1')

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...