Freigeben über


Ausführen von Skripts auf Ihrem virtuellen Windows-Computer mithilfe der Aktion Befehle ausführen

Das Feature „Befehl ausführen“ verwendet den VM-Agent, um PowerShell-Skripts innerhalb einer Azure Windows-VM auszuführen. Diese Skripts können für die allgemeine Computer- oder Anwendungsverwaltung verwendet werden. Mit ihrer Hilfe können Sie Zugriffs- und Netzwerkprobleme eines virtuellen Computers schnell diagnostizieren und beheben und den virtuellen Computer wieder in einen funktionierenden Zustand versetzen.

Vorteile

Sie können auf verschiedene Weise auf Ihre virtuellen Computer zugreifen. Die Skriptausführung kann Skripts remote unter Verwendung des VM-Agents auf Ihren virtuellen Computern ausführen. „Befehl ausführen“ kann für Windows-VMs über das Azure-Portal, die REST-API oder PowerShell verwendet werden.

Diese Funktion ist in allen Szenarien sinnvoll, in denen Sie ein Skript innerhalb eines virtuellen Computers ausführen möchten. Es ist eine der wenigen Möglichkeiten, Fehler auf einem virtuellen Computer zu beheben, bei dem der RDP- oder SSH-Port aufgrund einer falschen Netzwerk- oder Administratorkonfiguration nicht geöffnet ist.

Voraussetzungen

Von Windows-Betriebssystemen unterstützt

Betriebssystemversion x64 ARM64
Windows 10 Unterstützt Unterstützt
Windows 11 Unterstützt Unterstützt
Windows Server 2016 Unterstützt Unterstützt
Windows Server 2016 Core Unterstützt Unterstützt
Windows Server 2019 Unterstützt Unterstützt
Windows Server 2019 Core Unterstützt Unterstützt
Windows Server 2022 Unterstützt Unterstützt
Windows Server 2022 Core Unterstützt Unterstützt
Windows Server 2022 Azure Edition Unterstützt Unterstützt
Windows Server 2025 Unterstützt Unterstützt
Windows Server 2025 Core Unterstützt Unterstützt
Windows Server 2025 Azure Edition Unterstützt Unterstützt

Beschränkungen

Die Verwendung der Skriptausführung unterliegt den folgenden Einschränkungen:

  • Die Ausgabe ist auf die letzten 4.096 Bytes beschränkt.
  • Der Mindestzeitraum für die Ausführung eines Skripts liegt bei etwa 20 Sekunden.
  • Skripts werden unter Windows als „System“ ausgeführt.
  • Es kann Zeit jeweils nur ein Skript gleichzeitig ausgeführt werden.
  • Skripts, die Informationen anfordern (interaktiver Modus), werden nicht unterstützt.
  • Die Ausführung von Skripts kann nicht abgebrochen werden.
  • Die maximal zulässige Ausführungsdauer eines Skripts beträgt 90 Minuten. Danach tritt ein Timeout auf.
  • Um die Ergebnisse des Skripts zurückzugeben, ist eine ausgehende Konnektivität des virtuellen Computers erforderlich.
  • Es wird davon abgeraten, ein Skript auszuführen, das bewirkt, dass der VM-Agent beendet oder aktualisiert wird. Das kann dazu führen, dass die Erweiterung in einem Übergangszustand verbleibt, wodurch ein Timeout verursacht wird.

Hinweis

Die Skriptausführung muss über den Port 443 eine Verbindung mit öffentlichen Azure-IP-Adressen herstellen können. Wenn die Erweiterung keinen Zugriff auf diese Endpunkte hat, werden die Skripts zwar möglicherweise erfolgreich ausgeführt, geben aber keine Ergebnisse zurück. Wenn Sie Datenverkehr auf dem virtuellen Computer blockieren, können Sie Diensttags verwenden, um Datenverkehr mit öffentlichen Azure-IP-Adressen über das Tag AzureCloud zuzulassen.

Das Feature „Befehl ausführen“ funktioniert nicht, wenn der Status des VM-Agents „NOT READY“ (NICHT BEREIT) lautet. Überprüfen Sie den Agent-Status im Azure-Portal in den Eigenschaften des virtuellen Computers.

Verfügbare Befehle

Diese Tabelle enthält die Liste der für virtuelle Windows-Computer verfügbaren Befehle. Mit dem Befehl RunPowerShellScript können Sie jedes beliebige benutzerdefinierte Skript ausführen. Wenn Sie einen Befehl mithilfe der Azure-Befehlszeilenschnittstelle oder über PowerShell ausführen, muss für den Parameter --command-id oder -CommandId einer der Werte aus der folgenden Liste angegeben werden. Wenn Sie einen Wert angeben, bei dem es sich nicht um einen verfügbaren Befehl handelt, tritt der folgende Fehler auf:

