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),但它似乎有效,所以希望它在未来继续得到支持......
我有以下功能:
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),但它似乎有效,所以希望它在未来继续得到支持......