Verwenden von Remotetools zur Behandlung von Azure-VM-Problemen
Gilt für: ✔️ Windows-VMs
Bei der Behandlung von Problemen auf einem virtuellen Azure-Computer (VM) können Sie eine Verbindung mit dem virtuellen Computer mithilfe der in diesem Artikel erörterten Remotetools herstellen, statt das Remotedesktopprotokoll (RDP) zu verwenden.
Serielle Konsole
Verwenden Sie eine serielle Konsole für virtuelle Azure-Computer, um Befehle auf dem virtuellen Azure-Remotecomputer auszuführen.
Remote-CMD
Laden Sie PsExec herunter. Stellen Sie eine Verbindung mit der VM her, indem Sie folgenden Befehl ausführen:
psexec \\<computer>-u user -s cmd
Notiz
- Der Befehl muss auf einem Computer ausgeführt werden, der sich im selben virtuellen Netzwerk befindet.
- DIP oder HostName kann als Ersatz für <Computer> verwendet werden.
- Durch den Parameter „-s“ wird sichergestellt, dass der Befehl mithilfe des Systemkontos (Administratorberechtigungen) aufgerufen wird.
- PsExec verwendet die TCP-Ports 135 und 445. Somit müssen die zwei Ports in der Firewall geöffnet sein.
Führen Sie den Befehl aus
Weitere Informationen zum Verwenden der Funktion „Skriptausführung“ zum Ausführen von Skripts auf dem virtuellen Computer finden Sie unter Ausführen von PowerShell-Skripts in Ihrer Windows-VM mit „Befehl ausführen“.
Benutzerdefinierte Skripterweiterung
Sie können das Feature „Benutzerdefinierte Skripterweiterung“ verwenden, um auf der Ziel-VM ein benutzerdefiniertes Skript auszuführen. Zur Verwendung dieses Features müssen die folgenden Bedingungen erfüllt sein:
Die VM verfügt über Konnektivität.
Der Agent für virtuelle Azure-Computer ist auf dem virtuellen Computer installiert und funktioniert ordnungsgemäß.
Die Erweiterung war zuvor nicht auf dem virtuellen Computer installiert.
Die Erweiterung fügt das Skript nur bei der erstmaligen Verwendung ein. Wenn Sie diese Funktion zu einem späteren Zeitpunkt verwenden, erkennt die Erweiterung, dass sie bereits verwendet wurde, und lädt das neue Skript nicht hoch.
Laden Sie das Skript in ein Speicherkonto hoch, und erstellen Sie dafür einen separaten Container. Führen Sie anschließend das folgende Skript in Azure PowerShell auf einem Computer aus, der Konnektivität mit der VM aufweist.
Für über Azure Resource Manager bereitgestellte virtuelle Computer
#Set up the basic variables.
$subscriptionID = "<<SUBSCRIPTION ID>>"
$storageAccount = "<<STORAGE ACCOUNT>>"
$storageRG = "<<RESOURCE GROUP OF THE STORAGE ACCOUNT>>"
$localScript = "<<FULL PATH OF THE PS1 FILE TO EXECUTE ON THE VM>>"
$blobName = "file.ps1" #Name you want for the blob in the storage.
$vmName = "<<VM NAME>>"
$vmResourceGroup = "<<RESOURCE GROUP>>"
$vmLocation = "<<DATACENTER>>"
#Set up the Azure PowerShell module, and ensure the access to the subscription.
Login-AzAccount #Ensure login with the account associated with the subscription ID.
Get-AzSubscription -SubscriptionId $subscriptionID | Select-AzSubscription
#Set up the access to the storage account, and upload the script.
$storageKey = (Get-AzStorageAccountKey -ResourceGroupName $storageRG -Name $storageAccount).Value[0]
$context = New-AzureStorageContext -StorageAccountName $storageAccount -StorageAccountKey $storageKey
$container = "cse" + (Get-Date -Format yyyyMMddhhmmss)
New-AzureStorageContainer -Name $container -Permission Off -Context $context
Set-AzureStorageBlobContent -File $localScript -Container $container -Blob $blobName -Context $context
#Push the script into the VM.
Set-AzVMCustomScriptExtension -Name "CustomScriptExtension" -ResourceGroupName $vmResourceGroup -VMName $vmName -Location $vmLocation -StorageAccountName $storageAccount -StorageAccountKey $storagekey -ContainerName $container -FileName $blobName -Run $blobName
Remote-PowerShell
Notiz
Der TCP-Port 5986 (HTTPS) muss geöffnet sein, damit Sie diese Option verwenden können.
Für über Azure Resource Manager bereitgestellte virtuelle Computer müssen Sie Port 5986 in der Netzwerksicherheitsgruppe (NSG) öffnen. Weitere Informationen finden Sie bei den Sicherheitsgruppen.
Für RDFE-VMs benötigen Sie einen Endpunkt mit einem privaten Port (5986) und einem öffentlichen Port. Anschließend müssen Sie auch den entsprechenden öffentlichen Port in der NSG öffnen.
Einrichten des Clientcomputers
Um PowerShell zum Herstellen von Remoteverbindungen mit der VM zu verwenden, müssen Sie zunächst den Clientcomputer so einrichten, dass der die Verbindung zulässt. Fügen Sie dazu die VM der PowerShell-Liste mit vertrauenswürdigen Hosts hinzu, indem Sie den folgenden Befehl ausführen.
So fügen Sie der Liste der vertrauenswürdigen Hosts einen virtuellen Computer hinzu
Set-Item wsman:\localhost\Client\TrustedHosts -value <ComputerName>
So fügen Sie der Liste der vertrauenswürdigen Hosts mehrere virtuelle Computer hinzu
Set-Item wsman:\localhost\Client\TrustedHosts -value <ComputerName1>,<ComputerName2>
So fügen Sie der Liste der vertrauenswürdigen Hosts alle Computer hinzu:
Set-Item wsman:\localhost\Client\TrustedHosts -value *
Aktivieren von RemotePS auf der VM
Verwenden Sie für mit dem klassischen Bereitstellungsmodell erstellte virtuelle Computer die benutzerdefinierte Skripterweiterung, um das folgende Skript auszuführen:
Enable-PSRemoting -Force
New-NetFirewallRule -Name "Allow WinRM HTTPS" -DisplayName "WinRM HTTPS" -Enabled True -Profile Any -Action Allow -Direction Inbound -LocalPort 5986 -Protocol TCP
$thumbprint = (New-SelfSignedCertificate -DnsName $env:COMPUTERNAME -CertStoreLocation Cert:\LocalMachine\My).Thumbprint
$command = "winrm create winrm/config/Listener?Address=*+Transport=HTTPS @{Hostname=""$env:computername""; CertificateThumbprint=""$thumbprint""}"
cmd.exe /C $command
Verwenden Sie für über Azure Resource Manager bereitgestellte virtuelle Computer die Funktion „Befehl ausführen“ im Portal, um das Skript „EnableRemotePS“ auszuführen:
Herstellen der Verbindung zur VM
Führen Sie den folgenden Befehl basierend auf dem Standort des Clientcomputers aus:
Außerhalb des virtuellen Netzwerks oder der Bereitstellung
Führen Sie für mit dem klassischen Bereitstellungsmodell erstellte virtuelle Computer den folgenden Befehl aus:
$Skip = New-PSSessionOption -SkipCACheck -SkipCNCheck Enter-PSSession -ComputerName "<<CLOUDSERVICENAME.cloudapp.net>>" -port "<<PUBLIC PORT NUMBER>>" -Credential (Get-Credential) -useSSL -SessionOption $Skip
Fügen Sie für über Azure Resource Manager bereitgestellte virtuelle Computer der öffentlichen IP-Adresse zunächst einen DNS-Namen hinzu. Detaillierte Schritte dazu finden Sie unter Erstellen eines vollqualifizierten Domänennamens im Azure-Portal für eine Windows-VM. Führen Sie dann den folgenden Befehl aus:
$Skip = New-PSSessionOption -SkipCACheck -SkipCNCheck Enter-PSSession -ComputerName "<<DNSname.DataCenter.cloudapp.azure.com>>" -port "5986" -Credential (Get-Credential) -useSSL -SessionOption $Skip
Führen Sie innerhalb des virtuellen Netzwerks oder der Bereitstellung den folgenden Befehl aus:
$Skip = New-PSSessionOption -SkipCACheck -SkipCNCheck Enter-PSSession -ComputerName "<<HOSTNAME>>" -port 5986 -Credential (Get-Credential) -useSSL -SessionOption $Skip
Notiz
Durch das Festlegen des Flags „SkipCaCheck“ wird beim Starten der Sitzung die Anforderung zum Importieren eines Zertifikats in die VM umgangen.
Sie können außerdem das Cmdlet „Invoke-Command“ verwenden, um ein Skript remote auf dem virtuellen Computer auszuführen.
Invoke-Command -ComputerName "<<COMPUTERNAME>" -ScriptBlock {"<<SCRIPT BLOCK>>"}
Remoteregistrierung
Notiz
Zur Nutzung dieser Option muss TCP-Port 135 oder 445 geöffnet sein.
Für über Azure Resource Manager bereitgestellte virtuelle Computer müssen Sie Port 5986 in der NSG öffnen. Weitere Informationen finden Sie bei den Sicherheitsgruppen.
Für RDFE-VMs benötigen Sie einen Endpunkt mit einem privaten Port 5986 und einem öffentlichen Port. Sie müssen auch den entsprechenden öffentlichen Port in der NSG öffnen.
Öffnen Sie über einen anderen virtuellen Computer im selben virtuellen Netzwerk den Registrierungs-Editor („regedit.exe“).
Wählen Sie Datei>Mit Netzwerkregistrierung verbinden aus.
Suchen Sie den virtuellen Zielcomputer anhand von Hostname oder dynamischer IP (vorzugsweise), indem Sie den entsprechenden Wert im Feld Namen des auszuwählenden Objekts eingeben eingeben.
Geben Sie die Anmeldeinformationen für die Ziel-VM ein.
Nehmen Sie alle erforderlichen Änderungen an der Registrierung vor.
Remotedienste-Konsole
Notiz
Zur Nutzung dieser Option muss TCP-Port 135 oder 445 geöffnet sein.
Für über Azure Resource Manager bereitgestellte virtuelle Computer müssen Sie Port 5986 in der NSG öffnen. Weitere Informationen finden Sie bei den Sicherheitsgruppen.
Für RDFE-VMs benötigen Sie einen Endpunkt mit einem privaten Port 5986 und einem öffentlichen Port. Sie müssen auch den entsprechenden öffentlichen Port in der NSG öffnen.
Öffnen Sie über einen anderen virtuellen Computer im selben virtuellen Netzwerk eine Instanz von Services.msc.
Klicken Sie mit der rechten Maustaste auf Dienste (lokal).
Wählen Sie Verbindung mit einem anderen Computer herstellen aus.
Geben Sie die dynamische IP-Adresse des virtuellen Zielcomputers ein.
Nehmen Sie alle notwendigen Änderungen an den Diensten vor.
Nächste Schritte
- Weitere Informationen zum Cmdlet Enter-PSSession finden Sie unter Enter-PSSession.
- Weitere Informationen zur benutzerdefinierten Skripterweiterung für Windows unter Verwendung des klassischen Bereitstellungsmodells finden Sie unter Benutzerdefinierte Skripterweiterung für Windows.
- PsExec ist Teil der PSTools-Suite.
- Weitere Informationen zur PSTools-Suite finden Sie unter PSTools.
Kontaktieren Sie uns für Hilfe
Wenn Sie Fragen haben oder Hilfe mit Ihren Azure-Gutschriften benötigen, dann erstellen Sie beim Azure-Support eine Support-Anforderung oder fragen Sie den Azure Community-Support. Sie können auch Produktfeedback an die Azure Feedback Community senden.