Udostępnij za pośrednictwem


Zarządzanie zasobami usługi Service Bus przy użyciu programu PowerShell

Microsoft Azure PowerShell to środowisko skryptowe, za pomocą którego można kontrolować i automatyzować wdrażanie usług platformy Azure i zarządzanie nimi. W tym artykule opisano sposób użycia modułu programu PowerShell usługi Service Bus do aprowizowania jednostek usługi Service Bus (przestrzeni nazw, kolejek, tematów i subskrypcji) przy użyciu lokalnej konsoli lub skryptu programu Azure PowerShell.

Jednostki usługi Service Bus można również zarządzać przy użyciu szablonów usługi Azure Resource Manager. Aby uzyskać więcej informacji, zobacz artykuł Tworzenie zasobów usługi Service Bus przy użyciu szablonów usługi Azure Resource Manager.

Uwaga

Do interakcji z platformą Azure zalecamy używanie modułu Azure Az w programie PowerShell. Aby rozpocząć, zobacz Instalowanie programu Azure PowerShell. Aby dowiedzieć się, jak przeprowadzić migrację do modułu Az PowerShell, zobacz Migracja programu Azure PowerShell z modułu AzureRM do modułu Az.

Wymagania wstępne

Przed rozpoczęciem należy spełnić następujące wymagania wstępne:

  • Subskrypcja Azure. Aby uzyskać więcej informacji na temat uzyskiwania subskrypcji, zobacz opcje zakupu, oferty członków lub bezpłatne konto.
  • Komputer z programem Azure PowerShell. Aby uzyskać instrukcje, zobacz Rozpoczynanie pracy z poleceniami cmdlet programu Azure PowerShell.
  • Ogólna wiedza na temat skryptów programu PowerShell, pakietów NuGet i programu .NET Framework.

Rozpocznij

Pierwszym krokiem jest zalogowanie się do konta platformy Azure i subskrypcji platformy Azure przy użyciu programu PowerShell. Postępuj zgodnie z instrukcjami w artykule Rozpoczynanie pracy z poleceniami cmdlet programu Azure PowerShell, aby zalogować się do konta platformy Azure, a następnie pobrać i uzyskać dostęp do zasobów w ramach subskrypcji platformy Azure.

Aprowizuj przestrzeń nazw usługi Service Bus

Podczas pracy z przestrzeniami nazw usługi Service Bus można użyć poleceń cmdlet Get-AzServiceBusNamespace, New-AzServiceBusNamespace, Remove-AzServiceBusNamespace i Set-AzServiceBusNamespace .

W tym przykładzie jest tworzonych kilka zmiennych lokalnych w skrytecie; $Namespace i $Location.

  • $Namespace to nazwa przestrzeni nazw usługi Service Bus, z którą chcemy pracować.
  • $Location identyfikuje centrum danych, w którym aprowizujemy przestrzeń nazw.
  • $CurrentNamespace przechowuje przestrzeń nazw odwołania, którą pobieramy (lub tworzymy).

W rzeczywistym skryscie $Namespace można $Location przekazać jako parametry.

Ta część skryptu wykonuje następujące czynności:

  1. Próbuje pobrać przestrzeń nazw usługi Service Bus o określonej nazwie.

  2. Jeśli przestrzeń nazw zostanie znaleziona, zgłasza znalezione elementy.

  3. Jeśli przestrzeń nazw nie zostanie znaleziona, zostanie utworzona przestrzeń nazw, a następnie pobierze nowo utworzoną przestrzeń nazw.

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

Tworzenie reguły autoryzacji przestrzeni nazw

Poniższy przykład przedstawia sposób zarządzania regułami autoryzacji przestrzeni nazw przy użyciu poleceń cmdlet New-AzServiceBusAuthorizationRule, Get-AzServiceBusAuthorizationRule, Set-AzServiceBusAuthorizationRule i 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
}

Utwórz kolejkę

Aby utworzyć kolejkę lub temat, wykonaj sprawdzanie przestrzeni nazw przy użyciu skryptu w poprzedniej sekcji. Następnie utwórz kolejkę:

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

Modyfikowanie właściwości kolejki

Po wykonaniu skryptu w poprzedniej sekcji możesz użyć polecenia cmdlet Set-AzServiceBusQueue , aby zaktualizować właściwości kolejki, jak w poniższym przykładzie:

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

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

Aprowizowanie innych jednostek usługi Service Bus

Możesz użyć modułu programu PowerShell usługi Service Bus, aby aprowizować inne jednostki, takie jak tematy i subskrypcje. Te polecenia cmdlet są składniowo podobne do poleceń cmdlet tworzenia kolejki przedstawionych w poprzedniej sekcji.

Następne kroki

  • Zapoznaj się z pełną dokumentacją modułu programu PowerShell usługi Service Bus w usłudze Service Bus. Ta strona zawiera listę wszystkich dostępnych poleceń cmdlet.
  • Aby uzyskać informacje na temat korzystania z szablonów usługi Azure Resource Manager, zobacz artykuł Tworzenie zasobów usługi Service Bus przy użyciu szablonów usługi Azure Resource Manager.
  • Informacje o bibliotekach zarządzania .NET usługi Service Bus.

Istnieje kilka alternatywnych sposobów zarządzania jednostkami usługi Service Bus, zgodnie z opisem w następujących wpisach w blogu: