Freigeben über


Führen Sie Skripts in Ihrer Windows-VM mithilfe verwalteter Run-Befehle aus.

Gilt für: ✔️ Windows-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 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)

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 2025 Unterstützt Unterstützt
Windows Server 2025 Core Unterstützt Unterstützt

Verfügbare Befehle

CommandID Beschreibung
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
EnableWindowsUpdate Aktivieren Sie automatische Updates über Windows Update.
Deaktivieren von Windows Update Deaktivieren Sie automatische Updates über Windows Update.
Administratorenkonto aktivieren Überprüft, ob das lokale Administratorkonto deaktiviert ist, und aktiviert es, falls dies der Fall ist.
EnableEMS Aktivieren Sie Emergency Management Services (EMS), um die serielle Konsolenverbindung in Problembehandlungsszenarien zu ermöglichen.
RemotePSAktivieren Remote-PowerShell aktivieren.
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.
RDP-Einstellungen Ü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.
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.
Windows-Aktivierungsvalidierung Überprüft den aktuellen Windows-Lizenzstatus (aktiviert oder nicht) und wird benachrichtigt, wenn der Computer nicht aktiviert ist.
SetRDPPort Legt die standard- oder benutzerspezifische Portnummer für Remotedesktopverbindungen fest. Aktiviert die Firewallregel für eingehenden Zugriff auf den Port.
DeaktivierenNLA 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. Sie können dieses Skript verwenden, um NLA zu deaktivieren, wenn RDP-Verbindungen mit dem Fehler fehlschlagen: "Der Remotecomputer, mit dem Sie versuchen, eine Verbindung herzustellen, erfordert Authentifizierung auf Netzwerkebene (Network Level Authentication, NLA), aber Ihr Windows-Domänencontroller kann nicht erreicht werden, um eine Authentifizierung auf Netzwerkebene durchzuführen." oder Fehler "Ein Authentifizierungsfehler ist aufgetreten. Die lokale Sicherheitsautorität kann nicht kontaktiert werden." NLA ist ein Sicherheitsfeature, das nur vorübergehend deaktiviert werden sollte, damit RDP-Verbindungen erfolgreich ausgeführt werden können, bis das Domänencontrollerverbindungsproblem behoben wurde.

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.

Azure-Befehlszeilenschnittstelle (Azure CLI)

Im folgenden Beispiel wird der Befehl az vm run-command verwendet, um ein Shellskript auf einer Azure Windows-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 "Write-Host Hello World!"

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.

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 Ausführung des Skripts noch nicht abgeschlossen ist, wird die Ausführung abgebrochen.

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 "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 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/<runCommandName>?api-version=2023-03-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,
    "treatFailureAsDeploymentFailure": true,
    "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
  • Ab API-Version 2023-03-01 können Sie die Eigenschaft treatFailureAsDeploymentFailure auf true festlegen, wodurch die Bereitstellung nicht erfolgreich ist, wenn im Skript ein Fehler auftritt. Wenn auf false gesetzt, gibt ProvisioningState nur an, ob der Run-Befehl von der Erweiterungsplattform ausgeführt wurde oder nicht. Es wird nicht angegeben, ob das Skript bei Skriptfehlern fehlgeschlagen ist.
  • Die Skriptausführung unterstützt das Schreiben der Ausgabe und des Fehlers in Speicherblobs mithilfe der Parameter „outputBlobUri“ und „errorBlobUri“, die zum Speichern umfangreicher 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 tritt beim Schreiben der Skriptausgabe oder des Fehlerblobs ein Fehler auf. Das Blob wird überschrieben, wenn es bereits vorhanden ist. Wird erstellt, wenn er noch nicht vorhanden ist.

Auflisten der laufenden Instanzen von Run Command auf einer VM

GET /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachines/<vmName>/runcommands?api-version=2023-03-01

Ausgabedetails für einen bestimmten Run Command-Bereitstellung abrufen

GET /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachines/<vmName>/runcommands/<runCommandName>?$expand=instanceView&api-version=2023-03-01

Löschen einer bestimmten Run Command Bereitstellung

Sie können die Instanz von Run Command auch löschen.

DELETE /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachines/<vmName>/runcommands/<runCommandName>?api-version=2023-03-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": "Write-Host Hello World!"  
        }, 
        "timeoutInSeconds": 60  
    }
} 

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.