PowerShell gebruiken om Service Bus-resources te beheren

Microsoft Azure PowerShell is een scriptomgeving die u kunt gebruiken om de implementatie en het beheer van Azure-services te beheren en te automatiseren. In dit artikel wordt beschreven hoe u de Service Bus Resource Manager PowerShell-module gebruikt voor het inrichten en beheren van Service Bus-entiteiten (naamruimten, wachtrijen, onderwerpen en abonnementen) met behulp van een lokale Azure PowerShell console of script.

U kunt ook Service Bus-entiteiten beheren met behulp van Azure Resource Manager-sjablonen. Zie het artikel Service Bus-resources maken met behulp van Azure Resource Manager-sjablonen voor meer informatie.

Notitie

U wordt aangeraden de Azure Az PowerShell-module te gebruiken om te communiceren met Azure. Zie Azure PowerShell installeren om aan de slag te gaan. Raadpleeg Azure PowerShell migreren van AzureRM naar Az om te leren hoe u naar de Azure PowerShell-module migreert.

Vereisten

Voordat u begint, hebt u de volgende vereisten nodig:

Aan de slag

De eerste stap is het gebruik van PowerShell om u aan te melden bij uw Azure-account en Azure-abonnement. Volg de instructies in Aan de slag met Azure PowerShell cmdlets om u aan te melden bij uw Azure-account en de resources in uw Azure-abonnement op te halen en te openen.

Een Service Bus-naamruimte inrichten

Wanneer u met Service Bus-naamruimten werkt, kunt u de cmdlets Get-AzServiceBusNamespace, New-AzServiceBusNamespace, Remove-AzServiceBusNamespace en Set-AzServiceBusNamespace gebruiken.

In dit voorbeeld worden enkele lokale variabelen in het script gemaakt; $Namespace en $Location.

  • $Namespace is de naam van de Service Bus-naamruimte waarmee we willen werken.
  • $Location identificeert het datacentrum waarin we de naamruimte inrichten.
  • $CurrentNamespace slaat de verwijzingsnaamruimte op die we ophalen (of maken).

In een echt script en $Namespace$Location kunnen worden doorgegeven als parameters.

Dit deel van het script doet het volgende:

  1. Probeert een Service Bus-naamruimte op te halen met de opgegeven naam.

  2. Als de naamruimte wordt gevonden, wordt gerapporteerd wat er is gevonden.

  3. Als de naamruimte niet wordt gevonden, wordt de naamruimte gemaakt en wordt vervolgens de zojuist gemaakte naamruimte opgehaald.

     # 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."
    
    }
    

Een naamruimteautorisatieregel maken

In het volgende voorbeeld ziet u hoe u autorisatieregels voor naamruimten beheert met de cmdlets New-AzServiceBusAuthorizationRule, Get-AzServiceBusAuthorizationRule, Set-AzServiceBusAuthorizationRule en Remove-AzServiceBusAuthorizationRule .

# 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
}

Een wachtrij maken

Als u een wachtrij of onderwerp wilt maken, voert u een naamruimtecontrole uit met behulp van het script in de vorige sectie. Maak vervolgens de wachtrij:

# 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."
}

Eigenschappen van de wachtrij wijzigen

Nadat u het script in de vorige sectie hebt uitgevoerd, kunt u de cmdlet Set-AzServiceBusQueue gebruiken om de eigenschappen van een wachtrij bij te werken, zoals in het volgende voorbeeld:

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

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

Andere Service Bus-entiteiten inrichten

U kunt de Service Bus PowerShell-module gebruiken om andere entiteiten in te richten, zoals onderwerpen en abonnementen. Deze cmdlets zijn syntactisch vergelijkbaar met de cmdlets voor het maken van wachtrijen die in de vorige sectie zijn gedemonstreerd.

Volgende stappen

Er zijn enkele alternatieve manieren om Service Bus-entiteiten te beheren, zoals beschreven in deze blogberichten: