Udostępnij przez


Żądania programu PowerShell dotyczące uruchamiania polecenia na serwerach z obsługą usługi Azure Arc (wersja zapoznawcza)

Za pomocą poleceń programu PowerShell dla polecenia uruchamiania połączonej maszyny można zdalnie i bezpiecznie wykonywać skrypty lub polecenia na maszynach wirtualnych z obsługą usługi Arc bez bezpośredniego łączenia się z nimi za pośrednictwem protokołu Remote Desktop Protocol lub SSH.

Ten artykuł zawiera przykłady, które używają kilku poleceń programu PowerShell, aby ułatwić zrozumienie sposobu wykonywania skryptów lub poleceń na serwerze z obsługą usługi Arc za pomocą programu PowerShell.

Wymagania wstępne

  • Wersja agenta Connected Machine na serwerze z obsługą usługi Arc musi być 1.33 lub nowsza.

Przykładowe żądania programu PowerShell

W poniższych przykładach użyto różnych poleceń programu PowerShell do pracy z poleceniami Run na serwerze z obsługą Arc.

Wykonywanie skryptu na maszynie

To polecenie dostarcza skrypt do maszyny, wykonuje go i zwraca przechwycone dane wyjściowe.

New-AzConnectedMachineRunCommand -ResourceGroupName "myRG" -MachineName "myMachine" -Location "eastus" -RunCommandName "RunCommandName" –SourceScript "echo Hello World!"

Uwaga

W parametrze -SourceScript można dodać wiele poleceń. Użyj ;, aby oddzielić każde polecenie. Przykład: –SourceScript "id; echo Hello World!"

Wykonaj skrypt na maszynie używając pliku skryptu z pamięci masowej

To polecenie kieruje agenta połączonej maszyny do identyfikatora URI sygnatury dostępu współdzielonego (SAS) dla obiektu blob magazynu, w którym został przekazany skrypt, a następnie kieruje agenta do wykonania skryptu i zwraca przechwycone dane wyjściowe.

New-AzConnectedMachineRunCommand -ResourceGroupName "MyRG0" -MachineName "MyMachine" -RunCommandName "MyRunCommand" -Location "eastus" -SourceScriptUri “< SAS URI of a storage blob with read access or public URI>”

Uwaga

scriptUri to wspólny identyfikator URI sygnatury dostępu (SAS) dla obiektu blob magazynu, który musi zapewniać dostęp do odczytu do obiektu blob. Sugerowany jest czas wygaśnięcia 24 godzin dla sygnatury dostępu współdzielonego (SAS) URI. Identyfikator URI sygnatury dostępu współdzielonego można wygenerować na portalu Azure, korzystając z opcji obiektów Blob lub tokenu SAS używając New-AzStorageBlobSASToken. W przypadku generowania tokenu SAS przy użyciu New-AzStorageBlobSASToken polecenia format identyfikatora URI sygnatury dostępu współdzielonego (SAS) ma postać: base blob URL + "?" + token SAS z New-AzStorageBlobSASToken.

Wypisz wszystkie wdrożone zasoby poleceń „Uruchom” na maszynie

To polecenie zwraca pełną listę wcześniej wdrożonych poleceń uruchamiania wraz z ich właściwościami.

Get-AzConnectedMachineRunCommand -ResourceGroupName "myRG" -MachineName "myMachine"

Uzyskiwanie stanu wykonania i wyników

To polecenie pobiera bieżący postęp wykonywania dla polecenia "Uruchom", w tym najnowsze dane wyjściowe, czas rozpoczęcia/zakończenia, kod zakończenia i stan końcowy wykonywania.

Get-AzConnectedMachineRunCommand -ResourceGroupName "myRG" - MachineName "myMachine" -RunCommandName "RunCommandName"

Uzyskaj informacje o stanie dla polecenia Uruchom za pomocą podglądu instancji

Uzyskaj informacje o stanie polecenia Run na maszynie z Widokiem Instancji. Widok wystąpienia zawiera stan wykonywania polecenia Uruchom (powodzenie, niepowodzenie itd.), kod zakończenia, standardowe dane wyjściowe i standardowy błąd wygenerowany przez wykonanie skryptu. Kod zakończenia niezerowy wskazuje nieudane wykonanie.

Get-AzConnectedMachineRunCommand -ResourceGroupName "MyRG" -MachineName "MyMachine" -RunCommandName "MyRunCommand"

Oprócz innych informacji odpowiedź zwraca następujące pola:

  • InstanceViewExecutionState: Stan skryptu polecenia Uruchom. Zapoznaj się z tym statusem, aby dowiedzieć się, czy skrypt się udał.

  • ProvisioningState: Stan ogólnego zakończenia aprowizacji rozszerzeń (czy platforma rozszerzenia była w stanie wyzwolić skrypt polecenia Uruchom, czy nie).

Tworzenie lub aktualizowanie polecenia uruchamiania na maszynie i przechwytywanie standardowych danych wyjściowych i standardowych komunikatów o błędach

Utwórz lub zaktualizuj polecenie uruchamiania na maszynie i przesyłaj strumieniowo standardowe komunikaty wyjściowe i komunikaty o błędach do obiektów blob dołączania.

New-AzConnectedMachineRunCommand -ResourceGroupName "MyRG0" - MachineName "MyMachine" -RunCommandName "MyRunCommand3" -Location "eastus" -SourceScript "id; echo HelloWorld" -OutputBlobUri <OutPutBlobUrI> -ErrorBlobUri <ErrorBlobUri>

Uwaga

Bloby danych wyjściowych i błędów muszą być typem AppendBlob, a ich SAS URI muszą zapewniać dostęp do odczytu, dołączania, tworzenia i zapisu. Sugerowany jest czas wygaśnięcia 24 godzin dla identyfikatora URI sygnatury dostępu współdzielonego. Jeśli nie istnieje obiekt blob danych wyjściowych lub błędu, zostanie utworzony obiekt blob typu AppendBlob. Identyfikatory URI SAS można wygenerować na portalu Azure, korzystając z opcji obiektu blob lub z tokenu SAS, używając New-AzStorageBlobSASToken.

Tworzenie lub aktualizowanie polecenia Run na maszynie jako inny użytkownik

Utwórz lub zaktualizuj polecenie 'Uruchom' na maszynie jako inny użytkownik z parametrami RunAsUser i RunAsPassword.

Aby można było użyć tych parametrów, należy wykonać następujące czynności:

  • Skontaktuj się z administratorem maszyny i upewnij się, że użytkownik ma dostęp do maszyny.
  • Upewnij się, że użytkownik ma dostęp do zasobów, do których uzyskuje dostęp za pomocą polecenia Uruchom. Przykłady: katalogi, pliki, sieć itd.
  • Na maszynie z systemem Windows upewnij się, że jest uruchomione polecenie "Logowanie pomocnicze".
New-AzMachineRunCommand -ResourceGroupName "MyRG0" -MachineName "MyMachine" -RunCommandName "MyRunCommand" -Location "eastus" -SourceScript "id; echo HelloWorld" -RunAsUser myusername -RunAsPassword mypassword

Tworzenie lub aktualizowanie polecenia Uruchom na maszynie przy użyciu pliku skryptu lokalnego

Utwórz lub zaktualizuj polecenie uruchamiania na maszynie przy użyciu lokalnego pliku skryptu na komputerze klienckim, na którym cmdlet zostanie wykonane.

New-AzConnectedMachineRunCommand -ResourceGroupName "MyRG0" -VMName "MyMachine" -RunCommandName "MyRunCommand" -Location "eastus" -ScriptLocalPath "C:\MyScriptsDir\MyScript.ps1"

Tworzenie lub aktualizowanie polecenia Uruchom na maszynie podczas przekazywania poufnych danych wejściowych do skryptu

Służy ProtectedParameter do przekazywania wszelkich poufnych danych wejściowych do skryptu, takiego jak hasła lub klucze.

$privateParametersArray = @{name='inputText';value='privateParam1value'}

New-AzConnectedMachineRunCommand -MachineName "MyMachine" -ResourceGroupName "MyRG0" -RunCommandName "MyRunCommand" -Location "eastus" -SourceScriptUri <SourceScriptUri> -ProtectedParameter $privateParametersArray 

Przykładowy skrypt do przechwytywania elementu inputText:

param ([string]$inputText)
Write-Output $inputText

Parametry publiczne można również przekazać w podobny sposób przy użyciu polecenia Parameter.

  • Windows — parametr i parametr ProtectedParameter są przekazywane do skryptu podobnego do następującego przykładu: myscript.ps1 -publicParam1 publicParam1value -publicParam2 publicParam2value -secret1 secret1value -secret2 secret2value

  • Linux — nazwany Parameter i jego wartości są ustawione na konfigurację środowiska, która powinna być dostępna w skrypcie PowerShell. W przypadku argumentów bez nazwy przekaż pusty ciąg znaków jako wartość parametru nazwy. Argumenty bez nazw są przekazywane do skryptu podobnego do następującego przykładu: myscript.sh publicParam1value publicParam2value secret1value secret2value

Usuń zasób RunCommand z maszyny

Usuń zasób Uruchom polecenie wcześniej wdrożony na maszynie. Jeśli wykonywanie skryptu jest nadal w toku, wykonanie zakończy się.

Remove-AzConnectedMachineRunCommand -ResourceGroupName "myRG" -MachineName "myMachine" -RunCommandName "RunCommandName"