Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: ✔️ Maszyny wirtualne z systemem Windows — elastyczne zestawy skalowania ✔️
Funkcja Uruchom polecenie używa agenta maszyny wirtualnej do wykonywania skryptów na maszynie wirtualnej platformy Azure z systemem Windows. Za pomocą tych skryptów można ogólnie zarządzać maszynami lub aplikacjami. Mogą one ułatwić szybkie diagnozowanie i korygowanie problemów z dostępem do maszyny wirtualnej i siecią oraz powrót maszyny wirtualnej do dobrego stanu.
Zaktualizowane zarządzane polecenie uruchamiania używa tego samego kanału agenta maszyny wirtualnej do wykonywania skryptów i zapewnia następujące poprawki w porównaniu do oryginalnego polecenia uruchamiania zorientowanego na akcję:
- Obsługa zaktualizowanej funkcji "Run Command" poprzez szablon wdrożeniowy ARM
- Równoległe wykonywanie wielu skryptów
- Sekwencyjne wykonywanie skryptów
- Przekroczono limit czasu skryptu określonego przez użytkownika
- Obsługa długotrwałych skryptów (wykonywanych przez godziny/dni)
- Przekazywanie tajnych informacji (parametrów, haseł) w bezpieczny sposób
Ważne
Managed Run Command jest obecnie dostępne w Azure CLI, PowerShell i API.
Wymagania wstępne
Obsługiwane systemy operacyjne Windows
| Wersja systemu operacyjnego | x64 | ARM64 |
|---|---|---|
| Windows 10 | Obsługiwane | Obsługiwane |
| Windows 11 | Obsługiwane | Obsługiwane |
| Windows Server 2016 | Obsługiwane | Obsługiwane |
| Windows Server 2016 Core | Obsługiwane | Obsługiwane |
| Windows Server 2019 | Obsługiwane | Obsługiwane |
| Windows Server 2019 Core | Obsługiwane | Obsługiwane |
| Windows Server 2022 | Obsługiwane | Obsługiwane |
| Windows Server 2022 Core | Obsługiwane | Obsługiwane |
| Windows Server 2022 Azure Edition | Obsługiwane | Obsługiwane |
| Windows Server 2025 | Obsługiwane | Obsługiwane |
| Windows Server 2025 Core | Obsługiwane | Obsługiwane |
| Windows Server 2025 Azure Edition | Obsługiwane | Obsługiwane |
Dostępne polecenia
| Identyfikator polecenia | Opis | Więcej informacji |
|---|---|---|
| RunPowerShellScript | Uruchamia skrypt programu PowerShell | |
| DisableNLA | Wyłącza uwierzytelnianie na poziomie sieci (NLA). Musisz ponownie uruchomić maszynę wirtualną po zakończeniu działania skryptu, aby zmiany zaczęły obowiązywać. Sam skrypt nie uruchamia ponownie maszyny wirtualnej. | readme |
| DisableWindowsUpdate | Wyłącz aktualizacje automatyczne za pośrednictwem usługi Windows Update. | readme |
| EnableAdminAccount | Sprawdza, czy konto administratora lokalnego jest wyłączone, a jeśli tak jest włączone. | readme |
| EnableEMS | Aktywuj usługi zarządzania awaryjnego (EMS) w celu umożliwienia połączenia konsoli szeregowej w scenariuszach rozwiązywania problemów. | readme |
| EnableRemotePS | Włącz zdalny program PowerShell. | readme |
| EnableWindowsUpdate | Włącz aktualizacje automatyczne za pośrednictwem usługi Windows Update. | readme |
| IMDSCertCheck | Sprawdza kondycję usługi IMDS, a następnie analizuje obecnie zainstalowane certyfikaty, od których zależy usługa IMDS. Jeśli brakuje, zostaną wyświetlone dodatkowe szczegóły i kroki ograniczania ryzyka. | readme |
| Konfiguracja adresu IP | Przedstawia szczegółowe informacje dotyczące adresu IP, maski podsieci i bramy domyślnej dla każdego adaptera związanego z TCP/IP. Aby uzyskać informacje o użyciu, zobacz Uruchamianie skryptów | readme |
| RDPSettings | Sprawdza ustawienia rejestru i ustawienia zasad domeny. Sugeruje akcje zasad, jeśli maszyna jest częścią domeny lub modyfikuje ustawienia na wartości domyślne. | readme |
| ResetRDPCert | Usuwa certyfikat SSL powiązany z odbiornikiem RDP i przywraca domyślne zabezpieczenia odbiornika RDP. Użyj tego skryptu, jeśli wystąpią problemy z certyfikatem. | readme |
| SetRDPPort | Ustawia domyślny lub określony przez użytkownika numer portu dla połączeń pulpitu zdalnego. Włącza regułę zapory dla dostępu przychodzącego do portu. | readme |
| WindowsActivationValidation | Sprawdza bieżący stan licencji systemu Windows (aktywowany lub nie) i alert jest generowany, jeśli maszyna nie jest prawidłowo aktywowana. | readme |
| WindowsGhostedNicValidationScript | Ten skrypt skanuje rejestr systemu Windows, aby znaleźć karty sieciowe na magistralach PCI i VMBUS, porównuje je z aktualnie aktywnymi kartami sieciowymi i identyfikuje ukryte karty sieciowe. Przydatne do rozwiązywania problemów z siecią lub czyszczenia starych kart sieciowych. | readme |
| WindowsUpgradeAssessmentValidation | Ten skrypt został zaprojektowany pod kątem oceny gotowości maszyny z systemem Windows (klienta lub serwera) na potrzeby uaktualnienia systemu operacyjnego w miejscu, ze specjalnymi zagadnieniami dotyczącymi usługi Azure Virtual Machines. Ocenia wersję systemu operacyjnego, obsługiwane ścieżki uaktualniania, miejsce na dysku systemowym i funkcje zabezpieczeń platformy Azure, takie jak zaufane uruchamianie, bezpieczny rozruch i vTPM. | readme |
Uwaga
Powyższe identyfikatory poleceń mają zastosowanie do zarządzanych poleceń uruchamiania dla maszyn wirtualnych z systemem Windows. Można wyświetlić wszystkie identyfikatory poleceń przy użyciu polecenia "Get-AzVMRunCommandDocument -Location {RegionName}".
Ograniczanie dostępu do uruchamiania polecenia
Wyświetlenie listy poleceń lub szczegółów polecenia wymaga uprawnienia Microsoft.Compute/locations/runCommands/read na poziomie subskrypcji.
Wbudowana rola Czytelnik oraz role o wyższym poziomie mają to uprawnienie.
Uruchomienie polecenia wymaga Microsoft.Compute/virtualMachines/runCommand/write uprawnienia. Rola Współautor maszyny wirtualnej i wyższe poziomy mają to uprawnienie.
Możesz użyć jednej z wbudowanych ról lub utworzyć rolę niestandardową, aby użyć polecenia Uruchom.
Korzystanie z poleceń uruchamiania
Wykonywanie skryptu przy użyciu maszyny wirtualnej
To polecenie dostarcza skrypt do maszyny wirtualnej, wykonuje go i zwraca przechwycone dane wyjściowe.
Set-AzVMRunCommand -ResourceGroupName "myRG" -VMName "myVM" -Location "EastUS" -RunCommandName "RunCommandName" –SourceScript "echo Hello World!"
Wykonywanie skryptu na maszynie wirtualnej przy użyciu parametru SourceScriptUri
OutputBlobUri i ErrorBlobUri są parametrami opcjonalnymi.
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>”
Wykonywanie długotrwałego polecenia uruchamiania na maszynie wirtualnej
Czas wykonywania powinien być dłuższy niż domyślny limit czasu wynoszący 90 minut. On powinien działać przez 100 minut (należy odwołać się do 6 000 sekund dla parametru -TimeoutInSecond), zakładając, że skrypt powinien działać tak długo. Po 100 minutach wykonanie skryptu powinno zostać zatrzymane.
Set-AzVMRunCommand -ResourceGroupName MyRG -VMName MyVM -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceScriptUri <SourceScriptUri> -AsyncExecution -TimeoutInSecond 6000
Wyświetlanie listy wszystkich wdrożonych zasobów RunCommand na maszynie wirtualnej
To polecenie zwraca pełną listę wcześniej wdrożonych poleceń uruchamiania wraz z ich właściwościami.
Get-AzVMRunCommand -ResourceGroupName "myRG" -VMName "myVM"
Uzyskiwanie stanu wykonania i wyników
To polecenie pobiera aktualny postęp wykonywania, w tym najnowsze dane wyjściowe, czas rozpoczęcia i zakończenia, kod wyjścia oraz końcowy stan procesu.
Get-AzVMRunCommand -ResourceGroupName "myRG" -VMName "myVM" -RunCommandName "RunCommandName" -Expand InstanceView
Tworzenie lub aktualizowanie polecenia uruchamiania na maszynie wirtualnej przy użyciu identyfikatora SourceScriptUri (adres URL sygnatury dostępu współdzielonego obiektu blob magazynu)
Utwórz lub zaktualizuj polecenie Run na maszynie wirtualnej z systemem Windows przy użyciu adresu URL SAS obiektu blob magazynu zawierającego skrypt PowerShell.
SourceScriptUri może to być pełny adres URL sygnatury dostępu współdzielonego lub publiczny adres URL obiektu blob magazynu.
Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVMEE -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceScriptUri <SourceScriptUri>
Uwaga
Sygnatura dostępu współdzielonego (SAS) musi zapewnić możliwość odczytu obiektu blob. Zalecany czas wygaśnięcia dla SAS URL to 24 godziny. Adresy URL sygnatur dostępu współdzielonego można wygenerować w portalu Azure, korzystając z opcji obiektu blob lub tokenu SAS przy użyciu polecenia New-AzStorageBlobSASToken. W przypadku generowania tokenu SAS przy użyciu New-AzStorageBlobSASToken, twój adres URL SAS = "podstawowy adres URL obiektu blob" + "?" + "token SAS z New-AzStorageBlobSASToken"
Pobieranie widoku instancji polecenia uruchomienia dla maszyny wirtualnej po utworzeniu lub zaktualizowaniu polecenia uruchomienia
Pobierz polecenie Run Command dla maszyny wirtualnej z widokiem instancji. Widok wystąpienia zawiera stan wykonywania polecenia uruchomienia (powodzenie, niepowodzenie itp.), kod zakończenia, standardowe dane wyjściowe i standardowy błąd wygenerowany przez wykonanie skryptu przy użyciu polecenia Uruchom. Niezerowy ExitCode wskazuje na nieudane wykonanie.
$x = Get-AzVMRunCommand -ResourceGroupName MyRG -VMName MyVM -RunCommandName MyRunCommand -Expand InstanceView
$x.InstanceView
Przykładowe dane wyjściowe
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 skryptu Run Command użytkownika. Zapoznaj się z tym stanem, aby dowiedzieć się, czy skrypt zakończył się pomyślnie, czy nie.
ProvisioningState: Status ogólnego udostępniania rozszerzeń od początku do końca (czy platforma rozszerzeń była w stanie uruchomić skrypt Run Command).
Tworzenie lub aktualizowanie polecenia uruchamiania na maszynie wirtualnej przy użyciu skryptu ScriptLocalPath (plik skryptu lokalnego)
Utwórz lub zaktualizuj polecenie Uruchom na maszynie wirtualnej przy użyciu lokalnego pliku skryptu, który znajduje się na maszynie klienckiej, na której jest wykonywane polecenie cmdlet.
Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVMEE -RunCommandName MyRunCommand -Location EastUS2EUAP -ScriptLocalPath "C:\MyScriptsDir\MyScript.ps1"
Tworzenie lub aktualizowanie polecenia uruchamiania na maszynie wirtualnej przy użyciu skryptu SourceScript (tekst skryptu)
Utwórz lub zaktualizuj polecenie Uruchom na maszynie wirtualnej przekazując zawartość skryptu bezpośrednio do parametru -SourceScript. Użyj ; do oddzielania wielu poleceń
Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVML -RunCommandName MyRunCommand2 -Location EastUS2EUAP -SourceScript "id; echo HelloWorld"
Tworzenie lub aktualizowanie polecenia uruchamiania na maszynie wirtualnej przy użyciu identyfikatora SourceCommandId
Utwórz lub zaktualizuj polecenie Uruchom na maszynie wirtualnej przy użyciu istniejącego identyfikatora commandId. Dostępne identyfikatory poleceń można pobrać przy użyciu polecenia Get-AzVMRunCommandDocument.
Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVMEE -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceCommandId DisableWindowsUpdate
Tworzenie lub aktualizowanie polecenia uruchamiania na maszynie wirtualnej przy użyciu parametru OutputBlobUri, ErrorBlobUri w celu przesyłania strumieniowego standardowych danych wyjściowych i standardowych komunikatów o błędach do danych wyjściowych oraz uzupełnialnych obiektów blob błędów
Utwórz lub zaktualizuj polecenie uruchamiania na maszynie wirtualnej i przesyłaj strumieniowo standardowe dane wyjściowe oraz standardowe komunikaty o błędach do obiektów typu Append blob.
Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVML -RunCommandName MyRunCommand3 -Location EastUS2EUAP -ScriptLocalPath "C:\MyScriptsDir\MyScript.ps1" -OutputBlobUri <OutPutBlobUrI> -ErrorBlobUri "ErrorBlobUri
Uwaga
Obiekty blob danych wyjściowych i błędów muszą być typu AppendBlob, a ich adresy URL sygnatury dostępu współdzielonego (SAS) muszą zapewniać dostęp do odczytu, dołączania, tworzenia i zapisu do obiektu blob. Zalecany czas wygaśnięcia dla SAS URL to 24 godziny. Jeśli obiekt blob danych wyjściowych lub blob błędu nie istnieje, zostanie utworzony obiekt blob typu AppendBlob. Adresy URL sygnatury dostępu współdzielonego można wygenerować w witrynie Azure Portal przy użyciu opcji obiektu blob lub tokenu SAS przy użyciu polecenia New-AzStorageBlobSASToken.
Tworzenie lub aktualizowanie polecenia uruchamiania na maszynie wirtualnej jako inny użytkownik przy użyciu parametrów RunAsUser i RunAsPassword
Utwórz lub zaktualizuj polecenie Uruchomienia na maszynie wirtualnej jako inny użytkownik, przy użyciu parametrów RunAsUser i RunAsPassword. Aby elementy RunA działały prawidłowo, skontaktuj się z administratorem maszyny wirtualnej i upewnij się, że użytkownik jest dodawany do maszyny wirtualnej, użytkownik ma dostęp do zasobów, do których uzyskuje dostęp za pomocą polecenia Uruchom (katalogi, pliki, sieć itp.), a w przypadku maszyny wirtualnej z systemem Windows usługa "Logowanie pomocnicze" jest uruchomiona na maszynie wirtualnej.
Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVMEE -RunCommandName MyRunCommand -Location EastUS2EUAP -ScriptLocalPath "C:\MyScriptsDir\MyScript.ps1" -RunAsUser myusername -RunAsPassword mypassword
Tworzenie lub aktualizacja polecenia wykonania w zasobie skalowalnych zestawów maszyn wirtualnych przy użyciu SourceScriptUri (adres URL SAS obiektu blob magazynu)
Utwórz lub zaktualizuj polecenie Wykonaj w zasobie zestawów skalowania maszyn wirtualnych z systemem Windows, używając adresu URL SAS obiektu blob magazynu, który zawiera skrypt PowerShell.
Set-AzVmssVMRunCommand -ResourceGroupName MyRG0 -VMScaleSetName MyVMSS -InstanceId 0 -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceScriptUri <SourceScriptUri>
Uwaga
Sygnatura dostępu współdzielonego (SAS) musi zapewnić możliwość odczytu obiektu blob. Sugerowany czas wygaśnięcia dla adresu URL sygnatury dostępu współdzielonego (SAS URL) to 24 godziny. Adresy URL sygnatur dostępu współdzielonego można wygenerować w witrynie Azure Portal przy użyciu opcji obiektu blob lub tokenu SAS przy użyciu polecenia New-AzStorageBlobSASToken. pl-PL: W przypadku generowania tokenu SAS przy użyciu New-AzStorageBlobSASToken, format adresu URL sygnatury dostępu współdzielonego to: podstawowy adres URL obiektu blob + "?" + token SAS z New-AzStorageBlobSASToken.
Tworzenie lub aktualizowanie polecenia uruchomienia w wystąpieniu maszyny wirtualnej przy użyciu parametru oraz chronionego parametru (publiczne i chronione parametry do skryptu)
Użyj parametru ProtectedParameter, aby przekazać wszelkie poufne dane wejściowe do skryptu, takiego jak hasła, klucze itp.
$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 i chronione parametry są przekazywane do skryptu jako argumenty i uruchamiane w następujący sposób —
myscript.ps1 -publicParam1 publicParam1value -publicParam2 publicParam2value -secret1 secret1value -secret2 secret2valueLinux: Nazwane parametry i ich wartości są ustawione na konfigurację środowiska, która powinna być dostępna w skrypcie .sh. W przypadku argumentów bez nazw przekaż pusty ciąg jako nazwę wejściową. Argumenty bez nazw są przekazywane do skryptu i uruchamiane w następujący sposób :
myscript.sh publicParam1value publicParam2value secret1value secret2value
Usuń zasób RunCommand z maszyny wirtualnej
Usuń zasób RunCommand wcześniej wdrożony na maszynie wirtualnej. Jeśli wykonywanie skryptu jest nadal w toku, wykonanie zostanie zakończone.
Remove-AzVMRunCommand -ResourceGroupName "myRG" -VMName "myVM" -RunCommandName "RunCommandName"
Wykonaj sekwencyjnie wiele poleceń uruchamiania
Domyślnie w przypadku wdrożenia wielu zasobów RunCommand przy użyciu szablonu wdrożenia zostaną one wykonane jednocześnie na maszynie wirtualnej. Jeśli masz zależność od skryptów i preferowanej kolejności wykonywania, możesz użyć dependsOn właściwości , aby były uruchamiane sekwencyjnie.
W tym przykładzie polecenie secondRunCommand zostanie wykonane po polecenie 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
}
}
]
}
Następne kroki
Aby dowiedzieć się więcej o innych sposobach zdalnego uruchamiania skryptów i poleceń na maszynie wirtualnej, zobacz Uruchamianie skryptów na maszynie wirtualnej z systemem Windows.