Gestire le risorse del bus di servizio di Azure con PowerShellUse PowerShell to manage Service Bus resources

Microsoft Azure PowerShell è un ambiente di scripting che può essere usato per controllare e automatizzare la distribuzione e la gestione dei servizi di Azure.Microsoft Azure PowerShell is a scripting environment that you can use to control and automate the deployment and management of Azure services. L'articolo descrive come usare il modulo PowerShell di Resource Manager del bus di servizio per effettuare il provisioning e gestire le entità del bus di servizio (spazi dei nomi, code, argomenti e sottoscrizioni) tramite una console o uno script locale di Azure PowerShell.This article describes how to use the Service Bus Resource Manager PowerShell module to provision and manage Service Bus entities (namespaces, queues, topics, and subscriptions) using a local Azure PowerShell console or script.

È possibile gestire le risorse del bus di servizio anche usando i modelli di Azure Resource Manager.You can also manage Service Bus entities using Azure Resource Manager templates. Per altre informazioni, vedere l'articolo Creare risorse del bus di servizio usando i modelli di Azure Resource Manager.For more information, see the article Create Service Bus resources using Azure Resource Manager templates.

PrerequisitiPrerequisites

Prima di iniziare, verificare di disporre dei prerequisiti seguenti:Before you begin, you'll need the following prerequisites:

IntroduzioneGet started

Il primo passaggio consiste nell'usare PowerShell per accedere all'account Azure e alla sottoscrizione di Azure.The first step is to use PowerShell to log in to your Azure account and Azure subscription. Seguire le istruzioni in Get started with Azure PowerShell cmdlets (Introduzione ai cmdlet di Azure PowerShell) per accedere al proprio account Azure e recuperare e accedere alle risorse nella sottoscrizione di Azure.Follow the instructions in Get started with Azure PowerShell cmdlets to log in to your Azure account, and retrieve and access the resources in your Azure subscription.

Provisioning di uno spazio dei nomi del bus di servizioProvision a Service Bus namespace

Quando si usano gli spazi dei nomi del bus di servizio, è possibile usare i cmdlet Get-AzureRmServiceBusNamespace, New-AzureRmServiceBusNamespace, Remove-AzureRmServiceBusNamespace e Set-AzureRmServiceBusNamespace.When working with Service Bus namespaces, you can use the Get-AzureRmServiceBusNamespace, New-AzureRmServiceBusNamespace, Remove-AzureRmServiceBusNamespace, and Set-AzureRmServiceBusNamespace cmdlets.

Questo esempio crea alcune variabili locali nello script: $Namespace e $Location.This example creates a few local variables in the script; $Namespace and $Location.

  • $Namespace è il nome dello spazio dei nomi del bus di servizio che si vuole usare.$Namespace is the name of the Service Bus namespace with which we want to work.
  • $Location identifica il data center in cui si eseguirà il provisioning dello spazio dei nomi.$Location identifies the data center in which we provision the namespace.
  • $CurrentNamespace archivia lo spazio dei nomi di riferimento che viene recuperato (o creato).$CurrentNamespace stores the reference namespace that we retrieve (or create).

In uno script effettivo, $Namespace e $Location possono essere passati come parametri.In an actual script, $Namespace and $Location can be passed as parameters.

Questa parte dello script esegue le operazioni seguenti:This part of the script does the following:

  1. Tenta di recuperare uno spazio dei nomi del bus di servizio con il nome specificato.Attempts to retrieve a Service Bus namespace with the specified name.
  2. Se lo spazio dei nomi viene trovato, viene segnalato ciò che viene trovato.If the namespace is found, it reports what was found.
  3. Se lo spazio dei nomi non viene trovato, viene creato lo spazio dei nomi e quindi viene recuperato lo spazio dei nomi appena creato.If the namespace is not found, it creates the namespace and then retrieves the newly created namespace.

    # Query to see if the namespace currently exists
    $CurrentNamespace = Get-AzureRMServiceBusNamespace -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-AzureRMServiceBusNamespace -ResourceGroup $ResGrpName -NamespaceName $Namespace
    }
    else
    {
        Write-Host "The $Namespace namespace does not exist."
        Write-Host "Creating the $Namespace namespace in the $Location region..."
        New-AzureRmServiceBusNamespace -ResourceGroup $ResGrpName -NamespaceName $Namespace -Location $Location
        $CurrentNamespace = Get-AzureRMServiceBusNamespace -ResourceGroup $ResGrpName -NamespaceName $Namespace
        Write-Host "The $Namespace namespace in Resource Group $ResGrpName in the $Location region has been successfully created."
    
    }
    

