Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för: ✔️ Flexibla skalningsuppsättningar för virtuella Linux-datorer ✔️
Viktigt!
Hanterad körningskommando är för närvarande tillgängligt i Azure CLI, PowerShell och API. Portalfunktionerna finns med i översikten.
Funktionen Kör kommando använder den virtuella datoragenten (VM) för att köra skript på en virtuell Azure Linux-dator. Du kan använda de här skripten till allmän hantering av datorer eller program. De kan hjälpa dig att snabbt diagnostisera och åtgärda problem med åtkomst till virtuella datorer och nätverk och få tillbaka den virtuella datorn till ett bra tillstånd.
Det uppdaterade hanterade körningskommandot använder samma VM-agentkanal för att köra skript och ger följande förbättringar jämfört med det ursprungliga åtgärdsorienterade körningskommandot:
- Stöd för uppdaterad kommandokörning genom ARM-distributionsmall
- Parallellkörning av flera skript
- Sekventiell körning av skript
- Användarangiven skripttidsgräns
- Stöd för långvariga skript (timmar/dagar)
- Skicka hemligheter (parametrar, lösenord) på ett säkert sätt
Förutsättningar
Viktigt!
Den lägsta linux-gästagenten som stöds är version 2.4.0.2 Äldre versioner stöder inte Managed RunCommand
Linux Distro stöds
| Utgivare | Fördelning | x64 | ARM64 |
|---|---|---|---|
| Alma Linux-community | Alma Linux | 8.x+, 9.x+ | 8.x+, 9.x+ |
| Credativ | Debian | 10+ | 11.x+ |
| Kinvolk | Flatcar Linux | 3374.2.x+ | 3374.2.x+ |
| Microsoft | Azure Linux | 2.x | 2.x |
| openSUSE-projekt | openSUSE | 12.3+ | Stöds inte |
| Oracle | Oracle Linux | 6.4+, 7.x+, 8.x+ | Stöds inte |
| Röd hatt | Red Hat Enterprise Linux | 6.7+, 7.x+, 8.x+, 9.x+, 10.x+ | 8.6+, 9.0+, 10.x+ |
| CIQ | Rocky Linux | 9.x+ | 9.x+ |
| SUSE | SLES (Sodium Laureth Sulfate) | 12.x+, 15.x+ | 15.x SP4+ |
| Kanoniska | Ubuntu (LTS-versioner) | 18.04+, 20.04+, 22.04+, 24.04+ | 20.04+, 22.04+, 24.04+ |
Tillgängliga kommandon
| CommandID | Beskrivning |
|---|---|
| RunShellScript | Kör ett Linux-gränssnittsskript. |
| ifconfig | Hämtar konfigurationen av alla nätverksgränssnitt. Mer information om användning finns i Kör skript |
Anteckning
Ovanstående kommando-ID:er gäller för hanterade körningskommandon för virtuella Linux-datorer. Du kan lista alla commandIds med kommandot "Get-AzVMRunCommandDocument -Location {RegionName}".
Begränsa åtkomst till Run Command
För att visa körningskommandona eller visa information om ett kommando krävs behörigheten Microsoft.Compute/locations/runCommands/read på prenumerationsnivå. Den inbyggda rollen Läsare och högre nivåer har den här behörigheten.
Om du kör ett kommando krävs behörigheten Microsoft.Compute/virtualMachines/runCommand/write . Rollen Virtuell maskinbidragsgivare och högre nivåer har den här behörigheten.
Du kan använda någon av de inbyggda rollerna eller skapa en anpassad roll för att använda Kör kommando.
Azure CLI (kommandoradsgränssnittet för Azure)
I följande exempel används az vm run-command för att köra shell-skript på en virtuell Azure Linux-dator.
Köra ett skript med den virtuella datorn
Det här kommandot levererar skriptet till den virtuella datorn, kör det och returnerar de insamlade utdata.
az vm run-command create --name "myRunCommand" --vm-name "myVM" --resource-group "myRG" --script "echo Hello World!"
Visa en lista över alla distribuerade RunCommand-resurser på en virtuell dator
Det här kommandot returnerar en fullständig lista över tidigare distribuerade Körningskommandon tillsammans med deras egenskaper.
az vm run-command list --vm-name "myVM" --resource-group "myRG"
Hämta körningsstatus och resultat
Det här kommandot hämtar aktuell körningsstatus, inklusive senaste utdata, start-/sluttid, slutkod och terminaltillstånd för körningen.
az vm run-command show --name "myRunCommand" --vm-name "myVM" --resource-group "myRG" --expand instanceView
Anteckning
Utdata- och felfälten i instanceView är begränsade till de senaste 4 KB.
Om du vill komma åt fullständig utdata och fel har du möjlighet att vidarebefordra utdata och feldata till lagringstilläggsblobar med hjälp av -outputBlobUri och -errorBlobUri-parametrar när du kör Kör kommando med Set-AzVMRunCommand eller Set-AzVMssRunCommand.
Ta bort RunCommand-resurs från den virtuella datorn
ta bort den RunCommand-resurs som tidigare har distribuerats på den virtuella datorn. Om skriptkörningen fortfarande pågår kommer körningen att avslutas.
az vm run-command delete --name "myRunCommand" --vm-name "myVM" --resource-group "myRG"
PowerShell
Köra ett skript med den virtuella datorn
Det här kommandot levererar skriptet till den virtuella datorn, kör det och returnerar de insamlade utdata.
Set-AzVMRunCommand -ResourceGroupName "myRG" -VMName "myVM" -Location "EastUS" -RunCommandName "RunCommandName" –SourceScript "echo Hello World!"
Köra ett skript på den virtuella datorn med hjälp av SourceScriptUri-parametern
OutputBlobUri och ErrorBlobUri är valfria parametrar.
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>”
Köra ett tidskrävande körningskommando på en virtuell dator
Körningstiden bör vara längre än standardtidsgränsen på 90 minuter. Den ska köras i 100 minuter (se parametern 6 000 sekunder – TimeoutInSecond) förutsatt att skriptet förväntas köras så länge. Efter 100 minuter ska skriptkörningen stoppas.
Set-AzVMRunCommand -ResourceGroupName MyRG -VMName MyVM -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceScriptUri <SourceScriptUri> -AsyncExecution -TimeoutInSecond 6000
Visa en lista över alla distribuerade RunCommand-resurser på en virtuell dator
Det här kommandot returnerar en fullständig lista över tidigare distribuerade Körningskommandon tillsammans med deras egenskaper.
Get-AzVMRunCommand -ResourceGroupName "myRG" -VMName "myVM"
Hämta körningsstatus och resultat
Det här kommandot hämtar aktuell körningsstatus, inklusive senaste utdata, start-/sluttid, slutkod och terminaltillstånd för körningen.
Get-AzVMRunCommand -ResourceGroupName "myRG" -VMName "myVM" -RunCommandName "RunCommandName" -Expand instanceView
Skapa eller uppdatera körningskommandot på en virtuell dator med hjälp av SourceScriptURI (SAS-URL för lagringsblob)
Skapa eller uppdatera körkommandot på en virtuell Windows-dator med hjälp av en SAS-URL för en lagringsblob som innehåller ett PowerShell-skript.
SourceScriptUri kan vara en lagringsblobs fullständiga SAS-URL eller offentliga URL.
Anteckning
SAS-URL:en måste ge läsbehörighet till bloben. En förfallotid på 24 timmar föreslås för SAS-URL:en. SAS-URL:er kan genereras på Azure Portal med hjälp av blobalternativ eller SAS-token med .New-AzStorageBlobSASToken Om du genererar SAS-token med New-AzStorageBlobSASToken, är din SAS-URL = "basurl för blob" + "?" + "SAS-token från New-AzStorageBlobSASToken"
Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVMEE -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceScriptUri <SourceScriptURI>
Hämta en körningskommandoinstansvy för en virtuell dator när du har skapat eller uppdaterat körningskommandot
Hämta ett körningskommando för virtuell dator med instansvyn. Instansvyn innehåller körtillståndet för Körningskommando (Lyckades, Misslyckades osv.), utgångskod, standardutdata och standardfel som genereras genom att köra skriptet med Körningskommando. En exitcode som inte är noll anger en misslyckad körning.
$x = Get-AzVMRunCommand -ResourceGroupName MyRG -VMName MyVM -RunCommandName MyRunCommand -Expand InstanceView
$x.InstanceView
Förväntad utdata:
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 för användarens körkommandoskript. Kontrollera detta tillstånd för att veta om ditt skript lyckades eller inte.
ProvisioningState – Status för allmän tilläggsetablering från slutpunkt till slutpunkt (om tilläggsplattformen kunde utlösa Kör kommandoskript eller inte).
Skapa eller uppdatera körkommandot på en virtuell dator med Hjälp av SourceScript (skripttext)
Skapa eller uppdatera körkommandot på en virtuell dator som skickar skriptinnehållet direkt till parametern -SourceScript. Använd ; för att separera flera kommandon.
Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVML -RunCommandName MyRunCommand2 -Location EastUS2EUAP -SourceScript "id; echo HelloWorld"
Skapa eller uppdatera körkommandot på en virtuell dator med SourceCommandId
Skapa eller uppdatera körkommandot på en virtuell dator med hjälp av befintliga commandId. Tillgängliga commandIds kan hämtas med hjälp av Get-AzVMRunCommandDocument.
Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVMEE -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceCommandId ipconfig
Skapa eller uppdatera körkommandot på en virtuell dator med Hjälp av OutputBlobUri, ErrorBlobUri för att strömma standardutdata och standardfelmeddelanden till utdata samt fel vid tilläggsblobbar
Skapa eller uppdatera Kör kommando på en virtuell dator och strömma standardutdata och standardfelmeddelanden till utdata och fel Lägg till blobar.
Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVML -RunCommandName MyRunCommand3 -Location EastUS2EUAP EastUS2EUAP -SourceScriptUri <SourceScriptUri> -OutputBlobUri <OutputBlobUri> -ErrorBlobUri <errorbloburi>
Anteckning
Utdata- och felblobar måste vara av typen AppendBlob och deras SAS-URL:er måste ge läs-, tilläggs-, skapa- och skrivåtkomst till bloben. En förfallotid på 24 timmar föreslås för SAS-URL:en. Om det inte finns någon utdata- eller felblob skapas en blob av typen AppendBlob. SAS-URL:er kan genereras på Azure Portal med hjälp av blobalternativ eller SAS-token med hjälp av New-AzStorageBlobSASToken. Om du genererar en SAS-token med New-AzStorageBlobSASToken, skrivs SAS-URL som: basblob-URL + "?" + SAS-token från New-AzStorageBlobSASToken.
Skapa eller uppdatera ett Kör-kommando på en VM och kör kommandot som en annan användare med hjälp av parametrarna RunAsUser och RunAsPassword.
Skapa eller uppdatera Kör kommandot på en virtuell dator, kör Kör Kommandot som en annan användare med hjälp av RunAsUser- och RunAsPassword-parametrar. För att RunAs ska fungera korrekt kontaktar du administratören för den virtuella datorn och kontrollerar att användaren har lagts till på den virtuella datorn, att användaren har åtkomst till resurser som används av körkommandot (kataloger, filer, nätverk osv.) och i händelse av en virtuell Windows-dator körs tjänsten "Sekundär inloggning" på den virtuella datorn.
Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVMEE -RunCommandName MyRunCommand -Location EastUS2EUAP EastUS2EUAP -SourceScriptUri <SourceScriptUri> -RunAsUser myusername -RunAsPassword mypassword
Skapa eller uppdatera ett körningskommando på en resurs för virtuella maskiners skalningsuppsättningar med hjälp av SourceScriptUri (SAS-URL för lagringsblob).
Skapa eller uppdatera Kör-kommandot på en vm-skalningsuppsättningsresurs med hjälp av en SAS-URL för en lagringsblob som innehåller ett bash-skript.
Set-AzVmssVMRunCommand -ResourceGroupName MyRG0 -VMScaleSetName MyVMSS -InstanceId 0 -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceScriptUri <SourceScriptUri>
Anteckning
Observera att SAS-URL:en måste ge läsbehörighet till bloben. En förfallotid på 24 timmar föreslås för SAS-URL: en. SAS-URL:er kan genereras på Azure Portal med hjälp av blobalternativ eller SAS-token med hjälp av New-AzStorageBlobSASToken. Om du genererar SAS-token med New-AzStorageBlobSASToken, SAS URL = basblob-URL + "?" + SAS-token från New-AzStorageBlobSASToken.
Skapa eller uppdatera körkommandot på en virtuell datorinstans med parametrarna Parameter och ProtectedParameter (offentliga och skyddade parametrar till 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
Använd ProtectedParameter för att skicka känsliga indata till skript, till exempel lösenord, nycklar osv.
- Windows: Parametrar och ProtectedParameters skickas till skriptet på samma sätt som argument skickas till skriptet och körs på följande sätt
myscript.ps1 -publicParam1 publicParam1value -publicParam2 publicParam2value -secret1 secret1value -secret2 secret2value - Linux: Namngivna parametrar och dess värden är inställda på miljökonfiguration, som ska vara tillgängliga i skriptet
.sh. För argument utan namn, använd en tom sträng för inmatning av namn. Namnlösa argument skickas till skriptet och körs så här -myscript.sh publicParam1value publicParam2value secret1value secret2value
Ta bort RunCommand-resurs från den virtuella datorn
ta bort den RunCommand-resurs som tidigare har distribuerats på den virtuella datorn. Om skriptets körning fortfarande pågår, avslutas körningen.
Remove-AzVMRunCommand -ResourceGroupName "myRG" -VMName "myVM" -RunCommandName "RunCommandName"
REST-API
Om du vill distribuera ett nytt Körningskommando kör du en PUT på den virtuella datorn direkt och anger ett unikt namn för körkommandoinstansen.
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 >"
}
}
Anteckningar
- Du kan ange ett infogat skript, en skript-URI eller ett inbyggt skriptkommando-ID som indatakälla. Skript-URI är antingen SAS-URI för lagringsblob med läsåtkomst eller offentlig URI.
- Endast en typ av källindata stöds för en kommandokörning.
- Run Command stöder att skriva utdata och fel till lagringsblobbar genom parametrarna outputBlobUri och errorBlobUri, som kan användas för att lagra stora skriptutdata. Använd SAS-URI för en lagringstilläggsblob med läs-, tilläggs-, skapa- och skrivåtkomst. Blobben ska vara av typen AppendBlob. Annars skulle det inte gå att skriva skriptutdata eller felblob. Bloben skrivs över om den redan finns. Den skapas om den inte finns.
Visa en lista över körningsinstanser av körkommandot på en virtuell dator
GET /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachines/<vmName>/runcommands?api-version=2019-12-01
Hämta utdatainformation för en specifik körningskommandodistribution
GET /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachines/<vmName>/runcommands/<runCommandName>?$expand=instanceView&api-version=2019-12-01
Ta bort en specifik körningskommandodistribution
Ta bort instansen av körkommandot
DELETE /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachines/<vmName>/runcommands/<runCommandName>?api-version=2019-12-01
Distribuera skript i en ordnad sekvens
Om du vill distribuera skript sekventiellt använder du en distributionsmall och anger en dependsOn relation mellan sekventiella skript.
{
"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
}
}
Utföra flera kommandon sekventiellt
Om du distribuerar flera RunCommand-resurser med hjälp av distributionsmallen körs de som standard samtidigt på den virtuella datorn. Om du har ett beroende av skripten och en önskad körningsordning kan du använda dependsOn egenskapen för att få dem att köras sekventiellt.
I det här exemplet körs secondRunCommand efter firstRunCommand.
{
"$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ästa steg
Mer information om andra sätt att fjärrköra skript och kommandon på den virtuella datorn finns i Köra skript på den virtuella Linux-datorn.