String 这个时候出乎意料

String was unexpected at this time

我有以下功能:

function Add-Variable {
    Param
    (
        [Parameter(Mandatory=$true, Position=0)]
        [string] $ProjectName,

        [Parameter(Mandatory=$true, Position=1)]
        [string] $VariableGroupId,

        [Parameter(Mandatory=$true, Position=2)]
        [string] $VariableName,

        [Parameter(Mandatory=$true, Position=3)]
        [string] $Value,

        [Parameter(Mandatory=$false, Position=4)]
        [bool] $IsSecret = $false

    )

    Write-Host
    Write-Host "Adding $($VariableName) variable..."
    $DeploymentPath = az pipelines variable-group variable create --project $ProjectName --group-id $VariableGroupId --name $VariableName --value $Value | Null-Check $VariableName
}

我多次调用此函数,例如

Add-Variable $ProjectAlias $GlobalVarGroup.id 'Deployment.Path' 'D:\Websites$(Hostname)'
Add-Variable $ProjectAlias $GlobalVarGroup.id 'Apppool.Username' $IISUser

但是,当我进行以下调用时:

Add-Variable $ProjectAlias $GlobalVarGroup.id 'Log.Path' '\svr-prdfs$(ASPNETCORE_ENVIRONMENT)\Logs$(Hostname)$(Agent.MachineName)'

我收到这个错误:

az : \Logs$(Hostname)$(Agent.MachineName) was unexpected at this time.
At C:\Users\richa\OneDrive\Documents\Azure CLI\helpers.ps1:24 char:23
+ ... ymentPath = az pipelines variable-group variable create --project $Pr ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (\Logs$(Hostnam...d at this time.:String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError

我想知道这是否是由于传递的字符串包含诸如 $(Agent.MachineName) 之类的值,但是,我在单引号中传递这些值,因此我希望它们被评估为文字字符串。

此外,上述调用在 'D:\Websites$(Hostname)' 作为参数传递的情况下有效,因此这似乎与该理论相矛盾。

有人知道这里的问题是什么吗?

这是我正在尝试实现的示例 - 这是我手动输入到 azure devops 中并希望通过 azure cli 执行此操作的示例。

重新发布评论作为答案…

这看起来像一个类似的问题 - How to pass a variable into the 'az pipelines variable-group variable create' command

那里的一个答案建议在单引号内添加双引号,以便 az 正确解析该值 - 在您的情况下是 '”\svr-prdfs$(ASPNETCORE_ENVIRONMENT)\Logs$(Hostname)$(Agent.MachineName)”’.

我找不到任何描述此行为的权威文档(这是我能找到的最接近的文档 - https://docs.microsoft.com/en-us/cli/azure/use-cli-effectively#using-quotation-marks-in-values),但它似乎有效,所以希望它在未来继续得到支持......