azure - 在 Powershell 上使用服务总线队列 InputObject 参数
问题描述
我有一个 Azure 服务总线命名空间,它有数百个队列,我需要将MaximumDeliveryCount设置为 1 而不是默认值 10。在门户上手动执行显然需要时间。所以我想通过 PowerShell 脚本来完成。
不确定 -InputObject 参数应该是什么。Microsoft 文章Set-AzServiceBusQueue说 InputObject 类型是此处给出的PSQueueAttributes PSQueueAttributes 类
我尝试输入“MaxDeliveryCount”属性但收到此错误:
Set-AzServiceBusQueue : Cannot bind parameter 'InputObject'. Cannot convert the "MaxDeliveryCount" value of type "System.String" to type
"Microsoft.Azure.Commands.ServiceBus.Models.PSQueueAttributes".
At line:7 char:121
+ ... $Servicebus_namespace -Name $_ -InputObject MaxDeliveryCount -WhatIf
+ ~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Set-AzServiceBusQueue], ParameterBindingException
+ FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.Azure.Commands.ServiceBus.Commands.Queue.SetAzureRmServiceBusQueue
这是代码:
$Servicebus_queue = (Get-AzServiceBusQueue -ResourceGroupName $Resourcegroup_name -Namespace $Servicebus_namespace).Name
$Servicebus_queue
$Servicebus_queue.foreach{
$Servicebus_queue = (Get-AzServiceBusQueue -ResourceGroupName $Resourcegroup_name -Namespace $Servicebus_namespace)
$Servicebus_queue.MaxDeliveryCount = 1
Set-AzServiceBusQueue -ResourceGroupName $Resourcegroup_name -Namespace $Servicebus_namespace -Name $_ -InputObject MaxDeliveryCount
}
我到处研究过,但找不到任何解决方案。上面的链接也路由到用于 Set-AzServiceBusQueue 命令的 AzureRM 模块。
感谢是否有人可以提供帮助。
解决方案
根据我的评论,您需要将队列对象(即PSQueueAttributes
实例)传递Set-AzServiceBusQueue
给foreach
.
下面的示例应该有望帮助理顺事情......
# get a queue (or an array of queues). remove the ().Name as this just extracts
# their names and we really want the whole queue object. also, pluralise the
# variable name so it doesn't collide with our loop variables
$Servicebus_queues = Get-AzServiceBusQueue -ResourceGroupName $Resourcegroup_name -Namespace $Servicebus_namespace
$Servicebus_queues.foreach{
# get a reference to the current ppieline variable
# see https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_automatic_variables?view=powershell-6#_
$Servicebus_queue = $_
$Servicebus_queue.MaxDeliveryCount = 1
# -InputObject needs to be a queue (i.e. a PSQueueAttributes instance)
Set-AzServiceBusQueue -ResourceGroupName $Resourcegroup_name -Namespace $Servicebus_namespace -Name $_ -InputObject $Servicebus_queue
}
推荐阅读
- ios - 如何在 UICollectionViewCell 中使用 WKWebView?
- java - 如何使用通配符类结果的方法
- postgresql - 使用来自 XOR 的 fk 连接表
- python - drawControl 没有收到正确的 QStyleOption
- git - git 快进合并是否会更改合并提交的 SHA?
- java - 如何延长 SOAP 标头消息时间戳的过期时间
- sql - 当我插入数据时,它总是说外键不匹配。我找不到原因?
- python - Selenium 无法加载给定的 URL,而是加载主页
- php - 调用未定义函数 gnupg_init()
- resttemplate - 休息模板没有给出正确的响应体