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: ✔️ Linux-VMs ✔️ Flexible Skalierungsgruppen
Wichtig
Der Befehl „Managed Run“ (Verwaltete Ausführung) ist derzeit in der Azure CLI, PowerShell und der API verfügbar. Die Portalfunktionalität befindet sich in der Roadmap.
Die Funktion „Befehl ausführen“ verwendet den VM-Agent für die Ausführung von Skripts in einer Azure Linux-VM. 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.
Der aktualisierte verwaltete Ausführungsbefehl verwendet denselben VM-Agentenkanal zur Ausführung von Skripten und bietet die folgenden Verbesserungen gegenüber dem ursprünglichen aktionsorientierten Ausführungsbefehl:
- Support für aktualisierte Skriptausführung 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)
Voraussetzungen
Wichtig
Der mindestens unterstützte Linux-Gast-Agent ist Version 2.4.0.2. Ältere Versionen unterstützen „Managed RunCommand“ nicht.
Unterstützte Linux-Distributionen
Linux-Distribution | x64 | ARM64 |
---|---|---|
Alma Linux | 9.x+ | Nicht unterstützt |
Debian | 10+ | Nicht unterstützt |
Flatcar Linux | 3374.2.x+ | Nicht unterstützt |
Azure Linux | 2.x | Nicht unterstützt |
openSUSE | 12.3+ | Nicht unterstützt |
Oracle Linux | 6,4+, 7.x+, 8.x+ | Nicht unterstützt |
Red Hat Enterprise Linux | 6,7+, 7.x+, 8.x+ | Nicht unterstützt |
Rocky Linux | 9.x+ | Nicht unterstützt |
SLES | 12.x+, 15.x+ | Nicht unterstützt |
Ubuntu | 18.04+, 20.04+, 22.04+ | Nicht unterstützt |
Verfügbare Befehle
CommandID | Beschreibung |
---|---|
ifconfig | Ruft die Konfiguration aller Netzwerkschnittstellen ab. Informationen zur Verwendung finden Sie unter Ausführen von Skripts |
Hinweis
Die obigen Befehls-IDs gelten für verwaltete Ausführungsbefehle für Linux-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 VM-Mitwirkender und höhere Ebenen verfügen über diese Berechtigung.
Sie können eine der integrierten Rollen verwenden oder eine benutzerdefinierte Rolle erstellen, um den Befehl 'Run Command' auszuführen.
Azure-Befehlszeilenschnittstelle (Azure CLI)
Die folgenden Beispiele verwenden az vm run-command, um ein Shell-Skript auf einer Azure Linux VM auszuführen.
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.
az vm run-command create --name "myRunCommand" --vm-name "myVM" --resource-group "myRG" --script "echo Hello World!"
Auflisten aller bereitgestellten RunCommand-Ressourcen auf einer VM
Mit diesem Befehl erhalten Sie eine vollständige Liste der zuvor bereitgestellten Ausführungsbefehle mit ihren Eigenschaften.
az vm run-command list --vm-name "myVM" --resource-group "myRG"
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.
az vm run-command show --name "myRunCommand" --vm-name "myVM" --resource-group "myRG" --expand instanceView
Hinweis
Ausgabe- und Fehlerfelder in instanceView
sind auf die letzten 4 KB beschränkt.
Wenn Sie auf die vollständige Ausgabe und den Fehler zugreifen möchten, haben Sie die Möglichkeit, die Ausgabe- und Fehlerdaten mithilfe von -outputBlobUri
- und -errorBlobUri
-Parametern an Speicheranfügeblobs weiterzuleiten, während Sie die Skriptausführung mit Set-AzVMRunCommand
oder Set-AzVMssRunCommand
ausführen.
Löschen der RunCommand-Ressource von der VM
Entfernen Sie die zuvor auf der VM bereitgestellte RunCommand-Ressource. Wenn die Skriptausführung aktuell noch stattfindet, wird die Ausführung beendet.
az vm run-command delete --name "myRunCommand" --vm-name "myVM" --resource-group "myRG"
PowerShell
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 -VMName -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>”
Einen lang laufenden Befehl auf einer VM ausführen
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 mit ihren 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 der Skriptausführung auf einer VM mithilfe von SourceScriptURI (SAS-URL des Speicherblobs)
Erstellen oder aktualisieren Sie Run Command auf einer Windows-VM unter Verwendung der SAS-URL eines Speicherblobs, das ein PowerShell-Skript enthält. SourceScriptUri
kann die vollständige SAS-URL oder öffentliche URL eines Speicherblobs sein.
Hinweis
Die SAS-URL muss Lesezugriff auf das Blob ermöglichen. 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 SAS-Token mithilfe von New-AzStorageBlobSASToken
generieren, lautet das Format der SAS-URL „Basisblob-URL“ + „?“ + „SAS-Token aus New-AzStorageBlobSASToken“.
Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVMEE -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceScriptUri <SourceScriptURI>
Abrufen der Instanzansicht der Skriptausführung für eine VM nach dem Erstellen oder Aktualisieren der Skriptausführung
Rufen Sie die Skriptausführung für eine VM mit Instanzansicht auf. Die Instanzansicht enthält den Ausführungsstatus der Skriptausführung (Erfolgreich, Fehler usw.), den Exitcode, die Standardausgabe und den Standardfehler, der durch Ausführen des Skripts mithilfe der Skriptausführung erzeugt wird. Ein ExitCode ungleich Null kennzeichnet eine nicht erfolgreiche Ausführung.
$x = Get-AzVMRunCommand -ResourceGroupName MyRG -VMName MyVM -RunCommandName MyRunCommand -Expand InstanceView
$x.InstanceView
Erwartete Ausgabe:
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 Skripts der Skriptausführung des Benutzers. Dieser Status gibt an, ob die Ausführung des Skripts erfolgreich war oder nicht.
ProvisioningState
– Status der allgemeinen End-to-End-Erweiterungsbereitstellung (unabhängig davon, ob die Erweiterungsplattform das Skript für die Skriptausführung auslösen konnte oder nicht).
Erstellen oder Aktualisieren der Befehlsausführung auf einer VM unter Verwendung von SourceScript (Skripttext)
Erstellen oder aktualisieren Sie die Skriptausführung auf einer VM, die den Skriptinhalt direkt an den Parameter „-SourceScript“ übergibt. Verwenden Sie ;
, um mehrere Befehle zu trennen.
Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVML -RunCommandName MyRunCommand2 -Location EastUS2EUAP -SourceScript "id; echo HelloWorld"
Erstellen oder Aktualisieren der Skriptausführung auf einer VM mithilfe von SourceCommandId
Erstellen oder aktualisieren Sie die Skriptausführung auf einer VM mithilfe einer bereits vorhandenencommandId
. Verfügbare Befehls-IDs (commandIds) können mithilfe von Get-AzVMRunCommandDocument abgerufen werden.
Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVMEE -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceCommandId ipconfig
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 einer VM, und streamen Sie Standardausgabe- und Standardfehlermeldungen an Ausgabe- und Fehleranfügeblobs.
Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVML -RunCommandName MyRunCommand3 -Location EastUS2EUAP EastUS2EUAP -SourceScriptUri <SourceScriptUri> -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 für das Blob ermöglichen. 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. Wenn Sie SAS-Token mithilfe von New-AzStorageBlobSASToken
generieren, lautet das Format der SAS-URL „Basisblob-URL“ + „?“ + „SAS-Token aus New-AzStorageBlobSASToken
“.
Erstellen oder Aktualisieren der Skriptausführung auf einer VM, ausführen der Skriptausführung als ein anderer Benutzer mithilfe der Parameter „RunAsUser“ und „RunAsPassword“
Erstellen oder aktualisieren Sie den Run Command auf einem virtuellen Computer, und führen Sie den Run Command als ein anderer Benutzer mithilfe der Parameter RunAsUser
und RunAsPassword
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 EastUS2EUAP -SourceScriptUri <SourceScriptUri> -RunAsUser myusername -RunAsPassword mypassword
Erstellen oder Aktualisieren Sie die Skriptausführung für eine Virtual Machine Scale Sets-Ressource mithilfe von SourceScriptUri (SAS-URL des Speicherblobs).
Erstellen oder aktualisieren Sie den Ausführungsbefehl auf einer Virtual Machine Scale Sets-Ressource mithilfe einer SAS-URL eines Speicherblobs, das ein Bash-Skript enthält.
Set-AzVmssVMRunCommand -ResourceGroupName MyRG0 -VMScaleSetName MyVMSS -InstanceId 0 -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceScriptUri <SourceScriptUri>
Hinweis
Beachten Sie, dass die SAS-URL Lesezugriff auf das Blob ermöglichen muss. 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 SAS-Token mithilfe von „New-AzStorageBlobSASToken“ generieren, lautet das Format der SAS-URL „Basisblob-URL“ + „?“ + „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)
$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
Verwenden Sie ProtectedParameter
, um alle vertraulichen Eingaben (z. B. Kennwörter, Schlüssel usw.) an Skripts zu übergeben.
- Windows: Die Parameter „Parameter“ und „ProtectedParameters“ werden als Argumente an das Skript übergeben und wie folgt ausgeführt
myscript.ps1 -publicParam1 publicParam1value -publicParam2 publicParam2value -secret1 secret1value -secret2 secret2value
- Linux: 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"
REST-API
Um eine neue Skriptausführung bereitzustellen, führen Sie einen PUT-Befehl direkt auf der VM aus, und geben Sie einen eindeutigen Namen für die Skriptausführungsinstanz an.
PUT /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachines/<vmName>/runcommands?api-version=2019-12-01
{
"location": "<location>",
"properties": {
"source": {
"script": "Write-Host Hello World!",
"scriptUri": "<SAS URI of a storage blob with read access or public URI>",
"commandId": "<Id>"
},
"parameters": [
{
"name": "param1",
"value": "value1"
},
{
"name": "param2",
"value": "value2"
}
],
"protectedParameters": [
{
"name": "secret1",
"value": "value1"
},
{
"name": "secret2",
"value": "value2"
}
],
"runAsUser": "userName",
"runAsPassword": "userPassword",
"timeoutInSeconds": 3600,
"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 >"
}
}
Notizen
- Sie können ein Inline-Skript, einen Skript-URI oder eine Befehls-ID eines integrierten Skripts als Eingabequelle angeben Der Skript-URI ist entweder ein Speicherblob-SAS-URI mit Lesezugriff oder ein öffentlicher URI.
- Für die Ausführung eines Befehls wird nur eine Art der Quelleingabe unterstützt
- Die Skriptausführung unterstützt das Schreiben der Ausgabe und des Fehlers in Speicherblobs mithilfe der Parameter „outputBlobUri“ und „errorBlobUri“, die zum Speichern großer Skriptausgaben verwendet werden können. Verwenden Sie den SAS-URI eines Speicheranfügeblobs mit Zugriff zum Lesen, Hinzufügen, Erstellen und Schreiben. Der Blob sollte den Typ „AppendBlob“ haben. Andernfalls würde das Schreiben der Skriptausgabe oder des Fehlerblobs fehlschlagen. Das Blob wird überschrieben, wenn es bereits vorhanden ist. Es wird erstellt, wenn es noch nicht vorhanden ist.
List ausgeführter Run Command-Instanzen auf einer VM
GET /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachines/<vmName>/runcommands?api-version=2019-12-01
Ausgabedetails für die Bereitstellung einer bestimmten Skriptausführung abrufen
GET /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachines/<vmName>/runcommands/<runCommandName>?$expand=instanceView&api-version=2019-12-01
Löschen der Bereitstellung einer bestimmten Skriptausführung
Löschen der Instanz der Skriptausführung
DELETE /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachines/<vmName>/runcommands/<runCommandName>?api-version=2019-12-01
Bereitstellen von Skripts in einer geordneten Reihenfolge
Um Skripts sequenziell bereitzustellen, verwenden Sie eine Bereitstellungsvorlage, die eine dependsOn
-Beziehung zwischen sequenziellen Skripts angibt.
{
"type":"Microsoft.Compute/virtualMachines/runCommands",
"name":"secondRunCommand",
"apiVersion":"2019-12-01",
"location":"[parameters('location')]",
"dependsOn":<full resourceID of the previous other Run Command>,
"properties":{
"source":{
"script":"echo Hello World!"
},
"timeoutInSeconds":60
}
}
Mehrere Skriptausführungen 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":"2019-12-01",
"location":"[parameters('location')]",
"dependsOn":[
"[concat('Microsoft.Compute/virtualMachines/', parameters('vmName'))]"
],
"properties":{
"source":{
"script":"echo 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 weiteren Möglichkeiten für die Remoteausführung von Skripts und Befehlen auf Ihrem virtuellen Computer finden Sie unter Ausführen von Skripts in Ihrer Linux-VM.