Tworzenie zasobu platformy Azure za pomocą skryptów w programie Azure PowerShell
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-Process
Format-Table
i 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:
Otwórz menu Start i wprowadź polecenie PowerShell.
Wybierz ikonę programu PowerShell .
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:
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
Wprowadź wartość Y lub A, a następnie naciśnij klawisz Enter.
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ń.
W terminalu uruchom następujące polecenie, aby uruchomić program PowerShell.
pwsh
Uruchom następujące polecenie w wierszu polecenia programu PowerShell, aby zainstalować program Azure PowerShell.
Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force
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ć:
Zaimportuj polecenia cmdlet platformy Azure.
Nawiąż połączenie z subskrypcją platformy Azure.
Utwórz grupę zasobów.
Sprawdź, czy tworzenie zakończyło się pomyślnie.
Poniższa ilustracja przedstawia omówienie następujących kroków:
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.
Pobierz listę nazw wszystkich subskrypcji na swoim koncie za pomocą polecenia
Get-AzSubscription
.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-AzVMNetworkInterface
i 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.