Tworzenie zasobu platformy Azure za pomocą skryptów w programie Azure PowerShell

Ukończone

W trybie interaktywnym program PowerShell umożliwia pisanie poleceń i wykonywanie ich natychmiast.

Tak jak pamiętasz, ogólnym celem w przykładzie dotyczącym zarządzania relacjami z klientami (CRM, Customer Relationship Management) jest utworzenie trzech środowisk testowych zawierających maszyny wirtualne. Grupy zasobów służą do zapewnienia, że maszyny wirtualne są zorganizowane w oddzielne środowiska: jeden do testowania jednostkowego, drugi do testowania integracji i jeden do testowania akceptacyjnego. Grupy zasobów należy utworzyć tylko raz, więc użycie trybu interaktywnego programu PowerShell w tym przypadku użycia jest dobrym wyborem.

Po wprowadzeniu polecenia w programie PowerShell program PowerShell dopasuje polecenie do polecenia cmdlet, a następnie wykonuje żądaną akcję. Najpierw przyjrzymy się niektórym typowym poleceniom, których można użyć, a następnie przyjrzymy się zainstalowaniu pomoc techniczna platformy Azure dla programu PowerShell.

Co to są polecenia cmdlet programu PowerShell?

Polecenie programu PowerShell jest nazywane poleceniem cmdlet (wymawiane jako „command-let”). Polecenie cmdlet służy do manipulowania pojedynczą funkcją. Termin cmdlet ma oznaczać "małe polecenie". Zgodnie z konwencją autorzy poleceń cmdlet są zachęcani do utrzymywania prostych i pojedynczych poleceń cmdlet.

Podstawowy produkt programu PowerShell jest dostarczany wraz z poleceniami cmdlet działającymi z funkcjami takimi jak sesje i zadania w tle. Moduły można dodać do instalacji programu PowerShell, aby uzyskać polecenia cmdlet, które manipulują innymi funkcjami. Na przykład istnieją moduły innych firm służące do pracy z serwerem FTP, administrowania systemem operacyjnym, dostępu do systemu plików itd.

Polecenia cmdlet są zgodne z konwencją nazewnictwa czasownika; na przykład , Get-ProcessFormat-Tablei Start-Service. Istnieje również konwencja dotycząca wybierania czasowników: „get” w przypadku pobierania danych, „set” w przypadku wstawiania lub aktualizowania danych, „format” w przypadku formatowania danych, „out” w przypadku przekazywania danych wyjściowych do elementu docelowego itd.

Autorzy polecenia są zachęcani do dołączania pliku pomocy do każdego polecenia cmdlet. Polecenie Get-Help cmdlet wyświetla plik pomocy dla dowolnego polecenia cmdlet. Aby na przykład uzyskać pomoc dotyczącą Get-ChildItem polecenia cmdlet, wprowadź następującą instrukcję w sesji programu Windows PowerShell:

Get-Help -Name Get-ChildItem -Detailed

Co to jest moduł programu PowerShell?

Polecenia cmdlet są dostarczane w modułach. Moduł programu PowerShell to biblioteka biblioteki linków dynamicznych (DLL), która zawiera kod do przetwarzania każdego dostępnego polecenia cmdlet. Polecenia cmdlet można załadować do programu PowerShell, ładując moduł, w którym są zawarte. Listę załadowanych modułów można wyświetlić, używając polecenia Get-Module:

Get-Module

To polecenie zwraca dane wyjściowe podobne do następujących:

ModuleType Version    Name                                ExportedCommands
---------- -------    ----                                ----------------
Manifest   3.1.0.0    Microsoft.PowerShell.Management     {Add-Computer, Add-Content, Checkpoint-Computer, Clear-Con...
Manifest   3.1.0.0    Microsoft.PowerShell.Utility        {Add-Member, Add-Type, Clear-Variable, Compare-Object...}
Binary     1.0.0.1    PackageManagement                   {Find-Package, Find-PackageProvider, Get-Package, Get-Pack...
Script     1.0.0.1    PowerShellGet                       {Find-Command, Find-DscResource, Find-Module, Find-RoleCap...
Script     2.0.0      PSReadline                          {Get-PSReadLineKeyHandler, Get-PSReadLineOption, Remove-PS...

Co to jest moduł Az programu PowerShell?

Az to formalna nazwa modułu Azure PowerShell, który zawiera polecenia cmdlet do pracy z funkcjami platformy Azure. Zawiera ona setki poleceń cmdlet, które pozwalają kontrolować niemal każdy aspekt wszystkich zasobów platformy Azure. Możesz pracować z grupami zasobów, magazynem, maszynami wirtualnymi, identyfikatorem Firmy Microsoft Entra, kontenerami, uczeniem maszynowym itd. Moduł Az jest składnikiem open source dostępnym w usłudze GitHub.

Uwaga

Być może użyto poleceń programu Azure PowerShell, które używały -AzureRM formatu. Ponieważ moduły Az programu PowerShell mają teraz wszystkie możliwości modułów programu PowerShell modułu AzureRM i nie tylko, wycofamy moduły programu AzureRM PowerShell 29 lutego 2024 r. Aby uniknąć przerw w działaniu usługi, zaktualizuj skrypty korzystające z modułów programu AzureRM PowerShell, aby użyć modułów Az programu PowerShell do 29 lutego 2024 r. Aby automatycznie zaktualizować skrypty, postępuj zgodnie z przewodnikiem Szybki start.

Instalowanie modułu Az programu PowerShell

Moduł Az programu PowerShell jest dostępny w repozytorium globalnym o nazwie Galeria programu PowerShell. Moduł można zainstalować na komputerze lokalnym za pomocą Install-Module polecenia cmdlet .

Aby zainstalować najnowszy moduł Azure Az programu PowerShell, uruchom następujące polecenia:

  1. Otwórz menu Start i wprowadź polecenie PowerShell.

  2. Wybierz ikonę programu PowerShell .

  3. Wprowadź następujące polecenie i naciśnij klawisz Enter:

    Install-Module -Name Az -Scope CurrentUser -Repository PSGallery
    

Poprzednie polecenie instaluje moduł dla bieżącego użytkownika (kontrolowane przez Scope parametr ).

Polecenie opiera się na nuGet do pobierania składników. Dlatego w zależności od zainstalowanej wersji może zostać wyświetlony monit o pobranie i zainstalowanie najnowszej wersji pakietu NuGet.

NuGet provider is required to continue
PowerShellGet requires NuGet provider version '2.8.5.201' or newer to interact with NuGet-based repositories. The NuGet
 provider must be available in 'C:\Program Files\PackageManagement\ProviderAssemblies' or
'C:\Users\<username>\AppData\Local\PackageManagement\ProviderAssemblies'. You can also install the NuGet provider by running
'Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force'. Do you want PowerShellGet to install and import
 the NuGet provider now?
 [Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"):

Wprowadź Y i naciśnij klawisz Enter.

Domyślnie Galeria programu PowerShell nie jest konfigurowana jako zaufane repozytorium dla modułu PowerShellGet. Za każdym razem, gdy przeprowadzasz instalację z niezaufanego repozytorium, zostanie wyświetlony monit o potwierdzenie zainstalowania modułu z następującymi danymi wyjściowymi:

You are installing the modules from an untrusted repository. If you trust this repository, change its
InstallationPolicy value by running the Set-PSRepository cmdlet. Are you sure you want to install the modules from
'PSGallery'?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "N"):

Wprowadź wartość Y lub A, a następnie naciśnij klawisz Enter.

Wykonanie skryptu nie powiodło się

W zależności od konfiguracji Import-Module zabezpieczeń może zakończyć się niepowodzeniem z następującymi danymi wyjściowymi:

import-module : File C:\Program Files\PowerShell\Modules\az\6.3.0\Az.psm1 cannot be loaded
because running scripts is disabled on this system. For more information, see about_Execution_Policies at
https:/go.microsoft.com/fwlink/?LinkID=135170.
At line:1 char:1
+ import-module Az
+ ~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : SecurityError: (:) [Import-Module], PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess,Microsoft.PowerShell.Commands.ImportModuleCommand

Może również zakończyć się niepowodzeniem, nie odpowiadając w ogóle. W takim przypadku naciśnij klawisze Ctrl+C , aby zatrzymać program.

Oba zachowania zwykle wskazują, że zasady wykonywania są "Ograniczone", co oznacza, że nie można uruchamiać modułów pobranych ze źródła zewnętrznego, w tym Galeria programu PowerShell. Możesz to sprawdzić, uruchamiając polecenie cmdlet Get-ExecutionPolicy. Jeśli polecenie cmdlet zwróci wartość "Ograniczone", wówczas:

  1. Za pomocą polecenia cmdlet Set-ExecutionPolicy zmień te zasady na „RemoteSigned”:

    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
    

    Zostanie wyświetlony monit o uprawnienie:

    The execution policy helps protect you from scripts that you do not trust. Changing the execution policy might expose
    you to the security risks described in the about_Execution_Policies help topic at
    https:/go.microsoft.com/fwlink/?LinkID=135170. Do you want to change the execution policy?
    [Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "N"): Y
    
  2. Wprowadź wartość Y lub A, a następnie naciśnij klawisz Enter.

  3. W wierszu polecenia użyj strzałki w górę na klawiaturze i ponownie uruchom Install-Module polecenie dla platformy Azure.

Powinno być widoczne ładowanie modułu Az programu PowerShell. Po zakończeniu będzie można użyć Import-Module polecenia cmdlet do załadowania poleceń cmdlet.

Instalowanie programu Azure PowerShell w systemie Linux lub macOS używa tych samych poleceń.

  1. W terminalu uruchom następujące polecenie, aby uruchomić program PowerShell.

    pwsh
    
  2. Uruchom następujące polecenie w wierszu polecenia programu PowerShell, aby zainstalować program Azure PowerShell.

    Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force
    
  3. Jeśli zostanie wyświetlony pytanie, czy ufasz modułom z programu PSGallery, odpowiedz tak lub tak do wszystkich.

Aktualizowanie modułu programu PowerShell

Może zostać wyświetlony komunikat ostrzegawczy lub komunikat o błędzie wskazujący, że wersja modułu Azure PowerShell jest już zainstalowana. Jeśli tak, możesz wydać następujące polecenie, aby zaktualizować do najnowszej wersji.

Update-Module -Name Az

Podobnie jak w przypadku polecenia cmdlet, po wyświetleniu monitu Install-Module o zaufanie modułowi odpowiedz Tak lub Tak na wszystkie. Możesz również użyć Update-Module polecenia , aby ponownie zainstalować moduł, jeśli masz z nim problem.

Przykład: jak utworzyć grupę zasobów za pomocą modułu Azure PowerShell

Po zainstalowaniu modułu platformy Azure możesz rozpocząć pracę z platformą Azure. Wykonajmy typowe zadanie: tworzenie grupy zasobów. Jak już wiadomo, grup zasobów używa się do administrowania powiązanymi ze sobą zasobami. Tworzenie nowej grupy zasobów to jedno z pierwszych zadań wykonywanych podczas uruchamiania nowego rozwiązania platformy Azure.

Istnieją cztery kroki, które należy wykonać:

  1. Zaimportuj polecenia cmdlet platformy Azure.

  2. Nawiąż połączenie z subskrypcją platformy Azure.

  3. Utwórz grupę zasobów.

  4. Sprawdź, czy tworzenie zakończyło się pomyślnie.

Poniższa ilustracja przedstawia omówienie następujących kroków:

Diagram showing the steps to create a resource group.

Każdy krok odpowiada innemu poleceniu cmdlet.

Importowanie poleceń cmdlet platformy Azure

Począwszy od programu PowerShell 3.0 moduły są ładowane automatycznie podczas korzystania z polecenia cmdlet w module. Nie jest już konieczne ręczne importowanie modułów programu PowerShell, chyba że zmieniono domyślne ustawienia automatycznego ładowania modułu.

Połącz

Podczas pracy z lokalną instalacją programu Azure PowerShell należy przeprowadzić uwierzytelnianie przed wykonaniem poleceń platformy Azure. Polecenie Connect-AzAccount cmdlet wyświetla monit o podanie poświadczeń platformy Azure, a następnie nawiązuje połączenie z subskrypcją platformy Azure. Zawiera on wiele parametrów opcjonalnych, ale jeśli potrzebujesz tylko interakcyjnego monitu, nie potrzebujesz żadnych parametrów:

Connect-AzAccount

Praca z subskrypcjami

Jeśli dopiero zaczynasz korzystać z platformy Azure, prawdopodobnie masz tylko jedną subskrypcję. Jeśli jednak używasz platformy Azure od jakiegoś czasu, być może utworzono wiele subskrypcji platformy Azure. Możesz skonfigurować program Azure PowerShell do wykonywania poleceń dla określonej subskrypcji.

W każdym momencie możesz pracować w ramach tylko jednej subskrypcji. Za pomocą polecenia cmdlet Get-AzContext możesz ustalić, która subskrypcja jest aktywna. Jeśli nie jest to poprawne, możesz zmienić subskrypcje przy użyciu innego polecenia cmdlet.

  1. Pobierz listę nazw wszystkich subskrypcji na swoim koncie za pomocą polecenia Get-AzSubscription.

  2. Zmień subskrypcję, przekazując nazwę tej, którą należy wybrać.

Set-AzContext -Subscription '00000000-0000-0000-0000-000000000000'

Jeśli musisz wyszukać identyfikator subskrypcji, przejdź do witryny Azure Portal i wybierz pozycję Subskrypcje na stronie głównej.

Pobieranie listy wszystkich grup zasobów

Możesz pobrać listę wszystkich grup zasobów w aktywnej subskrypcji.

Get-AzResourceGroup

Aby uzyskać bardziej zwięzły widok, możesz wysłać dane wyjściowe z polecenia cmdlet Get-AzResourceGroup do polecenia cmdlet Format-Table przy użyciu potoku „|”.

Get-AzResourceGroup | Format-Table

Dane wyjściowe wyglądają mniej więcej tak:

ResourceGroupName                  Location       ProvisioningState Tags TagsTable ResourceId
-----------------                  --------       ----------------- ---- --------- ----------
cloud-shell-storage-southcentralus southcentralus Succeeded                        /subscriptions/00000000-0000-0000...
ExerciseResources                  eastus         Succeeded                        /subscriptions/00000000-0000-0000...

Tworzenie grupy zasobów

Jak wiesz, podczas tworzenia zasobów na platformie Azure zawsze umieszczasz je w grupie zasobów na potrzeby zarządzania. Grupa zasobów jest często jedną z pierwszych rzeczy tworzonych podczas uruchamiania nowej aplikacji.

Grupy zasobów można utworzyć przy użyciu New-AzResourceGroup polecenia cmdlet . Musisz określić nazwę i lokalizację. Nazwa musi być unikatowa w ramach Twojej subskrypcji. Lokalizacja określa, gdzie są przechowywane metadane grupy zasobów (co może być ważne ze względów zgodności). Ciągi, takie jak „Zachodnie stany USA”, „Europa Północna” lub „Indie Zachodnie” umożliwiają określenie lokalizacji. Podobnie jak w przypadku większości poleceń cmdlet platformy Azure, New-AzResourceGroup ma wiele parametrów opcjonalnych. Jednak podstawowa składnia to:

New-AzResourceGroup -Name <name> -Location <location>

Uwaga

Pamiętaj, że będziemy pracować w aktywnej piaskownicy platformy Azure, która tworzy grupę zasobów. Użyj powyższego polecenia, jeśli wolisz pracować we własnej subskrypcji.

Weryfikowanie zasobów

Lista Get-AzResource zawiera listę zasobów platformy Azure, które są przydatne w tym miejscu, aby sprawdzić, czy zasoby zostały utworzone, a tworzenie grupy zasobów zakończyło się pomyślnie.

Get-AzResource

Podobnie jak w przypadku Get-AzResourceGroup polecenia , możesz uzyskać bardziej zwięzły widok za pomocą Format-Table polecenia cmdlet :

Get-AzResource | Format-Table

Można też przefiltrować listę pod kątem określonych grup zasobów, aby wyświetlić tylko zasoby skojarzone z tymi grupami:

Get-AzResource -ResourceGroupName ExerciseResources

Tworzenie maszyny wirtualnej platformy Azure

Innym typowym zadaniem, które można wykonać za pomocą programu PowerShell, jest utworzenie maszyn wirtualnych.

Program Azure PowerShell udostępnia polecenie cmdlet New-AzVm umożliwiające utworzenie maszyny wirtualnej. To polecenie cmdlet ma wiele parametrów umożliwiających obsługę dużej liczby ustawień konfiguracji maszyn wirtualnych. Większość parametrów ma rozsądne wartości domyślne, dlatego musimy określić tylko pięć elementów:

  • ResourceGroupName: grupa zasobów, w której powinna zostać umieszczona nowa maszyna wirtualna.
  • Name: nazwa maszyny wirtualnej na platformie Azure.
  • Lokalizacja: lokalizacja geograficzna, w której należy aprowizować maszynę wirtualną.
  • Credential: obiekt zawierający nazwę użytkownika i hasło dla konta administratora maszyny wirtualnej. Używamy Get-Credential polecenia cmdlet . To polecenie cmdlet wyświetla monit o podanie nazwy użytkownika i hasła i pakuje je do obiektu poświadczeń.
  • Obraz: Obraz systemu operacyjnego do użycia dla maszyny wirtualnej, który jest zazwyczaj dystrybucją systemu Linux lub systemem Windows Server.
   New-AzVm
       -ResourceGroupName <resource group name>
       -Name <machine name>
       -Credential <credentials object>
       -Location <location>
       -Image <image name>

Te parametry można podać bezpośrednio do polecenia cmdlet, jak pokazano w poprzednim przykładzie. Alternatywnie możesz użyć innych poleceń cmdlet, aby skonfigurować maszynę wirtualną, taką jak Set-AzVMOperatingSystem, Set-AzVMSourceImage, Add-AzVMNetworkInterfacei Set-AzVMOSDisk.

Oto przykład, w którym połączono polecenie cmdlet Get-Credential z parametrem -Credential:

New-AzVM -Name MyVm -ResourceGroupName ExerciseResources -Credential (Get-Credential) ...

Sufiks AzVM jest specyficzny dla poleceń dotyczących maszyn wirtualnych w programie PowerShell. Istnieje kilka innych poleceń, których można użyć:

Polecenie opis
Remove-AzVM Usuwa maszynę wirtualną platformy Azure
Start-AzVM Uruchamia zatrzymaną maszynę wirtualną
Stop-AzVM Zatrzymuje uruchomioną maszynę wirtualną
Restart-AzVM Uruchamia ponownie maszynę wirtualną
Update-AzVM Aktualizacje konfiguracji maszyny wirtualnej

Przykład: uzyskiwanie informacji o maszynie wirtualnej

Maszyny wirtualne można wyświetlić w subskrypcji przy użyciu Get-AzVM -Status polecenia . To polecenie obsługuje również wprowadzanie określonej maszyny wirtualnej przez dołączenie -Name właściwości . W tym miejscu przypisujemy ją do zmiennej programu PowerShell:

$vm = Get-AzVM  -Name MyVM -ResourceGroupName ExerciseResources

Interesującą rzeczą jest to, że teraz maszyna wirtualna jest obiektem, z którym można korzystać. Możesz na przykład wprowadzić zmiany w tym obiekcie, a następnie wypchnąć zmiany z powrotem na platformę Update-AzVM Azure przy użyciu polecenia :

$ResourceGroupName = "ExerciseResources"
$vm = Get-AzVM  -Name MyVM -ResourceGroupName $ResourceGroupName
$vm.HardwareProfile.vmSize = "Standard_DS3_v2"

Update-AzVM -ResourceGroupName $ResourceGroupName  -VM $vm

Tryb interaktywny w programie PowerShell jest odpowiedni dla jednorazowych zadań. W naszym przykładzie używamy tej samej grupy zasobów przez cały okres istnienia projektu, więc tworzenie go interaktywnie jest uzasadnione. Użycie trybu interakcyjnego jest często szybsze i łatwiejsze na potrzeby tego zadania niż pisanie skryptu i jego jednorazowe wykonanie.