The entity was not found in this Azure location

Verfügbare Befehle

CommandID Beschreibung Weitere Informationen
RunPowerShellScript Führt ein PowerShell-Skript aus.
DisableNLA Hiermit wird die Authentifizierung auf Netzwerkebene (Network Level Authentication, NLA) deaktiviert. Sie müssen den virtuellen Computer neu starten, nachdem das Skript abgeschlossen ist, damit die Änderung wirksam wird. Das Skript selbst startet den virtuellen Computer nicht neu. readme
DisableWindowsUpdate Deaktivieren Sie automatische Updates über Windows Update. readme
EnableAdminAccount Überprüft, ob das lokale Administratorkonto deaktiviert ist, und aktiviert es, falls dies der Fall ist. readme
EnableEMS Aktivieren Sie Emergency Management Services (EMS), um die serielle Konsolenverbindung in Problembehandlungsszenarien zu ermöglichen. readme
EnableRemotePS Remote-PowerShell aktivieren. readme
EnableWindowsUpdate Aktivieren Sie automatische Updates über Windows Update. readme
IMDSCertCheck Überprüft den IMDS-Status und analysiert dann aktuell installierte Zertifikate, von denen IMDS abhängig ist. Wenn sie fehlen, werden weitere Details und Gegenmaßnahmen angezeigt. readme
IPConfig Zeigt detaillierte Informationen zur IP-Adresse, Subnetzmaske und zum Standardgateway für jeden an TCP/IP gebundenen Adapter. Informationen zur Verwendung finden Sie unter Ausführen von Skripts readme
RDPSettings Überprüft Registrierungseinstellungen und Domänen-Richtlinieneinstellungen. Schlägt Richtlinienaktionen vor, wenn der Computer Teil einer Domäne ist oder die Einstellungen auf Standardwerte ändert. readme
ResetRDPCert Entfernt das SSL-Zertifikat, das an den RDP-Listener gebunden ist, und stellt die RDP-Listenersicherheit standardmäßig wieder her. Verwenden Sie dieses Skript, wenn irgendwelche Probleme in Verbindung mit dem Zertifikat auftreten. readme
SetRDPPort Legt die standard- oder benutzerspezifische Portnummer für Remotedesktopverbindungen fest. Aktiviert die Firewallregel für eingehenden Zugriff auf den Port. readme
Aktivierungsüberprüfung für Windows Überprüft den aktuellen Windows-Lizenzstatus (aktiviert oder nicht) und wird benachrichtigt, wenn der Computer nicht aktiviert ist. readme
WindowsGhostedNicValidationScript Dieses Skript überprüft die Windows-Registrierung auf Netzwerkadaptern auf PCI- und VMBUS-Bussen, vergleicht sie mit derzeit aktiven Netzwerkadaptern und identifiziert gespenschte NICs. Nützlich für die Problembehandlung bei Netzwerkproblemen oder zum Bereinigen alter NICs. readme
WindowsUpgradeAssessmentValidation Dieses Skript wurde entwickelt, um die Bereitschaft eines Windows-Computers (Client oder Server) für ein direktes Betriebssystemupgrade mit besonderen Überlegungen für virtuelle Azure-Computer zu bewerten. Es wertet Betriebssystemversion, unterstützte Upgradepfade, Systemspeicherplatz und Azure-Sicherheitsfeatures wie vertrauenswürdiger Start, sicherer Start und vTPM aus. readme

Einschränken des Zugriffs auf „Befehl ausführen“

Zum Auflisten der ausführbaren Befehle oder Anzeigen der Details zu einem Befehl ist die Berechtigung Microsoft.Compute/locations/runCommands/read auf Abonnementebene erforderlich. Die integrierte Rolle Leser und höhere Rollen verfügen über diese Berechtigung.

Zum Ausführen eines Befehls ist die Berechtigung Microsoft.Compute/virtualMachines/runCommand/action erforderlich. Die Rolle Mitwirkender für virtuelle Computer und höhere Rollen verfügen über diese Berechtigung.

Für die Skriptausführung können Sie eine der integrierten Rollen verwenden oder eine benutzerdefinierte Rolle erstellen.

Verwendung von Ausführen-Befehlen

Hinweis

  • Parameterwerte können nur vom Typ „Zeichenfolge“ sein, und das Skript ist dafür verantwortlich, sie bei Bedarf in andere Typen zu konvertieren.
  • Je nachdem, welche Modalität für die Ausführung verwendet wird, sind möglicherweise einige Escapezeichen erforderlich. Wenn Sie beispielsweise den Befehl in einer PowerShell-Sitzung ausführen, muss der Pfad zur Skriptdatei Anführungszeichen enthalten.
  • Die integrierten Befehle können nicht bearbeitet werden.

