Udostępnij za pośrednictwem


Uruchamianie skryptów na maszynie wirtualnej z systemem Windows przy użyciu akcji funkcji Uruchamianie poleceń

Funkcja Uruchom polecenie używa agenta maszyny wirtualnej do uruchamiania skryptów programu PowerShell na maszynie wirtualnej z systemem Windows platformy Azure. 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.

Świadczenia

Dostęp do maszyn wirtualnych można uzyskać na wiele sposobów. Uruchom polecenie umożliwia zdalne uruchamianie skryptów na maszynach wirtualnych przy użyciu agenta maszyny wirtualnej. Użyj polecenia Uruchom za pośrednictwem witryny Azure Portal, interfejsu API REST lub programu PowerShell dla maszyn wirtualnych z systemem Windows.

Ta funkcja jest przydatna we wszystkich scenariuszach, w których chcesz uruchomić skrypt na maszynie wirtualnej. Jest to jeden z jedynych sposobów rozwiązywania problemów i korygowania maszyny wirtualnej, która nie ma otwartego portu RDP lub SSH z powodu nieprawidłowej konfiguracji sieci lub użytkownika administracyjnego.

Wymagania wstępne

Obsługiwana wersja systemu operacyjnego Windows

System operacyjny Windows x64
Windows 10 Obsługiwane
Windows 11 Obsługiwane
Windows Server 2008 SP2 Obsługiwane
Windows Server 2008 R2 Obsługiwane
Windows Server 2012 Obsługiwane
Windows Server 2012 R2 Obsługiwane
Windows Server 2016 Obsługiwane
Windows Server 2016 Core Obsługiwane
Windows Server 2019 Obsługiwane
Windows Server 2019 Core Obsługiwane
Windows Server 2022 Obsługiwane
Windows Server 2022 Core Obsługiwane

Ograniczenia

Podczas używania funkcji Uruchom polecenie obowiązują następujące ograniczenia:

  • Dane wyjściowe są ograniczone do ostatnich 4096 bajtów.
  • Minimalny czas uruchamiania skryptu wynosi około 20 sekund.
  • Skrypty są uruchamiane jako konto System w systemie Windows.
  • Można uruchomić jeden skrypt naraz.
  • Skrypty monitujące o informacje (tryb interaktywny) nie są obsługiwane.
  • Nie można anulować uruchomionego skryptu.
  • Maksymalny czas działania skryptu wynosi 90 minut. Po tym czasie występuje przekroczenie limitu czasu.
  • Do zwrócenia wyników skryptu wymagana jest łączność wychodząca z maszyny wirtualnej.
  • Nie zaleca się uruchamiania skryptu, który spowoduje zatrzymanie lub zaktualizowanie agenta maszyny wirtualnej. Może to pozostawić rozszerzenie w stanie przejścia, co spowoduje przekroczenie limitu czasu.

Uwaga

Aby działać poprawnie, uruchom polecenie wymaga łączności (port 443) z publicznymi adresami IP platformy Azure. Jeśli rozszerzenie nie ma dostępu do tych punktów końcowych, skrypty mogą działać pomyślnie, ale nie zwracają wyników. Jeśli blokujesz ruch na maszynie wirtualnej, możesz użyć tagów usługi, aby zezwolić na ruch do publicznych adresów IP platformy Azure przy użyciu tagu AzureCloud .

Funkcja Uruchom polecenie nie działa, jeśli stan agenta maszyny wirtualnej nie jest GOTOWY. Sprawdź stan agenta we właściwościach maszyny wirtualnej w witrynie Azure Portal.

Dostępne polecenia

W tej tabeli przedstawiono listę poleceń dostępnych dla maszyn wirtualnych z systemem Windows. Możesz użyć polecenia RunPowerShellScript , aby uruchomić dowolny skrypt niestandardowy. Jeśli używasz interfejsu wiersza polecenia platformy Azure lub programu PowerShell do uruchomienia polecenia, wartość podana dla parametru --command-id or -CommandId musi być jedną z następujących wartości. Po określeniu wartości, która nie jest dostępnym poleceniem, zostanie wyświetlony następujący błąd:

The entity was not found in this Azure location

Nazwa/nazwisko Opis
RunPowerShellScript Uruchamia skrypt programu PowerShell
DisableNLA Wyłączanie uwierzytelniania na poziomie sieci
DisableWindowsUpdate Wyłączanie aktualizacji automatycznych usługi Windows Update
EnableAdminAccount Sprawdza, czy konto administratora lokalnego jest wyłączone, a jeśli tak jest włączone.
EnableEMS Włączanie pakietu EMS
EnableRemotePS Konfiguruje maszynę w celu włączenia zdalnego programu PowerShell.
EnableWindowsUpdate Włączanie aktualizacji automatycznych usługi Windows Update
Konfiguracja adresu IP Przedstawia szczegółowe informacje dotyczące adresu IP, maski podsieci i bramy domyślnej dla każdej karty powiązanej z protokołem TCP/IP.
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.
ResetRDPCert Usuwa certyfikat TLS/SSL powiązany z odbiornikiem RDP i przywraca domyślne zabezpieczenia odbiornika RDP. Użyj tego skryptu, jeśli wystąpią problemy z certyfikatem.
SetRDPPort Ustawia domyślny lub określony przez użytkownika numer portu dla połączeń pulpitu zdalnego. Włącza reguły zapory dla dostępu przychodzącego do portu.

Interfejs wiersza polecenia platformy Azure

W poniższym przykładzie użyto polecenia az vm run-command , aby uruchomić skrypt powłoki na maszynie wirtualnej z systemem Windows platformy Azure.

# script.ps1
#   param(
#       [string]$arg1,
#       [string]$arg2
#   )
#   Write-Host This is a sample script with parameters $arg1 and $arg2

az vm run-command invoke  --command-id RunPowerShellScript --name win-vm -g my-resource-group \
    --scripts @script.ps1 --parameters "arg1=somefoo" "arg2=somebar"

Azure Portal

Przejdź do maszyny wirtualnej w witrynie Azure Portal i wybierz pozycję Uruchom polecenie z menu po lewej stronie w obszarze Operacje. Zostanie wyświetlona lista dostępnych poleceń do uruchomienia na maszynie wirtualnej.

Lista poleceń

Wybierz polecenie do uruchomienia. Niektóre polecenia mogą mieć opcjonalne lub wymagane parametry wejściowe. W przypadku tych poleceń parametry są prezentowane jako pola tekstowe, które umożliwiają podanie wartości wejściowych. Dla każdego polecenia można wyświetlić skrypt, który jest uruchamiany, rozwijając węzeł Wyświetl skrypt. Skrypt RunPowerShellScript różni się od innych poleceń, ponieważ umożliwia podanie własnego skryptu niestandardowego.

Uwaga

Wbudowane polecenia nie są edytowalne.

Po wybraniu polecenia wybierz pozycję Uruchom , aby uruchomić skrypt. Po zakończeniu działania skryptu zwraca dane wyjściowe i wszelkie błędy w oknie danych wyjściowych. Poniższy zrzut ekranu przedstawia przykładowe dane wyjściowe z uruchomienia polecenia RDPSettings .

Uruchamianie danych wyjściowych skryptu polecenia

PowerShell

W poniższym przykładzie użyto polecenia cmdlet Invoke-AzVMRunCommand do uruchomienia skryptu programu PowerShell na maszynie wirtualnej platformy Azure. Polecenie cmdlet oczekuje, że skrypt przywoływany w parametrze -ScriptPath będzie lokalny, do którego jest uruchamiane polecenie cmdlet.

Invoke-AzVMRunCommand -ResourceGroupName '<myResourceGroup>' -Name '<myVMName>' -CommandId 'RunPowerShellScript' -ScriptPath '<pathToScript>' -Parameter @{"arg1" = "var1";"arg2" = "var2"}

Uwaga

Wartości parametrów mogą być tylko typem ciągu, a skrypt jest odpowiedzialny za konwertowanie ich na inne typy w razie potrzeby.

Ograniczanie dostępu do uruchamiania polecenia

Wyświetlenie listy poleceń uruchamiania lub wyświetlenie szczegółów polecenia wymaga Microsoft.Compute/locations/runCommands/read uprawnienia na poziomie subskrypcji. Wbudowana rola Czytelnik i wyższe poziomy mają to uprawnienie.

Uruchomienie polecenia wymaga Microsoft.Compute/virtualMachines/runCommands/action 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.

Rozwiązywanie problemów z poleceniem uruchamiania akcji w systemie Windows

Podczas rozwiązywania problemów z poleceniem uruchamiania akcji dla środowisk systemu Windows zapoznaj się z plikiem dziennika RunCommandExtension znajdującym się zwykle w następującym katalogu: C:\WindowsAzure\Logs\Plugins\Microsoft.CPlat.Core.RunCommandWindows\<version>\RunCommandExtension.log aby uzyskać więcej informacji.

Znane problemy

  • Jeśli polecenie zawiera zastrzeżone znaki, rozszerzenie polecenia uruchomienia akcji może zakończyć się niepowodzeniem w środowisku systemu Windows. Na przykład:

    & Jeśli symbol jest przekazywany w parametrze polecenia, takim jak poniższy skrypt programu PowerShell, może zakończyć się niepowodzeniem.

    $paramm='abc&jj'
    Invoke-AzVMRunCommand -ResourceGroupName AzureCloudService1 -Name test -CommandId 'RunPowerShellScript' -ScriptPath     C:\data\228332902\PostAppConfig.ps1 -Parameter @{"Prefix" = $paramm}
    

    ^ Użyj znaku , aby uciec od & argumentu , na przykład$paramm='abc^&jj'

  • Uruchomienie rozszerzenia polecenia może również zakończyć się niepowodzeniem, jeśli polecenie do wykonania zawiera ciąg "\n" w ścieżce, ponieważ będzie traktowany jako nowy wiersz. Na przykład C:\Windows\notepad.exe element zawiera element \n w ścieżce pliku. Rozważ zastąpienie \n ciągiem w \N ścieżce.

  • Upewnij się, że nie masz żadnego ustawienia niestandardowego w kluczu HKLM\SOFTWARE\Microsoft\Command Processor\AutoRun rejestru (szczegółowe tutaj). Może to spowodować wyzwolenie w fazie instalacji lub włączenia rozszerzenia RunCommand i spowodować błąd, taki jak "XYZ nie jest rozpoznawany jako wewnętrzne lub zewnętrzne polecenie, program operacyjny lub plik wsadowy".

Usuwanie polecenia uruchomienia akcji

Jeśli konieczne jest usunięcie akcji uruchom rozszerzenie systemu Windows, zapoznaj się z poniższymi krokami dotyczącymi programu Azure PowerShell i interfejsu wiersza polecenia:

Zastąp ciąg rgname i vmname odpowiednią nazwą grupy zasobów i nazwą maszyny wirtualnej w poniższych przykładach usuwania.

 Invoke-AzVMRunCommand -ResourceGroupName 'rgname' -VMName 'vmname' -CommandId 'RemoveRunCommandWindowsExtension'
az vm run-command invoke  --command-id RemoveRunCommandWindowsExtension --name vmname -g rgname

Uwaga

Po ponownym zastosowaniu polecenia Uruchom rozszerzenie zostanie zainstalowane automatycznie. Możesz użyć polecenia usuwania rozszerzenia, aby rozwiązać wszelkie problemy związane z rozszerzeniem.

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.