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.
Gilt für: ✔️ Windows-VMs ✔️ Flexible Skalierungsgruppen
Die Funktion Befehl ausführen verwendet den Agenten der virtuellen Maschine (VM), um Skripte 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 VM-Zugriffs- und -Netzwerkprobleme schnell diagnostizieren und beheben und die VM wieder in einen funktionierenden Zustand versetzen.
Die aktualisierte verwaltete Skriptausführung verwendet den gleichen VM-Agent-Kanal zum Ausführen von Skripts und bietet die folgenden Verbesserungen im Vergleich zur ursprünglichen aktionsorientierten Skriptausführung:
- Unterstützung für aktualisierten Ausführungsbefehl durch ARM-Bereitstellungsvorlage
- Parallele Ausführung mehrerer Skripts
- Sequenzielle Ausführung von Skripts
- Benutzerdefiniertes Skript-Timeout
- Unterstützung für zeitintensive Skripts (Stunden/Tage)
- Sicheres Übergeben von Geheimnissen (Parameter, Kennwörter)
Wichtig
Der Befehl „Managed Run“ (Verwaltete Ausführung) ist derzeit in der Azure CLI, PowerShell und der API verfügbar.
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 |
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 |
Hinweis
Die obigen Befehls-IDs gelten für verwaltete Ausführungsbefehle für Windows-VMs. Sie können alle CommandIds mithilfe von Befehl "Get-AzVMRunCommandDocument -Location {RegionName}" auflisten.
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/write erforderlich. Die Rolle Mitwirkender für virtuelle Computer und höhere Rollen verfügen über diese Berechtigung.
You can use one of the built-in roles or create a custom role to use Run Command. de-DE: Sie können eine der integrierten Rollen verwenden oder eine benutzerdefinierte Rolle erstellen, um den Run Command zu verwenden.
Verwendung von Ausführen-Befehlen
Ausführen eines Skripts mit der VM
Dieser Befehl liefert das Skript an die VM, führt es aus und gibt die erfasste Ausgabe zurück.
Set-AzVMRunCommand -ResourceGroupName "myRG" -VMName "myVM" -Location "EastUS" -RunCommandName "RunCommandName" –SourceScript "echo Hello World!"
Ausführen eines Skripts auf dem virtuellen Computer mithilfe des SourceScriptUri-Parameters
OutputBlobUri und ErrorBlobUri sind optionale Parameter.
Set-AzVMRunCommand -ResourceGroupName "myRg" `
-VMName "myVM" `
-RunCommandName "RunCommandName" `
-SourceScriptUri “<SAS_URI_of_a_storage_blob_with_read_access_or_public_URI>" `
-OutputBlobUri “<SAS_URI_of_a_storage_append_blob_with_read_add_create_write_access>" `
-ErrorBlobUri “<SAS_URI_of_a_storage_append_blob_with_read_add_create_write_access>”
Ausführen eines lang laufenden Run-Befehls auf einer VM
Die Ausführungszeit sollte länger als das Standardtimeout von 90 Minuten sein. Sie sollte 100 Minuten lang ausgeführt werden (6.000 Sekunden -TimeoutInSecond-Parameter), vorausgesetzt, dass das Skript so lange ausgeführt wird. Nach 100 Minuten sollte die Skriptausführung beendet werden.
Set-AzVMRunCommand -ResourceGroupName MyRG -VMName MyVM -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceScriptUri <SourceScriptUri> -AsyncExecution -TimeoutInSecond 6000
Auflisten aller bereitgestellten RunCommand-Ressourcen auf einer VM
Mit diesem Befehl erhalten Sie eine vollständige Liste der zuvor bereitgestellten Ausführungsbefehle zusammen mit deren Eigenschaften.
Get-AzVMRunCommand -ResourceGroupName "myRG" -VMName "myVM"
Abrufen des Ausführungsstatus und der Ergebnisse
Dieser Befehl ruft den aktuellen Ausführungsfortschritt ab, einschließlich der letzten Ausgabe, der Start-/Endzeit, des Exitcodes und des Beendigungsstatus der Ausführung.
Get-AzVMRunCommand -ResourceGroupName "myRG" -VMName "myVM" -RunCommandName "RunCommandName" -Expand InstanceView
Erstellen oder Aktualisieren von Skriptausführung auf einer VM mithilfe von SourceScriptUri (der SAS-URL des Speicherblobs)
Erstellen oder aktualisieren Sie den Befehl 'Ausführen' auf einer Windows-VM mithilfe der SAS-URL eines Speicherblobs, das ein PowerShell-Skript enthält.
SourceScriptUri kann die vollständige SAS-URL oder öffentliche URL eines Speicherblobs sein.
Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVMEE -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceScriptUri <SourceScriptUri>
Hinweis
Die SAS-URL muss Lesezugriff auf das Blob bieten. Für die SAS-URL wird eine Ablaufzeit von 24 Stunden vorgeschlagen. SAS-URLs können im Azure-Portal über die Bloboptionen oder mit dem SAS-Token unter Verwendung von New-AzStorageBlobSASToken generiert werden. Wenn Sie einen SAS-Token mithilfe von New-AzStorageBlobSASToken generieren, ist Ihre SAS-URL = „Basisblob-URL“ + „?“ + „SAS-Token aus New-AzStorageBlobSASToken“.
Abrufen der Instanzansicht der Skriptausführung für eine VM nach dem Erstellen oder Aktualisieren der Skriptausführung
Holen Sie sich einen Ausführungsbefehl für eine VM mit Instanzansicht. Die Instanzansicht enthält den Ausführungsstatus des Befehls "Erfolgreich", "Fehlgeschlagen" usw.), "Exitcode", "Standardausgabe" und "Standardfehler", der durch Ausführen des Skripts mit dem Befehl "Ausführen" generiert wird. Ein ExitCode ungleich Null kennzeichnet eine nicht erfolgreiche Ausführung.
$x = Get-AzVMRunCommand -ResourceGroupName MyRG -VMName MyVM -RunCommandName MyRunCommand -Expand InstanceView
$x.InstanceView
Beispielausgabe
ExecutionState : Succeeded
ExecutionMessage :
ExitCode : 0
Output :
output : uid=0(root) gid=0(root) groups=0(root)
HelloWorld
Error :
StartTime : 10/27/2022 9:10:52 PM
EndTime : 10/27/2022 9:10:55 PM
Statuses :
InstanceView.ExecutionState: Status des Skriptausführung-Skripts des Benutzers. Dieser Status gibt an, ob die Ausführung des Skripts erfolgreich war oder nicht.
ProvisioningState: Status der vollständigen Ende-zu-Ende-Erweiterungsbereitstellung (ob die Erweiterungsplattform das Run-Command-Skript auslösen konnte oder nicht).
Erstellen oder Aktualisieren eines Run-Befehls auf einer virtuellen Maschine mittels ScriptLocalPath (lokale Skriptdatei)
Erstellen oder aktualisieren Sie das Run Command auf einer VM mithilfe einer lokalen Skriptdatei auf dem Clientcomputer, auf dem das Cmdlet ausgeführt wird.
Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVMEE -RunCommandName MyRunCommand -Location EastUS2EUAP -ScriptLocalPath "C:\MyScriptsDir\MyScript.ps1"
Erstellen oder Aktualisieren des Ausführen-Befehls auf einer VM mit SourceScript (Skripttext)
Erstellen oder aktualisieren Sie den Run-Befehl auf einer virtuellen Maschine, indem Sie den Skriptinhalt direkt an den „-SourceScript“-Parameter übergeben. Verwenden Sie ;, um mehrere Befehle zu trennen.
Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVML -RunCommandName MyRunCommand2 -Location EastUS2EUAP -SourceScript "id; echo HelloWorld"
Erstellen oder Aktualisieren des Run-Befehls auf einer VM mithilfe der SourceCommandId
Erstellen oder aktualisieren Sie den Befehl "Ausführen" auf einem virtuellen Computer mithilfe der bereits vorhandenen CommandId. Verfügbare commandIds können mithilfe von Get-AzVMRunCommandDocument abgerufen werden.
Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVMEE -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceCommandId DisableWindowsUpdate
Erstellen oder Aktualisieren der Skriptausführung auf einer VM mithilfe von OutputBlobUri und ErrorBlobUri, um Standardausgabe- und Standardfehlermeldungen an Ausgabe- und Fehleranfügeblobs zu streamen
Erstellen oder aktualisieren Sie die Skriptausführung auf einem virtuellen Computer, und streamen Sie Standardausgabe- und Standardfehlermeldungen an Ausgabe- und Fehleranfügeblobs.
Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVML -RunCommandName MyRunCommand3 -Location EastUS2EUAP -ScriptLocalPath "C:\MyScriptsDir\MyScript.ps1" -OutputBlobUri <OutPutBlobUrI> -ErrorBlobUri "ErrorBlobUri
Hinweis
Ausgabe- und Fehlerblobs müssen vom Typ „AppendBlob“ sein, und ihre SAS-URLs müssen Lese-, Anfüge-, Erstellungs- und Schreibzugriff auf das Blob bieten. Für die SAS-URL wird eine Ablaufzeit von 24 Stunden vorgeschlagen. Wenn kein Ausgabe- oder Fehlerblob vorhanden ist, wird ein Blob vom Typ „AppendBlob“ erstellt. SAS-URLs können im Azure-Portal über die Bloboptionen oder mit dem SAS-Token unter Verwendung von New-AzStorageBlobSASToken generiert werden.
Erstellen oder Aktualisieren von Skriptausführung auf einer VM als anderer Benutzer mithilfe der Parameter „RunAsUser“ und „RunAsPassword“
Erstellen oder aktualisieren Sie einen Befehl auf einer VM und führen Sie ihn als anderer Benutzer mithilfe von RunAsUser- und RunAsPassword-Parametern aus. Damit RunAs ordnungsgemäß funktioniert, wenden Sie sich an den Administrator der VM, und stellen Sie sicher, dass der Benutzer auf der VM hinzugefügt wurde und Zugriff auf Ressourcen hat, auf die die Skriptausführung zugreift (Verzeichnisse, Dateien, Netzwerk usw.). Vergewissern Sie sich zudem, dass im Falle einer Windows-VM der Dienst „Sekundäre Anmeldung“ auf der VM ausgeführt wird.
Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVMEE -RunCommandName MyRunCommand -Location EastUS2EUAP -ScriptLocalPath "C:\MyScriptsDir\MyScript.ps1" -RunAsUser myusername -RunAsPassword mypassword
Erstellen oder Aktualisieren von Skriptausführung für eine Virtual Machine Scale Sets-Ressource mithilfe von SourceScriptUri (SAS-URL des Speicherblobs)
Erstellen oder aktualisieren Sie den Befehl 'Run Command' auf einer Virtual Machine Scale Sets-Ressource mithilfe einer SAS-URL eines Speicherblobs, das ein PowerShell-Skript enthält.
Set-AzVmssVMRunCommand -ResourceGroupName MyRG0 -VMScaleSetName MyVMSS -InstanceId 0 -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceScriptUri <SourceScriptUri>
Hinweis
Die SAS-URL muss Lesezugriff auf das Blob bieten. Für die SAS-URL wird eine Ablaufzeit von 24 Stunden vorgeschlagen. SAS-URLs können im Azure-Portal über die Bloboptionen oder mit dem SAS-Token unter Verwendung von New-AzStorageBlobSASToken generiert werden. Wenn Sie ein SAS-Token mithilfe von New-AzStorageBlobSASToken generieren, lautet das Format der SAS-URL: Basis-Blob-URL + "?" + das SAS-Token aus New-AzStorageBlobSASToken.
Erstellen oder Aktualisieren der Skriptausführung auf einer VM-Instanz mithilfe der Parameter „Parameter“ und „ProtectedParameter“ (öffentliche und geschützte Parameter im Skript)
Verwenden Sie „ProtectedParameter“, um alle vertraulichen Eingaben (z. B. Kennwörter, Schlüssel usw.) an Skripts zu übergeben.
$PublicParametersArray = @([Microsoft.Azure.PowerShell.Cmdlets.Compute.Models.Api20210701.IRunCommandInputParameter]@{name='publicParam1';value='publicParam1value'},
>> [Microsoft.Azure.PowerShell.Cmdlets.Compute.Models.Api20210701.IRunCommandInputParameter]@{name='publicParam2';value='publicParam2value'})
$ProtectedParametersArray = @([Microsoft.Azure.PowerShell.Cmdlets.Compute.Models.Api20210701.IRunCommandInputParameter]@{name='secret1';value='secret1value'},
>> [Microsoft.Azure.PowerShell.Cmdlets.Compute.Models.Api20210701.IRunCommandInputParameter]@{name='secret2';value='secret2value'})
Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVMEE -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceScriptUri <SourceScriptUri> -Parameter $PublicParametersArray -ProtectedParameter $ProtectedParametersArray
Windows: Die Parameter „Parameter“ und „ProtectedParameter“ werden an das Skript übergeben, wenn Argumente an das Skript übergeben und wie folgt ausgeführt werden -
myscript.ps1 -publicParam1 publicParam1value -publicParam2 publicParam2value -secret1 secret1value -secret2 secret2valueLinux: Benannte Parameter und ihre Werte werden auf die Umgebungskonfiguration festgelegt, die innerhalb des .sh-Skripts zugänglich sein sollte. Übergeben Sie für namenlose Argumente eine leere Zeichenfolge an die Namenseingabe. Namenlose Argumente werden an das Skript übergeben und wie folgt ausgeführt:
myscript.sh publicParam1value publicParam2value secret1value secret2value
Löschen der RunCommand-Ressource von der VM
Entfernen Sie die zuvor auf der VM bereitgestellte RunCommand-Ressource. Wenn die Ausführung des Skripts noch nicht abgeschlossen ist, wird die Ausführung abgebrochen.
Remove-AzVMRunCommand -ResourceGroupName "myRG" -VMName "myVM" -RunCommandName "RunCommandName"
Mehrere Run Commands nacheinander ausführen
Wenn Sie mehrere RunCommand-Ressourcen mithilfe einer Bereitstellungsvorlage bereitstellen, werden diese standardmäßig gleichzeitig auf der VM ausgeführt. Wenn Sie eine Abhängigkeit von den Skripts und eine bevorzugte Ausführungsreihenfolge haben, können Sie die dependsOn-Eigenschaft verwenden, damit sie sequenziell ausgeführt werden.
In diesem Beispiel wird secondRunCommand nach firstRunCommand ausgeführt.
{
"$schema":"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion":"1.0.0.0",
"resources":[
{
"type":"Microsoft.Compute/virtualMachines/runCommands",
"name":"[concat(parameters('vmName'),'/firstRunCommand')]",
"apiVersion":"2023-03-01",
"location":"[parameters('location')]",
"dependsOn":[
"[concat('Microsoft.Compute/virtualMachines/', parameters('vmName'))]"
],
"properties":{
"source":{
"script":"Write-Host First: Hello World!"
},
"parameters":[
{
"name":"param1",
"value":"value1"
},
{
"name":"param2",
"value":"value2"
}
],
"timeoutInSeconds":20
}
},
{
"type":"Microsoft.Compute/virtualMachines/runCommands",
"name":"[concat(parameters('vmName'),'/secondRunCommand')]",
"apiVersion":"2019-12-01",
"location":"[parameters('location')]",
"dependsOn":[
"[concat('Microsoft.Compute/virtualMachines/', parameters('vmName'),'runcommands/firstRunCommand')]"
],
"properties":{
"source":{
"scriptUri":"http://github.com/myscript.ps1"
},
"timeoutInSeconds":60
}
}
]
}
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.