Navigieren Sie im Azure-Portal zu einem virtuellen Computer, und wählen Sie im linken Menü unter Vorgänge die Option Befehl ausführen aus. Daraufhin wird eine Liste mit den verfügbaren Befehlen angezeigt, die auf dem virtuellen Computer ausgeführt werden können.

Befehlsliste

Wählen Sie einen auszuführenden Befehl aus. Einige der Befehle verfügen möglicherweise über optionale oder erforderliche Eingabeparameter. Bei diesen Befehlen werden die Parameter in Form von Textfeldern für die Eingabewerte angezeigt. Für jeden Befehl können Sie das ausgeführte Skript anzeigen, indem Sie Skript anzeigen erweitern. RunPowerShellScript unterscheidet sich insofern von den anderen Befehlen, als es Ihnen die Angabe eines eigenen, benutzerdefinierten Skripts ermöglicht.

Nachdem Sie den Befehl ausgewählt haben, wählen Sie Ausführen aus, um das Skript auszuführen. Nach Abschluss des Skripts gibt es die Ausgabe und eventuelle Fehler im Ausgabefenster zurück. Der folgende Screenshot zeigt eine Beispielausgabe für die Ausführung des RDPSettings-Befehls.

Skriptausgabe von „Befehl ausführen“

Problembehandlung für aktionsbezogene Ausführungsbefehle unter Windows

Bei der Problembehandlung für aktionsbezogene Ausführungsbefehle in Windows-Umgebungen können Sie die Protokolldatei RunCommandExtension heranziehen, um ausführlichere Informationen zu erhalten. Diese befindet sich in der Regel im folgenden Verzeichnis: C:\WindowsAzure\Logs\Plugins\Microsoft.CPlat.Core.RunCommandWindows\<version>\RunCommandExtension.log.

Bekannte Probleme

  • Die Erweiterung für aktionsbezogene Ausführungsbefehle wird in Ihrer Windows-Umgebung möglicherweise nicht erfolgreich ausgeführt, wenn der Befehl reservierte Zeichen enthält. Beispiel:

    Wenn das Symbol & im Parameter Ihres Befehls übergeben wird, wie im folgenden PowerShell-Skript zu sehen, ist der Befehl möglicherweise nicht erfolgreich.

    $paramm='abc&jj'
    Invoke-AzVMRunCommand -ResourceGroupName AzureCloudService1 -Name test -CommandId 'RunPowerShellScript' -ScriptPath     C:\data\228332902\PostAppConfig.ps1 -Parameter @{"Prefix" = $paramm}
    

    Verwenden Sie in dem Argument das Zeichen ^ als Escapezeichen für & (z. B. $paramm='abc^&jj').

  • Die Erweiterung „Skriptausführung“ wird ggf. auch nicht erfolgreich ausgeführt, wenn der auszuführende Befehl „\n“ im Pfad enthält, da dies als neue Zeile behandelt wird. C:\Windows\notepad.exe enthält beispielsweise \n im Dateipfad. Ersetzen Sie \n in Ihrem Pfad ggf. durch \N.

  • Stellen Sie sicher, dass sie keine benutzerdefinierte Einstellung im Registrierungsschlüssel HKLM\SOFTWARE\Microsoft\Command Processor\AutoRun haben (detaillierte Informationen finden Sie hier). Dies könnte während der Installations- oder Aktivierungsphase der RunCommand-Erweiterung ausgelöst werden und einen Fehler wie „XYZ wird nicht als interner oder externer Befehl, lauffähiges Programm oder Batchdatei erkannt“ verursachen.

Entfernen aktionsbezogener Ausführungsbefehle

Wenn Sie Ihre Windows-Erweiterung für aktionsbezogene Ausführungsbefehle entfernen müssen, können Sie die folgenden Schritte für Azure PowerShell und für die CLI verwenden:

Ersetzen Sie rgname und vmname in den folgenden Entfernungsbeispielen jeweils durch Ihren relevanten Ressourcengruppennamen bzw. VM-Namen:

 Invoke-AzVMRunCommand -ResourceGroupName 'rgname' -VMName 'vmname' -CommandId 'RemoveRunCommandWindowsExtension'

Hinweis

Wenn Sie einen Ausführungsbefehl erneut anwenden, wird die Erweiterung automatisch installiert. Sie können den Befehl zum Entfernen der Erweiterung verwenden, um Probleme im Zusammenhang mit der Erweiterung zu beheben.

Nächste Schritte

Informationen zu anderen Möglichkeiten für die Remoteausführung von Skripts und Befehlen in Ihrer VM finden Sie unter Ausführen von Skripts in Ihrer Windows-VM.