无法使用变量

时间:2020-04-07 21:33:12

标签: azure azure-cli azure-eventgrid

我正在尝试在Azure DevOps中创建一个动态的Azure CLI任务,使我们可以重用该任务。我目前最大的问题是在命令上动态设置--advanced-filter。

我看过这里的文档https://docs.microsoft.com/en-us/azure/event-grid/how-to-filter-events,使用过滤器变量显示的唯一位置是PowerShell命令而不是Azure CLI。我试图为CLI复制该语法,但是失败。

这是我要运行的命令。我从上面的Microsoft文档中获取了过滤器的语法。

$eventSubscriptionFilter = @{operator="StringContains"; key="data.messageTypeUri"; Value=@("myUriHere")}

az eventgrid event-subscription create --endpoint-type azurefunction --name $topicSubName --source-resource-id $topicid --endpoint $functionEndPoint --deadletter-endpoint $storageid/blobServices/default/containers/$containername --advanced-filter @($eventSubscriptionFilter)

如果我在没有--advanced-filter的情况下运行它,则效果很好,但是一旦添加--advanced-filter,我就会收到此错误:

az : usage error: --advanced-filter KEY[.INNERKEY] FILTEROPERATOR VALUE [VALUE ...]

这是我要做的吗?

--advanced-filter data.$myMember StringContains $myValue

我什至不确定那是否行得通。我将不得不在其中进行硬编码,而这将使这种动态化成为可能。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

如果要在Azure CLI命令中指定--advanced-filter,则该名称应类似于--advanced-filter [key] [operation] [value]。有关更多详细信息,请参阅document

例如(我在Powershell中对其进行了测试)

$key="data.Message"
$opreation="StringContains"
$value=@("test","test1")
az eventgrid event-subscription create 
 --name $topicSubName 
 --source-resource-id $topicid 
 --endpoint $functionEndPoint 
 --deadletter-endpoint $storageid/blobServices/default/containers/$containername 
 --advanced-filter $key $opreation $value

enter image description here