Distribuire e gestire hub di notifica tramite PowerShellDeploy and Manage Notification Hubs using PowerShell

PanoramicaOverview

In questo articolo viene illustrato come utilizzare Creazione e gestione di hub di notifica di Azure tramite PowerShell.This article shows you how to use Create and Manage Azure Notification Hubs using PowerShell. Le seguenti attività comuni di automazione sono illustrate in questo argomento.The following common automation tasks are shown in this topic.

  • Creare un hub di notificaCreate a Notification Hub
  • Impostare le credenzialiSet Credentials

Se si desidera anche creare un nuovo spazio dei nomi per l'hub di notifica, vedere Gestire il bus di servizio con PowerShell.If you also need to create a new service bus namespace for your notification hubs, see Manage Service Bus with PowerShell.

La gestione degli hub di notifica non è supportata direttamente tramite i cmdlet inclusi con Azure PowerShell.Managing Notifications Hubs is not supported directly by the cmdlets included with Azure PowerShell. L'approccio migliore da PowerShell consiste nel fare riferimento all'assembly Microsoft.Azure.NotificationHubs.dll.The best approach from PowerShell is to reference the Microsoft.Azure.NotificationHubs.dll assembly. L'assembly viene distribuito con il pacchetto NuGet degli hub di notifica di Microsoft Azure.The assembly is distributed with the Microsoft Azure Notification Hubs NuGet package.

PrerequisitiPrerequisites

Per eseguire le procedure descritte nell'articolo è necessario:Before you begin this article, you must have the following:

  • Una sottoscrizione di Azure.An Azure subscription. Azure è una piattaforma basata su sottoscrizione.Azure is a subscription-based platform. Per altre informazioni su come ottenere una sottoscrizione, vedere Opzioni di acquisto, Offerte per i membri oppure Versione di valutazione gratuita.For more information about obtaining a subscription, see [Purchase Options], [Member Offers], or [Free Trial].
  • Un computer con Azure PowerShell.A computer with Azure PowerShell. Per istruzioni, vedere Come installare e configurare Azure PowerShell.For instructions, see [Install and configure Azure PowerShell].
  • Conoscenza generale degli script di PowerShell, dei pacchetti NuGet e di .NET Framework.A general understanding of PowerShell scripts, NuGet packages, and the .NET Framework.

Inclusione di un riferimento all'assembly .NET per il bus di servizioIncluding a reference to the .NET assembly for Service Bus

La gestione degli hub di notifica di Azure non è ancora inclusa con i cmdlet PowerShell di Azure PowerShell.Managing Azure Notification Hubs is not yet included with the PowerShell cmdlets in Azure PowerShell. Per eseguire il provisioning degli hub di notifica, è possibile utilizzare il client .NET nel pacchetto NuGet degli hub di notifica di Microsoft Azure.To provision notification hubs, you can use the .NET client provided in the Microsoft Azure Notification Hubs NuGet package.

Innanzitutto, assicurarsi che lo script sia in grado di individuare l'assembly Microsoft.Azure.NotificationHubs.dll , che viene installato con il pacchetto NuGet in un progetto Visual Studio.First, make sure your script can locate the Microsoft.Azure.NotificationHubs.dll assembly, which is installed as a NuGet package in a Visual Studio project. Per essere flessibile, lo script esegue i passaggi seguenti:In order to be flexible, the script performs these steps:

  1. Determina il percorso in cui è stato richiamato.Determines the path at which it was invoked.
  2. Scorre il percorso finché trova una cartella denominata packages.Traverses the path until it finds a folder named packages. Questa cartella viene creata durante l'installazione dei pacchetti NuGet per Visual Studio.This folder is created when you install NuGet packages for Visual Studio projects.
  3. Cerca in modo ricorsivo nella cartella packages , per trovare un assembly denominato Microsoft.Azure.NotificationHubs.dll.Recursively searches the packages folder for an assembly named Microsoft.Azure.NotificationHubs.dll.
  4. Fa quindi riferimento all'assembly in modo che i tipi siano disponibili per un uso successivo.References the assembly so that the types are available for later use.

Di seguito viene illustrato in che modo questi passaggi vengono implementati in uno script di PowerShell:Here's how these steps are implemented in a PowerShell script:


try
{
    # WARNING: Make sure to reference the latest version of Microsoft.Azure.NotificationHubs.dll
    Write-Output "Adding the [Microsoft.Azure.NotificationHubs.dll] assembly to the script..."
    $scriptPath = Split-Path (Get-Variable MyInvocation -Scope 0).Value.MyCommand.Path
    $packagesFolder = (Split-Path $scriptPath -Parent) + "\packages"
    $assembly = Get-ChildItem $packagesFolder -Include "Microsoft.Azure.NotificationHubs.dll" -Recurse
    Add-Type -Path $assembly.FullName

    Write-Output "The [Microsoft.Azure.NotificationHubs.dll] assembly has been successfully added to the script."
}

catch [System.Exception]
{
    Write-Error("Could not add the Microsoft.Azure.NotificationHubs.dll assembly to the script. Make sure you build the solution before running the provisioning script.")
}

Creare la classe NamespaceManagerCreate the NamespaceManager class

Per eseguire il provisioning degli hub di notifica creare un'istanza della classe NamespaceManager dall’SDK.To provision Notification Hubs, create an instance of the NamespaceManager class from the SDK.

È possibile usare il cmdlet Get-AzureSBAuthorizationRule incluso con Azure PowerShell per recuperare una regola di autorizzazione usata per fornire una stringa di connessione.You can use the Get-AzureSBAuthorizationRule cmdlet included with Azure PowerShell to retrieve an authorization rule that's used to provide a connection string. Verrà archiviato un riferimento all'istanza di NamespaceManager nella variabile $NamespaceManager.We'll store a reference to the NamespaceManager instance in the $NamespaceManager variable. Si utilizzerà $NamespaceManager per eseguire il provisioning di un hub di notifica.We will use $NamespaceManager to provision a notification hub.

$sbr = Get-AzureSBAuthorizationRule -Namespace $Namespace
# Create the NamespaceManager object to create the hub
Write-Output "Creating a NamespaceManager object for the [$Namespace] namespace..."
$NamespaceManager=[Microsoft.Azure.NotificationHubs.NamespaceManager]::CreateFromConnectionString($sbr.ConnectionString);
Write-Output "NamespaceManager object for the [$Namespace] namespace has been successfully created."

Provisioning di un nuovo hub di notificaProvisioning a new Notification Hub

Per eseguire il provisioning di un nuovo hub di notifica, utilizzare l’ API .NET per Hub di notifica.To provision a new notification hub, use the [.NET API for Notification Hubs].

In questa parte dello script verranno impostate quattro variabili locali.In this part of the script you set up four local variables.

  1. $Namespace : impostare sul nome dello spazio dei nomi in cui si desidera creare un hub di notifica.$Namespace : Set this to the name of the namespace where you want to create a notification hub.
  2. $Path : impostare il percorso sul nome del nuovo hub di notifica.$Path : Set this path to the name of the new notification hub. Ad esempio, "MyHub".For example, "MyHub".
  3. $WnsPackageSid : impostare sul SID di pacchetto per l’applicazione Windows dal Windows Dev Center.$WnsPackageSid : Set this to the package SID for you Windows App from the Windows Dev Center.
  4. $WnsSecretkey: impostare sulla chiave privata per l’applicazione Windows dal Windows Dev Center.$WnsSecretkey: Set this to the secret key for you Windows App from the Windows Dev Center.

Queste variabili vengono utilizzate per connettersi allo spazio dei nomi e creare un nuovo Hub di notifica configurato per gestire le notifiche Windows Notification Services (WNS) con credenziali WNS per un’applicazione Windows.These variables are used to connect to your namespace and create a new Notification Hub configured to handle Windows Notification Services (WNS) notifications with WNS credentials for a Windows App. Per informazioni su come ottenere il SID di pacchetto e la chiave privata, vedere l’esercitazione Introduzione agli Hub di notifica .For information on obtaining the package SID and secret key see, the Getting Started with Notification Hubs tutorial.

  • Il frammento di script utilizza l’oggetto NamespaceManager da controllare per verificare se l'Hub di notifica è identificato da $Path esiste.The script snippet uses the NamespaceManager object to check to see if the Notification Hub identified by $Path exists.
  • Se non esiste, lo script creerà un NotificationHubDescription con credenziali WNS e lo passerà alla classe NamespaceManager, metodo CreateNotificationHub.If it does not exist, the script will create an NotificationHubDescription with WNS credentials and pass that to the NamespaceManager class CreateNotificationHub method.

$Namespace = "<Enter your namespace>"
$Path  = "<Enter a name for your notification hub>"
$WnsPackageSid = "<your package sid>"
$WnsSecretkey = "<enter your secret key>"

$WnsCredential = New-Object -TypeName Microsoft.Azure.NotificationHubs.WnsCredential -ArgumentList $WnsPackageSid,$WnsSecretkey

# Query the namespace
$CurrentNamespace = Get-AzureSBNamespace -Name $Namespace

# Check if the namespace already exists
if ($CurrentNamespace)
{
    Write-Output "The namespace [$Namespace] in the [$($CurrentNamespace.Region)] region was found."

    # Create the NamespaceManager object used to create a new notification hub
    $sbr = Get-AzureSBAuthorizationRule -Namespace $Namespace
    Write-Output "Creating a NamespaceManager object for the [$Namespace] namespace..."
    $NamespaceManager = [Microsoft.Azure.NotificationHubs.NamespaceManager]::CreateFromConnectionString($sbr.ConnectionString);
    Write-Output "NamespaceManager object for the [$Namespace] namespace has been successfully created."

    # Check to see if the Notification Hub already exists
    if ($NamespaceManager.NotificationHubExists($Path))
    {
        Write-Output "The [$Path] notification hub already exists in the [$Namespace] namespace."  
    }
    else
    {
        Write-Output "Creating the [$Path] notification hub in the [$Namespace] namespace."
        $NHDescription = New-Object -TypeName Microsoft.Azure.NotificationHubs.NotificationHubDescription -ArgumentList $Path;
        $NHDescription.WnsCredential = $WnsCredential;
        $NamespaceManager.CreateNotificationHub($NHDescription);
        Write-Output "The [$Path] notification hub was created in the [$Namespace] namespace."
    }
}
else
{
    Write-Host "The [$Namespace] namespace does not exist."
}

Risorse aggiuntiveAdditional Resources

Sono disponibili per il download anche alcuni script predefiniti:Some ready-made scripts are also available for download: