【问题标题】:Calling a PowerShell script from Azure batch custom activity从 Azure 批处理自定义活动调用 PowerShell 脚本
【发布时间】:2020-02-24 03:25:48
【问题描述】:

我正在尝试从 Azure、数据工厂、批处理服务、自定义活动中运行 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。我已经能够写主机“来自 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')

【问题讨论】:

    标签: azure powershell azure-data-factory-2


    【解决方案1】:

    试试这个:

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

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

    编辑:

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

    【讨论】:

    • Jamie,这本身可能在普通命令窗口中工作,但在 Azure 数据工厂批处理服务自定义活动中却没有。如果您将您的编辑与字符串的连接一起放回去,我会将其标记为答案。
    • 回滚。很高兴这有所帮助:)
    猜你喜欢
    • 2020-02-26
    • 1970-01-01
    • 2014-10-14
    • 2011-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-07
    • 1970-01-01
    相关资源
    最近更新 更多