Crea una regola di autorizzazione dello spazio dei nomiCreate a namespace authorization rule

L'esempio seguente illustra come gestire le regole di autorizzazione dello spazio dei nomi usando i cmdlet New-AzureRmServiceBusNamespaceAuthorizationRule, Get-AzureRmServiceBusNamespaceAuthorizationRule, Set-AzureRmServiceBusNamespaceAuthorizationRule e Remove-AzureRmServiceBusNamespaceAuthorizationRule.The following example shows how to manage namespace authorization rules using the New-AzureRmServiceBusNamespaceAuthorizationRule, Get-AzureRmServiceBusNamespaceAuthorizationRule, Set-AzureRmServiceBusNamespaceAuthorizationRule, and Remove-AzureRmServiceBusNamespaceAuthorizationRule cmdlets.

# Query to see if rule exists
$CurrentRule = Get-AzureRmServiceBusNamespaceAuthorizationRule -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-AzureRmServiceBusNamespaceAuthorizationRule -ResourceGroup $ResGrpName -NamespaceName $Namespace -AuthorizationRuleName $AuthRule -Rights @("Listen","Send")
    $CurrentRule = Get-AzureRmServiceBusNamespaceAuthorizationRule -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-AzureRmServiceBusNamespaceAuthorizationRule -ResourceGroup $ResGrpName -NamespaceName $Namespace -AuthorizationRuleName $AuthRule

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

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

    Write-Host "Show value of primary key"
    $CurrentKey = Get-AzureRmServiceBusNamespaceKey -ResourceGroup $ResGrpName -NamespaceName $Namespace -AuthorizationRuleName $AuthRule

    Write-Host "Remove this authorization rule"
    Remove-AzureRmServiceBusNamespaceAuthorizationRule -ResourceGroup $ResGrpName -NamespaceName $Namespace -AuthorizationRuleName $AuthRule
}

Creare una codaCreate a queue

Per creare una coda o un argomento, eseguire una verifica dello spazio dei nomi usando lo script indicato nella sezione precedente.To create a queue or topic, perform a namespace check using the script in the previous section. Creare quindi la coda:Then, create the queue:

# Check if queue already exists
$CurrentQ = Get-AzureRmServiceBusQueue -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-AzureRmServiceBusQueue -ResourceGroup $ResGrpName -NamespaceName $Namespace -QueueName $QueueName -EnablePartitioning $True
    $CurrentQ = Get-AzureRmServiceBusQueue -ResourceGroup $ResGrpName -NamespaceName $Namespace -QueueName $QueueName
    Write-Host "The $QueueName queue in Resource Group $ResGrpName in the $Location region has been successfully created."
}

Modificare le proprietà della codaModify queue properties

Dopo avere eseguito lo script della sezione precedente, è possibile usare il cmdlet Set-AzureRmServiceBusQueue per aggiornare le proprietà di una coda, come nell'esempio seguente:After executing the script in the preceding section, you can use the Set-AzureRmServiceBusQueue cmdlet to update the properties of a queue, as in the following example:

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

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

Provisioning di altre entità del bus di servizioProvisioning other Service Bus entities

È possibile usare il modulo PowerShell del bus di servizio per effettuare il provisioning di altre entità, ad esempio argomenti e sottoscrizioni.You can use the Service Bus PowerShell module to provision other entities, such as topics and subscriptions. Questi cmdlet sono sintatticamente simili a quelli per la creazione della coda illustrati nella sezione precedente.These cmdlets are syntactically similar to the queue creation cmdlets demonstrated in the previous section.

Passaggi successiviNext steps

Esistono alcune soluzioni alternative per la gestione delle entità del bus di servizio, come descritto in questi post di blog:There are some alternate ways to manage Service Bus entities, as described in these blog posts: