Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die Funktion Azure App Service Hybrid Connections ermöglicht den Zugriff auf Ressourcen in anderen Netzwerken. Weitere Informationen zu dieser Funktion finden Sie in der Dokumentation zu Hybrid Connections. In diesem Artikel wird beschrieben, wie Sie diese Funktion zum Ausführen von PowerShell-Funktionen verwenden, die auf einen lokalen Server abzielen. Dieser Server kann dann verwendet werden, um alle Ressourcen in der lokalen Umgebung über eine Azure PowerShell-Funktion zu verwalten.
Konfigurieren eines lokalen Servers für PowerShell-Remoting
Das folgende Skript ermöglicht PowerShell-Remoting und erstellt eine neue Firewallregel und einen WinRM-HTTPS-Listener. Zu Testzwecken wird ein selbstsigniertes Zertifikat verwendet. In einer Produktionsumgebung wird die Verwendung eines signierten Zertifikats empfohlen.
# For configuration of WinRM, see
# https://learn.microsoft.com/windows/win32/winrm/installation-and-configuration-for-windows-remote-management.
# Enable PowerShell remoting.
Enable-PSRemoting -Force
# Create firewall rule for WinRM. The default HTTPS port is 5986.
New-NetFirewallRule -Name "WinRM HTTPS" `
-DisplayName "WinRM HTTPS" `
-Enabled True `
-Profile "Any" `
-Action "Allow" `
-Direction "Inbound" `
-LocalPort 5986 `
-Protocol "TCP"
# Create new self-signed-certificate to be used by WinRM.
$Thumbprint = (New-SelfSignedCertificate -DnsName $env:COMPUTERNAME -CertStoreLocation Cert:\LocalMachine\My).Thumbprint
# Create WinRM HTTPS listener.
$Cmd = "winrm create winrm/config/Listener?Address=*+Transport=HTTPS @{Hostname=""$env:COMPUTERNAME ""; CertificateThumbprint=""$Thumbprint""}"
cmd.exe /C $Cmd
Erstellen einer PowerShell-Funktions-App im Portal
Die Funktion App Service Hybrid Connections ist nur in den Tarifen Basic, Standard und Isolated verfügbar. Wenn Sie die Funktions-App mit PowerShell erstellen, erstellen oder wählen Sie einen dieser Tarife aus.
Wählen Sie im Menü des Azure-Portals oder auf der Startseite die Option Ressource erstellen aus.
Wählen Sie auf der Seite Neu die Option Compute>Funktions-App aus.
Verwenden Sie auf der Seite Grundlagen die Funktions-App-Einstellungen, die in der folgenden Tabelle angegeben sind.
Einstellung Vorgeschlagener Wert BESCHREIBUNG Abonnement Ihr Abonnement Das Abonnement, unter dem diese neue Funktions-App erstellt wird. Ressourcengruppe myResourceGroup Der Name der neuen Ressourcengruppe, in der die Funktionen-App erstellt wird Name der Funktions-App Global eindeutiger Name Der Name, der Ihre neue Funktionen-App bezeichnet Gültige Zeichen sind a-z
(Groß-/Kleinschreibung nicht beachtet),0-9
und-
.Veröffentlichen Code Option zum Veröffentlichen von Codedateien oder eines Docker-Containers. Laufzeitstapel Bevorzugte Sprache Wählen Sie die PowerShell Core aus. Version Versionsnummer Wählen Sie die Version der installierten Runtime aus. Region Bevorzugte Region Wählen Sie eine Region in Ihrer Nähe oder in der Nähe von anderen Diensten aus, auf die Ihre Funktionen zugreifen. Wählen Sie Weiter: Hosting aus. Geben Sie auf der Seite Hosting die folgenden Einstellungen ein.
Einstellung Vorgeschlagener Wert BESCHREIBUNG Speicherkonto Global eindeutiger Name Erstellen Sie ein Speicherkonto, das von Ihrer Funktions-App verwendet wird. Speicherkontonamen müssen zwischen 3 und 24 Zeichen lang sein und dürfen nur Zahlen und Kleinbuchstaben enthalten. Sie können auch ein vorhandenes Konto verwenden, das die Anforderungen an das Speicherkonto erfüllen muss. Betriebssystem Bevorzugtes Betriebssystem Ein Betriebssystem ist für Sie basierend auf Ihrer Runtimestapelauswahl vorab ausgewählt, aber Sie können die Einstellung ggf. ändern. Plantyp App Service-Plan Wählen Sie App Service-Plan aus. Bei der Ausführung in einem App Service-Plan müssen Sie die Skalierung Ihrer Funktions-App verwalten. Wählen Sie Weiter: Überwachung aus. Geben Sie auf der Seite Überwachung die folgenden Einstellungen ein.
Einstellung Vorgeschlagener Wert BESCHREIBUNG Application Insights Standard Erstellt eine Application Insights-Ressource mit dem gleichen App-Namen in der nächstgelegenen unterstützten Region. Durch Erweitern dieser Einstellung oder Auswählen von Neu erstellen können Sie den Application Insights-Namen ändern oder eine andere Region in einer Azure-Geografie auswählen, in der Sie Ihre Daten speichern möchten. Wählen Sie Bewerten + erstellen aus, um die App-Konfigurationsauswahl zu überprüfen.
Überprüfen Sie auf der Seite Bewerten + erstellen Ihre Einstellungen, und wählen Sie dann Erstellen aus, um die Funktions-App bereitzustellen.
Wählen Sie oben rechts im Portal das Benachrichtigungssymbol aus, und achten Sie auf die Meldung Bereitstellung erfolgreich.
Wählen Sie Zu Ressource wechseln, um Ihre neue Funktionen-App anzuzeigen. Sie können auch die Option An Dashboard anheften auswählen. Wenn Sie die Funktions-App anheften, können Sie einfacher über das Dashboard auf sie zugreifen.
Erstellen einer Hybridverbindung für die Funktions-App
Hybridverbindungen werden im Abschnitt „Netzwerk“ der Funktions-App konfiguriert:
Wählen Sie unter Einstellungen in der soeben erstellten Funktions-App Netzwerk aus.
Wählen Sie Endpunkte der Hybridverbindung konfigurieren aus.
Wählen Sie Hybridverbindung hinzufügen aus.
Geben Sie Informationen zu der Hybridverbindung ein, wie nach dem Screenshot angegeben. Verwenden Sie für Endpunkthost den Hostnamen des lokalen Servers, für den Sie das selbstsignierte Zertifikat erstellt haben. Es treten Verbindungsprobleme auf, wenn der Zertifikatname und der Hostname des lokalen Servers nicht übereinstimmen. Der Port stimmt mit dem Standardport für den Windows-Remoteverwaltungsdienst überein, der zuvor auf dem Server definiert wurde.
Einstellung Vorgeschlagener Wert Hybridverbindungsname ContosoHybridOnPremisesServer Endpunkthost finance1 Endpunktport 5986 Service Bus-Namespace Create New Location Wählen Sie einen verfügbaren Standort aus. Name contosopowershellhybrid Wählen Sie OK aus, um die Hybridverbindung zu erstellen.
Herunterladen und Installieren der Hybridverbindung
Wählen Sie Verbindungs-Manager herunterladen aus, um die MSI-Datei lokal auf Ihrem Computer zu speichern.
Kopieren Sie die MSI-Datei von Ihrem lokalen Computer auf den lokalen Server.
Führen Sie den Installer des Hybridverbindungs-Managers aus, um den Dienst auf dem lokalen Server zu installieren.
Öffnen Sie im Portal die Hybridverbindung, und kopieren Sie die Gatewayverbindungszeichenfolge in die Zwischenablage.
Öffnen Sie die Benutzeroberfläche des Hybrid Connection-Managers auf dem lokalen Server.
Wählen Sie Manuell eingeben aus, und fügen Sie die Verbindungszeichenfolge aus der Zwischenablage ein.
Wenn der Hybridverbindungs-Manager nicht als verbunden angezeigt wird, starten Sie ihn mit PowerShell neu.
Restart-Service HybridConnectionManager
Erstellen einer App-Einstellung für das Kennwort eines Administratorkontos
Wählen Sie unter Einstellungen für ihre Funktions-App Konfiguration aus.
Wählen Sie + Neue Anwendungseinstellung aus.
Geben Sie der Einstellung den Namen ContosoUserPassword, und geben Sie das Kennwort ein. Klicken Sie auf OK.
Wählen Sie Speichern aus, um das Kennwort in der Funktionsanwendung zu speichern.
Erstellen eines HTTP-Funktionstriggers
Wählen Sie in Ihrer Funktions-App Funktionen und dann + Hinzufügen aus.
Wählen Sie die Vorlage HTTP-Trigger aus, benennen Sie die neue Funktion, und wählen Sie Funktion erstellen aus.
Testen der Funktion
Wählen Sie in der neuen Funktion Programmieren und testen aus. Ersetzen Sie den PowerShell-Code aus der Vorlage durch den folgenden Code:
# Input bindings are passed in via param block. param($Request, $TriggerMetadata) # Write to the Azure Functions log stream. Write-Output "PowerShell HTTP trigger function processed a request." # Note that ContosoUserPassword is a function app setting, so I can access it as $env:ContosoUserPassword. $UserName = "ContosoUser" $securedPassword = ConvertTo-SecureString $Env:ContosoUserPassword -AsPlainText -Force $Credential = [System.management.automation.pscredential]::new($UserName, $SecuredPassword) # This is the name of the hybrid connection Endpoint. $HybridEndpoint = "finance1" $Script = { Param( [Parameter(Mandatory=$True)] [String] $Service ) Get-Service $Service } Write-Output "Scenario 1: Running command via Invoke-Command" Invoke-Command -ComputerName $HybridEndpoint ` -Credential $Credential ` -Port 5986 ` -UseSSL ` -ScriptBlock $Script ` -ArgumentList "*" ` -SessionOption (New-PSSessionOption -SkipCACheck)
Wählen Sie Speichern aus, um Ihre Änderungen zu speichern, und wählen Sie dann Testen>Ausführen aus, um die Funktion zu testen.
Wählen Sie Protokolle aus, um in den Protokollen zu überprüfen, ob der Test erfolgreich war.
Lokale Verwaltung anderer Systeme
Sie können den verbundenen lokalen Server verwenden, um eine Verbindung mit anderen Servern und Verwaltungssystemen in der lokalen Umgebung herzustellen. Auf diese Weise können Sie Ihre Rechenzentrumsvorgänge in Azure mithilfe von PowerShell-Funktionen verwalten. Mit dem folgenden Skript wird eine PowerShell-Konfigurationssitzung registriert, die unter den angegebenen Anmeldeinformationen ausgeführt wird. Dabei muss es sich um die Anmeldeinformationen eines Administrators für die Remoteserver handeln. Anschließend können Sie diese Konfiguration verwenden, um auf andere Endpunkte auf dem lokalen Server oder im Rechenzentrum zuzugreifen.
# Input bindings are passed in via param block.
param($Request, $TriggerMetadata)
# Write to the Azure Functions log stream.
Write-Host "PowerShell HTTP trigger function processed a request."
# Note that ContosoUserPassword is a function app setting, so I can access it as $env:ContosoUserPassword.
$UserName = "ContosoUser"
$SecuredPassword = ConvertTo-SecureString $Env:ContosoUserPassword -AsPlainText -Force
$Credential = [System.management.automation.pscredential]::new($UserName, $SecuredPassword)
# This is the name of the hybrid connection Endpoint.
$HybridEndpoint = "finance1"
# The remote server that will be connected to run remote PowerShell commands on
$RemoteServer = "finance2".
Write-Output "Use hybrid connection server as a jump box to connect to a remote machine"
# We are registering an endpoint that runs under credentials ($Credential) that has access to the remote server.
$SessionName = "HybridSession"
$ScriptCommand = {
param (
[Parameter(Mandatory=$True)]
$SessionName)
if (-not (Get-PSSessionConfiguration -Name $SessionName -ErrorAction SilentlyContinue))
{
Register-PSSessionConfiguration -Name $SessionName -RunAsCredential $Using:Credential
}
}
Write-Output "Registering session on hybrid connection jumpbox"
Invoke-Command -ComputerName $HybridEndpoint `
-Credential $Credential `
-Port 5986 `
-UseSSL `
-ScriptBlock $ScriptCommand `
-ArgumentList $SessionName `
-SessionOption (New-PSSessionOption -SkipCACheck)
# Script to run on the jump box to run against the second machine.
$RemoteScriptCommand = {
param (
[Parameter(Mandatory=$True)]
$ComputerName)
# Write out the hostname of the hybrid connection server.
hostname
# Write out the hostname of the remote server.
Invoke-Command -ComputerName $ComputerName -Credential $Using:Credential -ScriptBlock {hostname} `
-UseSSL -Port 5986 -SessionOption (New-PSSessionOption -SkipCACheck)
}
Write-Output "Running command against remote machine via jumpbox by connecting to the PowerShell configuration session"
Invoke-Command -ComputerName $HybridEndpoint `
-Credential $Credential `
-Port 5986 `
-UseSSL `
-ScriptBlock $RemoteScriptCommand `
-ArgumentList $RemoteServer `
-SessionOption (New-PSSessionOption -SkipCACheck) `
-ConfigurationName $SessionName
Ersetzen Sie die folgenden Variablen in diesem Skript durch die entsprechenden Werte in Ihrer Umgebung:
- $HybridEndpoint
- $RemoteServer
In den beiden vorherigen Szenarien können Sie mithilfe von PowerShell in Azure Functions und Hybrid Connections eine Verbindung mit lokalen Umgebungen herstellen und diese verwalten. Weitere Informationen finden Sie unter Hybrid Connections und PowerShell in Functions.
Sie können auch virtuelle Netzwerke in Azure verwenden, um über Azure Functions eine Verbindung mit der lokalen Umgebung herzustellen.