Konfigurera servrar via fjärranslutning och på ett säkert sätt med körkommandot (förhandsversion)
Kör kommandot på Azure Arc-aktiverade servrar (offentlig förhandsversion) använder connected machine-agenten för att fjärrköra ett skript på dina servrar. Detta kan vara användbart för otaliga scenarier för felsökning, återställning, diagnostik och underhåll.
Miljö och konfiguration som stöds
Upplevelser: Körningskommandot stöds för närvarande via Azure CLI och PowerShell.
Operativsystem: Kör kommando stöder både Windows- och Linux-operativsystem.
Miljöer: Kör kommando stöder icke-Azure-miljöer, inklusive lokala miljöer, VMware, SCVMM, AWS, GCP och OCI.
Kostnad: Kör kommandot är kostnadsfritt, men lagring av skript i Azure kan medföra fakturering.
Konfiguration: Kör kommandot kräver inte mer konfiguration eller distribution av tillägg. Agentversionen för den anslutna datorn måste vara 1.33 eller senare.
Begränsa åtkomsten till Kör kommando med RBAC
Att visa körningskommandona eller visa information om ett kommando kräver behörigheten Microsoft.HybridCompute/machines/runCommands/read
. 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.HybridCompute/machines/runCommands/write
. Rollen Azure Connected Machine Resource Administrator 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.
Blockera körningskommandon lokalt
Connected Machine-agenten stöder lokala konfigurationer som gör att du kan ange en lista över tillåtna eller blockeringar. Mer information finns i Listan över tillåtna tillägg och blocklistor .
För Windows:
azcmagent config set extensions.blocklist "microsoft.cplat.core/runcommandhandlerwindows"
För Linux:
azcmagent config set extensions.blocklist "microsoft.cplat.core/runcommandhandlerlinux"
Azure CLI
I följande exempel används az connectedmachine run-command för att köra ett gränssnittsskript på en Azure Windows-dator.
Köra ett skript med datorn
Det här kommandot levererar skriptet till datorn, kör det och returnerar de insamlade utdata.
az connectedmachine run-command create --name "myRunCommand" --machine-name "myMachine" --resource-group "myRG" --script "Write-Host Hello World!"
Visa en lista över alla distribuerade RunCommand-resurser på en dator
Det här kommandot returnerar en fullständig lista över tidigare distribuerade körningskommandon tillsammans med deras egenskaper.
az connectedmachine run-command list --machine-name "myMachine" --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 connectedmachine run-command show --name "myRunCommand" --machine-name "myMachine" --resource-group "myRG"
Kommentar
Utdata- och felfälten i instanceView
är begränsade till de senaste 4 KB. För att få åtkomst till fullständiga utdata och fel kan du vidarebefordra utdata och feldata till lagrings-tilläggsblobar med hjälp av -outputBlobUri
och -errorBlobUri
parametrar när du kör Kör kommando.
Ta bort RunCommand-resurs från datorn
Ta bort Den RunCommand-resurs som tidigare distribuerats på datorn. Om skriptkörningen fortfarande pågår avslutas körningen.
az connectedmachine run-command delete --name "myRunCommand" --machine-name "myMachine" --resource-group "myRG"
PowerShell
Köra ett skript med datorn
New-AzConnectedMachineRunCommand -ResourceGroupName "myRG" -MachineName "myMachine" -Location "EastUS" -RunCommandName "RunCommandName" –SourceScript "echo Hello World!"
Köra ett skript på datorn med hjälp av SourceScriptUri-parametern
OutputBlobUri
och ErrorBlobUri
är valfria parametrar.
New-AzConnectedMachineRunCommand -ResourceGroupName -MachineName -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>”
Visa en lista över alla distribuerade RunCommand-resurser på en dator
Det här kommandot returnerar en fullständig lista över tidigare distribuerade Körningskommandon tillsammans med deras egenskaper.
Get-AzConnectedMachineRunCommand -ResourceGroupName "myRG" -MachineName "myMachine"
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-AzConnectedMachineRunCommand -ResourceGroupName "myRG" - MachineName "myMachine" -RunCommandName "RunCommandName"
Skapa eller uppdatera körkommandot på en dator med Hjälp av SourceScriptUri (SAS-URL för lagringsblob)
Skapa eller uppdatera körkommandot på en 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.
New-AzConnectedMachineRunCommand -ResourceGroupName MyRG0 -MachineName MyMachine -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceScriptUri <SourceScriptUri>
Kommentar
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
din SAS-URL = "basblob-URL" + "?" + "SAS-token från New-AzStorageBlobSASToken
"
Hämta en körningskommandoinstansvy för en dator när du har skapat eller uppdaterat Kör kommando
Hämta ett körningskommando för datorn med instansvyn. Instansvyn innehåller körningstillståndet för körningskommandot (Lyckades, Misslyckades osv.), slutkod, standardutdata och standardfel som genereras genom att köra skriptet med körkommandot. En exitcode som inte är noll anger en misslyckad körning.
Get-AzConnectedMachineRunCommand -ResourceGroupName MyRG -MachineName MyMachine -RunCommandName MyRunCommand
InstanceViewExecutionState
: Status för användarens körkommandoskript. Se det här tillståndet för att veta om skriptet lyckades eller inte.
ProvisioningState
: Status för allmän tilläggsetablering från slutpunkt till slutpunkt (oavsett om tilläggsplattformen kunde utlösa Kör kommandoskript eller inte).
Skapa eller uppdatera körkommandot på en dator med Hjälp av SourceScript (skripttext)
Skapa eller uppdatera Kör kommando på en dator som skickar skriptinnehållet direkt till -SourceScript
parametern. Använd ;
för att separera flera kommandon.
New-AzConnectedMachineRunCommand -ResourceGroupName MyRG0 -MachineName MyMachine -RunCommandName MyRunCommand2 -Location EastUS2EUAP -SourceScript "id; echo HelloWorld"
Skapa eller uppdatera körkommandot på en dator med Hjälp av OutputBlobUri, ErrorBlobUri för att strömma standardutdata och standardfelmeddelanden till utdata och fel Lägg till blobar
Skapa eller uppdatera Kör kommando på en dator och strömma standardutdata och standardfelmeddelanden till utdata och fel Lägg till blobar.
New-AzConnectedMachineRunCommand -ResourceGroupName MyRG0 - MachineName MyMachine -RunCommandName MyRunCommand3 -Location EastUS2EUAP -SourceScript "id; echo HelloWorld"-OutputBlobUri <OutPutBlobUrI> -ErrorBlobUri <ErrorBlobUri>
Kommentar
Utdata- och felblobbar måste vara typen AppendBlob och deras SAS-URL:er måste tillhandahålla 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 från att använda New-AzStorageBlobSASToken
.
Skapa eller uppdatera Kör kommando på en dator som en annan användare med hjälp av Parametrarna RunAsUser och RunAsPassword
Skapa eller uppdatera Kör kommando på en dator 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 datorn och kontrollerar att användaren har lagts till på datorn, att användaren har åtkomst till resurser som används av körkommandot (kataloger, filer, nätverk osv.) och i händelse av Windows-dator körs tjänsten "Sekundär inloggning" på datorn.
New-AzMachineRunCommand -ResourceGroupName MyRG0 -MachineName MyMachine -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceScript "id; echo HelloWorld" -RunAsUser myusername -RunAsPassword mypassword
Skapa eller uppdatera Kör-kommandot på en datorresurs med SourceScriptUri (SAS-URL för lagringsblob)
Skapa eller uppdatera körkommandot på en Windows-datorresurs med hjälp av en SAS-URL för en lagringsblob som innehåller ett PowerShell-skript.
New-AzMachineRunCommand -ResourceGroupName MyRG0 -MachineName MyMachine -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceScriptUri <SourceScriptUri>
Kommentar
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 är New-AzStorageBlobSASToken
SAS-URL-formatet: basblob-URL + "?" + SAS-token från New-AzStorageBlobSASToken
.
Skapa eller uppdatera körkommandot på en dator med hjälp av ScriptLocalPath (lokal skriptfil)
Skapa eller uppdatera Kör kommando på en dator med hjälp av en lokal skriptfil som finns på klientdatorn där cmdleten körs.
New-AzMachineRunCommand -ResourceGroupName MyRG0 -VMName MyMachine -RunCommandName MyRunCommand -Location EastUS2EUAP -ScriptLocalPath "C:\MyScriptsDir\MyScript.ps1"
Skapa eller uppdatera körkommandot på en datorinstans med parametrarna Parameter och ProtectedParameter (offentliga och skyddade parametrar till skript)
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 när argument skickas till skriptet och körs så här:
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 .sh skriptet. För Namnlösa argument skickar du en tom sträng för att namnge indata. Namnlösa argument skickas till skriptet och körs så här:
myscript.sh publicParam1value publicParam2value secret1value secret2value
Ta bort RunCommand-resurs från datorn
Ta bort Den RunCommand-resurs som tidigare distribuerats på datorn. Om skriptkörningen fortfarande pågår avslutas körningen.
Remove-AzConnetedMachineRunCommand -ResourceGroupName "myRG" -MachineName "myMachine" -RunCommandName "RunCommandName"
Köra kommandoåtgärder
Kör kommandot på Azure Arc-aktiverade servrar stöder följande åtgärder:
Operation | beskrivning |
---|---|
Skapa | Åtgärden för att skapa ett körningskommando. Kör körningskommandot. |
Delete | Åtgärden för att ta bort ett körningskommando. Om den körs stoppar borttagningen även körningskommandot. |
Hämta | Åtgärden för att hämta ett körningskommando. |
List | Åtgärden för att hämta alla körningskommandon för en Azure Arc-aktiverad server. |
Uppdatera | Åtgärden för att uppdatera körningskommandot. Detta stoppar föregående körningskommando. |
Kommentar
Utdata- och felblobar skrivs över varje gång körningskommandoskriptet körs.
Exempelscenarier
Anta att du har en Azure Arc-aktiverad server med namnet "2012DatacenterServer1" i resursgruppen "ContosoRG" med prenumerations-ID "aaaaa-aaaa-aaaaa-aaaaa". Tänk dig ett scenario där du behöver ge fjärråtkomst till en slutpunkt för Windows Server 2012/R2-servrar. Åtkomst till utökade säkerhetsuppdateringar som aktiveras av Azure Arc kräver åtkomst till slutpunkten www.microsoft.com/pkiops/certs
. Du måste fjärrkonfiguration av en brandväggsregel som tillåter åtkomst till den här slutpunkten. Använd Kör kommando för att tillåta anslutning till den här slutpunkten.
Exempel 1: Slutpunktsåtkomst med Kör kommando
Börja med att skapa ett Kör kommandoskript för att ge slutpunktsåtkomst till www.microsoft.com/pkiops/certs
slutpunkten på din Arc-aktiverade målserver med put-åtgärden.
Om du vill ange skriptet direkt på rad använder du följande åtgärd:
PUT https://management.azure.com/subscriptions/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa/resourceGroups/ContosoRG/providers/Microsoft.HybridCompute/machines/2012DatacenterServer1/runCommands/EndpointAccessCommand?api-version=2023-10-03-preview
{
"location": "eastus2",
"properties": {
"source": {
"script": "New-NetFirewallRule -DisplayName $ruleName -Direction Outbound -Action Allow -RemoteAddress $endpoint -RemotePort $port -Protocol $protocol"
},
"parameters": [
{
"name": "ruleName",
"value": "Allow access to www.microsoft.com/pkiops/certs"
},
{
"name": "endpoint",
"value": "www.microsoft.com/pkiops/certs"
},
{
"name": "port",
"value": 433
},
{
"name": "protocol",
"value": "TCP"
}
],
"asyncExecution": false,
"runAsUser": "contoso-user1",
"runAsPassword": "Contoso123!"
"timeoutInSeconds": 3600,
"outputBlobUri": "https://mystorageaccount.blob.core.windows.net/myscriptoutputcontainer/MyScriptoutput.txt",
"errorBlobUri": "https://mystorageaccount.blob.core.windows.net/mycontainer/MyScriptError.txt"
}
}
Om du i stället vill länka till skriptfilen kan du använda alternativet Kör kommandoåtgärden ScriptURI. För detta förutsätts det att du har förberett en newnetfirewallrule.ps1
fil som innehåller det infogade skriptet och laddat upp skriptet till bloblagring.
PUT https://management.azure.com/subscriptions/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa/resourceGroups/ContosoRG/providers/Microsoft.HybridCompute/machines/2012DatacenterServer1/runCommands/EndpointAccessCommand?api-version=2023-10-03-preview
{
"location": "eastus2",
"properties": {
"source": {
"scriptUri": "https://mystorageaccount.blob.core.windows.net/myscriptoutputcontainer/newnetfirewallrule.ps1"
},
"parameters": [
{
"name": "ruleName",
"value": " Allow access to www.microsoft.com/pkiops/certs"
},
{
"name": "endpoint",
"value": "www.microsoft.com/pkiops/certs"
},
{
"name": "port",
"value": 433
},
{
"name": "protocol",
"value": "TCP"
}
],
"asyncExecution": false,
"runAsUser": "contoso-user1",
"runAsPassword": "Contoso123!"
"timeoutInSeconds": 3600,
"outputBlobUri": "https://mystorageaccount.blob.core.windows.net/myscriptoutputcontainer/MyScriptoutput.txt",
"errorBlobUri": "https://mystorageaccount.blob.core.windows.net/mycontainer/MyScriptError.txt"
}
}
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 är New-AzStorageBlobSASToken
SAS-URL-formatet: base blob URL + "?"
+ SAS-token från New-AzStorageBlobSASToken
.
Utdata- och felblobbar måste vara typen AppendBlob och deras SAS-URL:er måste tillhandahålla läs-, tilläggs-, skapa- och skrivåtkomst 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 från att använda New-AzStorageBlobSASToken
.
Exempel 2: Hämta körningskommandoinformation
För att kontrollera att du har etablerat körningskommandot korrekt använder du GET-kommandot för att hämta information om det etablerade körningskommandot:
GET https://management.azure.com/subscriptions/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa/resourceGroups/ContosoRG/providers/Microsoft.HybridCompute/machines/2012DatacenterServer1/runCommands/EndpointAccessCommand?api-version=2023-10-03-preview
Exempel 3: Uppdatera körningskommandot
Anta att du vill öppna åtkomsten till en ytterligare slutpunkt *.waconazure.com
för anslutning till Windows Admin Center. Du kan uppdatera det befintliga körkommandot med nya parametrar:
PATCH https://management.azure.com/subscriptions/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa/resourceGroups/ContosoRG/providers/Microsoft.HybridCompute/machines/2012DatacenterServer1/runCommands/EndpointAccessCommand?api-version=2023-10-03-preview
{
"location": "eastus2",
"properties": {
"source": {
"script": "New-NetFirewallRule -DisplayName $ruleName -Direction Outbound -Action Allow -RemoteAddress $endpoint -RemotePort $port -Protocol $protocol"
},
"parameters": [
{
"name": "ruleName",
"value": "Allow access to WAC endpoint"
},
{
"name": "endpoint",
"value": "*.waconazure.com"
},
{
"name": "port",
"value": 433
},
{
"name": "protocol",
"value": "TCP"
}
],
"asyncExecution": false,
"runAsUser": "contoso-user1",
"runAsPassword": "Contoso123!",
"timeoutInSeconds": 3600,
"outputBlobUri": "https://mystorageaccount.blob.core.windows.net/myscriptoutputcontainer/MyScriptoutput.txt",
"errorBlobUri": "https://mystorageaccount.blob.core.windows.net/mycontainer/MyScriptError.txt"
}
}
Exempel 4: Visa körkommandon i listan
Innan du tar bort körningskommandot för Endpoint Access kontrollerar du att det inte finns några andra körningskommandon för den Arc-aktiverade servern. Du kan använda listkommandot för att hämta alla körkommandon:
LIST https://management.azure.com/subscriptions/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa/resourceGroups/ContosoRG/providers/Microsoft.HybridCompute/machines/2012DatacenterServer1/runCommands/
Exempel 5: Ta bort ett körningskommando
Om du inte längre behöver tillägget Kör kommando kan du ta bort det med hjälp av följande kommando:
DELETE https://management.azure.com/subscriptions/ aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa/resourceGroups/ContosoRG/providers/Microsoft.HybridCompute/machines/2012DatacenterServer1/runCommands/EndpointAccessCommand?api-version=2023-10-03-preview
Inaktivera körningskommando
Om du vill inaktivera körkommandot på Azure Arc-aktiverade servrar öppnar du en administrativ kommandotolk och kör följande kommandon. Dessa kommandon använder de lokala agentkonfigurationsfunktionerna för connected machine-agenten i blocklistan Tillägg.
Windows
azcmagent config set extensions.blocklist "microsoft.cplat.core/runcommandhandlerwindows"
Linux
sudo azcmagent config set extensions.blocklist "microsoft.cplat.core/runcommandhandlerlinux"