使用 PowerShell 來管理服務匯流排資源

Microsoft Azure PowerShell 是一種指令碼環境,可讓您用來控制及自動化 Azure 服務的部署和管理。 本文說明如何使用本機 Azure PowerShell 主控台或指令碼,運用服務匯流排 Resource Manager PowerShell 模組來佈建及管理服務匯流排實體 (命名空間、佇列、主題和訂用帳戶)。

您也可以使用 Azure Resource Manager 範本來管理服務匯流排實體。 如需詳細資訊,請參閱使用 Azure Resource Manager 範本建立服務匯流排資源文章。

注意

建議您使用 Azure Az PowerShell 模組來與 Azure 互動。 請參閱安裝 Azure PowerShell 以開始使用。 若要了解如何移轉至 Az PowerShell 模組,請參閱將 Azure PowerShell 從 AzureRM 移轉至 Az

必要條件

開始之前,您需要下列必要條件:

開始使用

第一個步驟是使用 PowerShell 來登入 Azure 帳戶和 Azure 訂用帳戶。 遵循開始使用 Azure PowerShell Cmdlet 中的指示登入您的 Azure 帳戶,並擷取及存取 Azure 訂用帳戶中的資源。

佈建服務匯流排命名空間

使用服務匯流排命名空間時,您可以使用 Get-AzServiceBusNamespaceNew-AzServiceBusNamespaceRemove-AzServiceBusNamespaceSet-AzServiceBusNamespace Cmdlet。

這個範例會在指令碼中建立幾個區域變數:$Namespace$Location

  • $Namespace 為我們想要使用之服務匯流排命名空間的名稱。
  • $Location 會識別我們在其中佈建命名空間的資料中心。
  • $CurrentNamespace 會儲存我們擷取 (或建立) 的參考命名空間。

在實際的指令碼中,$Namespace$Location 可以參數的方式傳遞。

這部分的指令碼會執行下列作業:

  1. 嘗試擷取具有指定名稱的服務匯流排命名空間。

  2. 如果找到命名空間,它會回報找到的項目。

  3. 如果找不到命名空間,它會建立命名空間,然後擷取新建立的命名空間。

     # Query to see if the namespace currently exists
    $CurrentNamespace = Get-AzServiceBusNamespace -ResourceGroup $ResGrpName -NamespaceName $Namespace
    
    # Check if the namespace already exists or needs to be created
    if ($CurrentNamespace)
    {
        Write-Host "The namespace $Namespace already exists in the $Location region:"
     	# Report what was found
     	Get-AzServiceBusNamespace -ResourceGroup $ResGrpName -NamespaceName $Namespace
    }
    else
    {
        Write-Host "The $Namespace namespace does not exist."
        Write-Host "Creating the $Namespace namespace in the $Location region..."
        New-AzServiceBusNamespace -ResourceGroup $ResGrpName -NamespaceName $Namespace -Location $Location
        $CurrentNamespace = Get-AzServiceBusNamespace -ResourceGroup $ResGrpName -NamespaceName $Namespace
        Write-Host "The $Namespace namespace in Resource Group $ResGrpName in the $Location region has been successfully created."
    
    }
    

建立命名空間授權規則

下列範例示範如何使用 New-AzServiceBusAuthorizationRuleGet-AzServiceBusAuthorizationRuleSet-AzServiceBusAuthorizationRuleRemove-AzServiceBusAuthorizationRule Cmdlet 來管理命名空間授權規則。

# Query to see if rule exists
$CurrentRule = Get-AzServiceBusAuthorizationRule -ResourceGroup $ResGrpName -NamespaceName $Namespace -AuthorizationRuleName $AuthRule

# Check if the rule already exists or needs to be created
if ($CurrentRule)
{
    Write-Host "The $AuthRule rule already exists for the namespace $Namespace."
}
else
{
    Write-Host "The $AuthRule rule does not exist."
    Write-Host "Creating the $AuthRule rule for the $Namespace namespace..."
    New-AzServiceBusAuthorizationRule -ResourceGroup $ResGrpName -NamespaceName $Namespace -AuthorizationRuleName $AuthRule -Rights @("Listen","Send")
    $CurrentRule = Get-AzServiceBusAuthorizationRule -ResourceGroup $ResGrpName -NamespaceName $Namespace -AuthorizationRuleName $AuthRule
    Write-Host "The $AuthRule rule for the $Namespace namespace has been successfully created."

    Write-Host "Setting rights on the namespace"
    $authRuleObj = Get-AzServiceBusAuthorizationRule -ResourceGroup $ResGrpName -NamespaceName $Namespace -AuthorizationRuleName $AuthRule

    Write-Host "Remove Send rights"
    $authRuleObj.Rights.Remove("Send")
    Set-AzServiceBusAuthorizationRule -ResourceGroup $ResGrpName -NamespaceName $Namespace -AuthRuleObj $authRuleObj

    Write-Host "Add Send and Manage rights to the namespace"
    $authRuleObj.Rights.Add("Send")
    Set-AzServiceBusAuthorizationRule -ResourceGroup $ResGrpName -NamespaceName $Namespace -AuthRuleObj $authRuleObj
    $authRuleObj.Rights.Add("Manage")
    Set-AzServiceBusAuthorizationRule -ResourceGroup $ResGrpName -NamespaceName $Namespace -AuthRuleObj $authRuleObj

    Write-Host "Show value of primary key"
    $CurrentKey = Get-AzServiceBusKey -ResourceGroup $ResGrpName -NamespaceName $Namespace -Name $AuthRule
        
    Write-Host "Remove this authorization rule"
    Remove-AzServiceBusAuthorizationRule -ResourceGroup $ResGrpName -NamespaceName $Namespace -Name $AuthRule
}

建立佇列

若要建立佇列或主題,請使用上一節的指令碼來執行命名空間檢查。 然後,建立佇列:

# Check if queue already exists
$CurrentQ = Get-AzServiceBusQueue -ResourceGroup $ResGrpName -NamespaceName $Namespace -QueueName $QueueName

if($CurrentQ)
{
    Write-Host "The queue $QueueName already exists in the $Location region:"
}
else
{
    Write-Host "The $QueueName queue does not exist."
    Write-Host "Creating the $QueueName queue in the $Location region..."
    New-AzServiceBusQueue -ResourceGroup $ResGrpName -NamespaceName $Namespace -QueueName $QueueName
    $CurrentQ = Get-AzServiceBusQueue -ResourceGroup $ResGrpName -NamespaceName $Namespace -QueueName $QueueName
    Write-Host "The $QueueName queue in Resource Group $ResGrpName in the $Location region has been successfully created."
}

修改佇列屬性

在執行上一節的指令碼後,您可以使用 Set-AzServiceBusQueue Cmdlet 來更新佇列的屬性,如下列範例所示︰

$CurrentQ.DeadLetteringOnMessageExpiration = $True
$CurrentQ.MaxDeliveryCount = 7
$CurrentQ.MaxSizeInMegabytes = 2048
$CurrentQ.EnableExpress = $True

Set-AzServiceBusQueue -ResourceGroup $ResGrpName -NamespaceName $Namespace -QueueName $QueueName -QueueObj $CurrentQ

佈建其他服務匯流排實體

您可以使用服務匯流排 PowerShell 模組來佈建其他實體,例如主題和訂用帳戶。 這些 Cmdlet 在語法上類似於上一節中所示範的佇列建立 Cmdlet。

下一步

管理服務匯流排實體有一些替代方式,如這些部落格文章中所述︰