从 Azure 批处理自定义调用 PowerShell 脚本 activity

Calling a PowerShell script from Azure batch custom activity

我正在尝试 运行 来自 Azure、数据工厂、批处理服务、自定义 Activity 的 PowerShell 脚本。我最接近这项工作的是:

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 "Hello from Azure" 所以我可以看到 powershell 正在工作。我没有得到的是如何使用环境变量引用 ps1 脚本文件。有谁知道使它正常工作的语法糖吗?

通过架构师 Jamie 的输入(包括他删除的编辑!!!将编辑放回原处直接导致解决方案),我能够将一些东西组合在一起以使其发挥作用。命令行开头的双 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')

试试这个:

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

无法访问单引号限定字符串内的对象成员属性或方法。在 PowerShell 中使用双引号允许您在运行时扩展变量。

编辑:

尽管上述内容属实,但在本例中,错误的原因是 PowerShell 将添加的路径视为环境变量标识符的一部分。如上所述使用 $() 变量扩展将起作用,您还应该能够使用 ('$env:AZ_BATCH_TASK_DIR' + '\ws\processInAzure.ps1')