Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro: ✔️ Windows virtuální počítače ✔️ Flexibilní škálovací sady
Funkce Spustit příkaz používá agenta virtuálního počítače ke spouštění skriptů na virtuálním počítači Azure s Windows. Tyto skripty můžete použít k obecné správě počítačů nebo aplikací. Můžou vám pomoct rychle diagnostikovat a opravovat problémy s přístupem k virtuálním počítačům a sítí a získat virtuální počítač zpět do dobrého stavu.
Aktualizovaný spravovaný příkaz Run Command používá ke spouštění skriptů stejný kanál agenta virtuálního počítače a poskytuje následující vylepšení oproti původnímu příkazovému nástroji zaměřenému na akce:
- Podpora aktualizovaného příkazu Run prostřednictvím šablony nasazení ARM
- Paralelní spouštění více skriptů
- Sekvenční spouštění skriptů
- Vypršení časového limitu skriptu zadaného uživatelem
- Podpora dlouho běžících skriptů (hodiny/dny)
- Zabezpečené předávání tajných kódů (parametry, hesla)
Důležité
Příkaz spravovaného spuštění je momentálně k dispozici v Azure CLI, PowerShellu a rozhraní API.
Požadavky
Podporované operační systémy Windows
| Verze operačního systému | x64 | ARM64 |
|---|---|---|
| Systém Windows 10 | Podporováno | Podporováno |
| Windows 11 | Podporováno | Podporováno |
| Windows Server 2016 | Podporováno | Podporováno |
| Windows Server 2016 Core | Podporováno | Podporováno |
| Windows Server 2019 | Podporováno | Podporováno |
| Windows Server 2019 Core | Podporováno | Podporováno |
| Windows Server 2022 | Podporováno | Podporováno |
| Windows Server 2022 Core | Podporováno | Podporováno |
| Windows Server 2022 Azure Edition | Podporováno | Podporováno |
| Windows Server 2025 | Podporováno | Podporováno |
| Windows Server 2025 Core | Podporováno | Podporováno |
| Windows Server 2025 Azure Edition | Podporováno | Podporováno |
Dostupné příkazy
| CommandID | Popis | Další informace |
|---|---|---|
| RunPowerShellScript | Spustí skript PowerShellu. | |
| DisableNLA | Zakáže ověřování na úrovni sítě (NLA). Po dokončení skriptu je nutné virtuální počítač restartovat, aby se změna projevila. Samotný skript nerestartuje virtuální počítač. | readme |
| DisableWindowsUpdate | Zakažte automatické aktualizace prostřednictvím služby Windows Update. | readme |
| EnableAdminAccount | Zkontroluje, jestli je účet místního správce zakázaný a pokud ano. | readme |
| EnableEMS | Povolte službu EMS (Emergency Management Services), která umožňuje připojení sériové konzoly ve scénářích řešení potíží. | readme |
| EnableRemotePS | Povolení vzdáleného PowerShellu | readme |
| EnableWindowsUpdate | Povolte automatické aktualizace prostřednictvím služby Windows Update. | readme |
| IMDSCertCheck | Zkontroluje stav IMDS a pak analyzuje aktuálně nainstalované certifikáty, na které služba IMDS závisí. Pokud chybí, zobrazí se další podrobnosti a kroky pro zmírnění rizik. | readme |
| IpConfig | Zobrazuje podrobné informace o IP adrese, masce podsítě a výchozí bráně pro každý adaptér svázaný s protokolem TCP/IP. Informace o použití najdete v tématu Spouštění skriptů. | readme |
| RDPSettings | Zkontroluje nastavení registru a nastavení zásad domény. Navrhuje akce zásad, pokud je počítač součástí domény nebo upraví nastavení na výchozí hodnoty. | readme |
| ResetRDPCert | Odebere certifikát SSL svázaný s naslouchacím procesem RDP a obnoví zabezpečení naslouchacího procesu RDP jako výchozí. Tento skript použijte, pokud dojde k problémům s certifikátem. | readme |
| SetRDPPort | Nastaví výchozí nebo uživatelem zadané číslo portu pro připojení ke vzdálené ploše. Povolí pravidlo brány firewall pro příchozí přístup k portu. | readme |
| WindowsActivationValidation | Zkontroluje aktuální stav licence Windows (zda je aktivovaná nebo ne) a vygeneruje upozornění, pokud počítač není správně aktivován. | readme |
| WindowsGhostedNicValidationScript | Tento skript vyhledá v registru Windows síťové adaptéry na sběrnicích PCI a VMBUS, porovná je s aktuálně aktivními síťovými adaptéry a identifikuje stínové síťové karty. Užitečné při řešení potíží se sítí nebo čištění starých síťových adaptérů. | readme |
| WindowsUpgradeAssessmentValidation | Tento skript je navržený tak, aby posoudil připravenost počítače s Windows (klienta nebo serveru) na místní upgrade operačního systému s zvláštními aspekty pro virtuální počítače Azure. Vyhodnocuje verzi operačního systému, podporované cesty upgradu, systémové místo na disku a funkce zabezpečení Azure, jako je důvěryhodné spuštění, zabezpečené spouštění a virtuální počítač vTPM. | readme |
Poznámka:
Id výše uvedených příkazů se vztahují na spravované příkazy spuštění pro virtuální počítače s Windows. Pomocí příkazu "Get-AzVMRunCommandDocument -Location {RegionName}" můžete zobrazit seznam všech ID příkazů.
Omezení přístupu k funkci Spustit příkaz
Výpis příkazů spuštění nebo zobrazení podrobností příkazu vyžaduje Microsoft.Compute/locations/runCommands/read oprávnění na úrovni předplatného. Vestavěná role Čtenář a vyšší úrovně mají toto oprávnění.
Spuštění příkazu vyžaduje Microsoft.Compute/virtualMachines/runCommand/write oprávnění. Role Přispěvatel virtuálních počítačů a role na vyšší úrovni mají toto oprávnění.
Můžete použít některou z předdefinovaných rolí nebo vytvořit vlastní roli pro použití příkazu Spustit.
Použití příkazů Spustit
Spuštění skriptu s virtuálním počítačem
Tento příkaz doručí skript do virtuálního počítače, spustí ho a vrátí zachycený výstup.
Set-AzVMRunCommand -ResourceGroupName "myRG" -VMName "myVM" -Location "EastUS" -RunCommandName "RunCommandName" –SourceScript "echo Hello World!"
Spuštění skriptu na virtuálním počítači pomocí parametru SourceScriptUri
OutputBlobUri a ErrorBlobUri jsou volitelné parametry.
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>”
Spuštění dlouhotrvajícího příkazu na virtuálním počítači
Doba provádění by měla běžet déle než výchozí časový limit 90 minut. Měl by běžet po dobu 100 minut (viz 6,0000 sekund - parametr -TimeoutInSecond), pokud se očekává, že skript poběží tak dlouho. Po 100 minutách by se mělo spuštění skriptu zastavit.
Set-AzVMRunCommand -ResourceGroupName MyRG -VMName MyVM -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceScriptUri <SourceScriptUri> -AsyncExecution -TimeoutInSecond 6000
Výpis všech nasazených prostředků RunCommand na virtuálním počítači
Tento příkaz vrátí úplný seznam dříve nasazených příkazů Spustit spolu s jejich vlastnostmi.
Get-AzVMRunCommand -ResourceGroupName "myRG" -VMName "myVM"
Získání stavu spuštění a výsledků
Tento příkaz načte aktuální průběh provádění, včetně nejnovějšího výstupu, počátečního a koncového času, ukončovacího kódu a stavu terminálu spuštění.
Get-AzVMRunCommand -ResourceGroupName "myRG" -VMName "myVM" -RunCommandName "RunCommandName" -Expand InstanceView
Vytvoření nebo aktualizace příkazu ke spuštění na virtuálním počítači pomocí URI SourceScript (SAS URL objektu blob úložiště)
Vytvořte nebo aktualizujte příkaz Spustit na virtuálním počítači s Windows pomocí adresy URL SAS objektu blob úložiště, který obsahuje skript PowerShellu.
SourceScriptUri může to být úplná adresa URL SAS objektu blob úložiště nebo veřejná adresa URL.
Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVMEE -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceScriptUri <SourceScriptUri>
Poznámka:
Adresa URL SAS musí poskytovat přístup pro čtení k objektu blob. Pro adresu URL SAS se navrhuje doba vypršení platnosti 24 hodin. Adresy URL SAS se dají vygenerovat na webu Azure Portal pomocí možností objektu blob nebo tokenu SAS pomocí New-AzStorageBlobSASToken. Pokud generujete token SAS pomocí New-AzStorageBlobSASToken, vaše adresa URL SAS je "základní adresa URL blob" + "?" + "token SAS generovaný pomocí New-AzStorageBlobSASToken"
Získání zobrazení instance příkazu Spustit pro virtuální počítač po vytvoření nebo aktualizaci příkazu Spustit
Získejte příkaz Spustit pro virtuální počítač se zobrazením instance. Zobrazení instance obsahuje stav spuštění příkazu (úspěšné, neúspěšné atd.), ukončovací kód, standardní výstup a standardní chybu vygenerovanou spuštěním skriptu pomocí příkazu Spustit. Nenulový exitCode indikuje neúspěšné spuštění.
$x = Get-AzVMRunCommand -ResourceGroupName MyRG -VMName MyVM -RunCommandName MyRunCommand -Expand InstanceView
$x.InstanceView
Příklad výstupu
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: Stav skriptu příkazu pro spuštění u uživatele. V tomto stavu zjistíte, jestli byl váš skript úspěšný nebo ne.
ProvisioningState: Stav obecného zajištění rozšíření od začátku do konce (zda platforma rozšíření dokázala spustit skript příkazu Run nebo ne).
Vytvoření nebo aktualizace příkazu Spustit na virtuálním počítači pomocí ScriptLocalPath (místní soubor skriptu)
Vytvořte nebo aktualizujte příkaz Spustit na virtuálním počítači pomocí souboru místního skriptu, který je na klientském počítači, kde se spouští rutina.
Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVMEE -RunCommandName MyRunCommand -Location EastUS2EUAP -ScriptLocalPath "C:\MyScriptsDir\MyScript.ps1"
Vytvoření nebo aktualizace příkazu Spustit na virtuálním počítači pomocí SourceScriptu (text skriptu)
Vytvořte nebo aktualizujte příkaz Spustit na virtuálním počítači, který předává obsah skriptu přímo do parametru -SourceScript. Slouží ; k oddělení více příkazů.
Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVML -RunCommandName MyRunCommand2 -Location EastUS2EUAP -SourceScript "id; echo HelloWorld"
Vytvoření nebo aktualizace příkazu Spustit na virtuálním počítači pomocí SourceCommandId
Vytvořte nebo aktualizujte příkaz Spustit na virtuálním počítači pomocí předexistujícího commandId. Dostupné ID příkazů je možné načíst pomocí příkazu Get-AzVMRunCommandDocument.
Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVMEE -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceCommandId DisableWindowsUpdate
Vytvoření nebo aktualizace příkazu Run Command na virtuálním počítači pomocí OutputBlobUri a ErrorBlobUri pro streamování standardního výstupu a standardních chybových zpráv do výstupních a chybových připojovacích blobů.
Vytvořte nebo aktualizujte příkaz Spustit na virtuálním počítači a streamovat standardní výstup a standardní chybové zprávy pro výstup a chybu Doplňovací objekty blob.
Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVML -RunCommandName MyRunCommand3 -Location EastUS2EUAP -ScriptLocalPath "C:\MyScriptsDir\MyScript.ps1" -OutputBlobUri <OutPutBlobUrI> -ErrorBlobUri "ErrorBlobUri
Poznámka:
Výstupní a chybové objekty blob musí být typem AppendBlob a jejich adresy URL SAS musí poskytovat přístup ke čtení, připojení, vytvoření, zápisu do objektu blob. Pro adresu URL SAS se navrhuje doba vypršení platnosti 24 hodin. Pokud objekt úložiště výstupu nebo chyby neexistuje, vytvoří se objekt úložiště typu AppendBlob. Adresy URL SAS je možné vygenerovat na webu Azure Portal pomocí možností objektu blob nebo tokenu SAS z použití New-AzStorageBlobSASToken.
Vytvoření nebo aktualizace příkazu Spustit na virtuálním počítači jako jiný uživatel pomocí parametrů RunAsUser a RunAsPassword
Vytvořte nebo aktualizujte příkaz Spustit na virtuálním počítači jako jiný uživatel používající RunAsUser a RunAsPassword parametry. Aby služba RunAs fungovala správně, obraťte se na správce virtuálního počítače a ujistěte se, že je na virtuálním počítači přidaný uživatel, má uživatel přístup k prostředkům, ke které přistupuje příkaz Spustit (adresáře, soubory, síť atd.) a v případě virtuálního počítače s Windows je na virtuálním počítači spuštěná služba Sekundární přihlášení.
Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVMEE -RunCommandName MyRunCommand -Location EastUS2EUAP -ScriptLocalPath "C:\MyScriptsDir\MyScript.ps1" -RunAsUser myusername -RunAsPassword mypassword
Vytvořte nebo aktualizujte příkaz Run Command na prostředku pro škálovací sady virtuálních počítačů pomocí SourceScriptUri (SAS URL objektu blob úložiště)
Vytvořte nebo aktualizujte příkazová operace na prostředku škálovací sady virtuálních počítačů na Windows pomocí adresy URL SAS úložného blobu, který obsahuje skript PowerShell.
Set-AzVmssVMRunCommand -ResourceGroupName MyRG0 -VMScaleSetName MyVMSS -InstanceId 0 -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceScriptUri <SourceScriptUri>
Poznámka:
Adresa URL SAS musí poskytovat přístup pro čtení k objektu blob. Pro adresu URL SAS se navrhuje doba vypršení platnosti 24 hodin. Adresy URL SAS se dají vygenerovat na webu Azure Portal pomocí možností objektu blob nebo tokenu SAS pomocí New-AzStorageBlobSASToken. Pokud generujete SAS token pomocí New-AzStorageBlobSASToken, formát URL pro SAS je: základní adresa URL objektu blob + "?" + SAS token z New-AzStorageBlobSASToken.
Vytvoření nebo aktualizace příkazu ke spuštění na virtuálním serveru pomocí parametrů a chráněných parametrů (veřejné a chráněné parametry pro skriptování)
Pomocí protectedParameter předejte jakékoli citlivé vstupy do skriptu, jako jsou hesla, klíče atd.
$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: Parametry a protectedParameters se předávají skriptu jako argumenty a spustí se takto:
myscript.ps1 -publicParam1 publicParam1value -publicParam2 publicParam2value -secret1 secret1value -secret2 secret2valueLinux: Pojmenované parametry a jeho hodnoty jsou nastaveny na konfiguraci prostředí, která by měla být přístupná v rámci skriptu .sh. Pokud máte argumenty bez názvu, předejte prázdný řetězec jako vstupní název. Argumenty bez názvů se předávají skriptu a spustí se takto:
myscript.sh publicParam1value publicParam2value secret1value secret2value
Odstranění prostředku RunCommand z virtuálního počítače
Odeberte prostředek RunCommand, který byl dříve nasazen na virtuálním počítači. Pokud provádění skriptu stále probíhá, provádění se ukončí.
Remove-AzVMRunCommand -ResourceGroupName "myRG" -VMName "myVM" -RunCommandName "RunCommandName"
Spouštět více příkazů spuštění postupně
Pokud ve výchozím nastavení nasadíte více prostředků RunCommand pomocí šablony nasazení, spustí se na virtuálním počítači současně. Pokud máte závislost na skriptech a upřednostňovaném pořadí provádění, můžete tuto vlastnost použít dependsOn k jejich postupnému spuštění.
V tomto příkladu secondRunCommand se spustí po 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":"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
}
}
]
}
Další kroky
Další informace o dalších způsobech vzdáleného spouštění skriptů a příkazů na virtuálním počítači najdete v tématu Spouštění skriptů na virtuálním počítači s Windows.