Azure PowerShell’de betikleri kullanarak Azure Kaynağı oluşturma

Tamamlandı

Etkileşimli modda PowerShell komut yazmanızı ve bunları hemen yürütmenizi sağlar.

Müşteri İlişkileri Yönetimi (CRM) örneğinde genel amacın Sanal Makineleri içeren üç test ortamı oluşturmak olduğunu hatırlayın. Vm'lerin ayrı ortamlar halinde düzenlenip düzenlenmediğinden emin olmak için kaynak gruplarını kullanırsınız: birim testi için bir tane, tümleştirme testi için bir tane ve kabul testi için. Kaynak gruplarını yalnızca bir kez oluşturmanız gerekir, bu nedenle bu kullanım örneğinde PowerShell etkileşimli modunu kullanmak iyi bir seçimdir.

PowerShell'e bir komut girdiğinizde, PowerShell komutu bir cmdlet ile eşleştirir ve istenen eylemi gerçekleştirir. İlk olarak, kullanabileceğiniz bazı yaygın komutlara göz atacağız ve ardından PowerShell için Azure desteği yüklemeyi inceleyeceğiz.

PowerShell cmdlet'leri nedir?

PowerShell komutları cmdlet ("command-let") olarak adlandırılır. Cmdlet, tek bir özelliği işleyen komuttur. cmdlet terimi "küçük komut" anlamına gelir. Kural gereği, cmdlet yazarlarının cmdlet'leri basit ve tek amaçlı tutmaları teşvik edilir.

Temel PowerShell ürünü, oturumlar ve arka plan işleri gibi özelliklerle çalışan cmdlet’lerle birlikte gelir. Diğer özellikleri işleyen cmdlet'leri almak için PowerShell yüklemenize modüller ekleyebilirsiniz. Örneğin ftp ile çalışma, işletim sisteminizi yönetme ve dosya sistemine erişme gibi özelliklere yönelik üçüncü taraf modülleri vardır.

Cmdlet'ler bir fiil-isim adlandırma kuralına uyar; örneğin, Get-Process, Format-Tableve Start-Service. Fiil seçimleri için de bir kural vardır: verileri almak için "get", verileri eklemek veya güncelleştirmek için "set", verileri biçimlendirmek için "format", çıkışı bir hedefe yönlendirmek için "out", vb. kullanılır.

Cmdlet yazanların, her cmdlet için bir yardım dosyası eklemesi önerilir. cmdlet'i Get-Help herhangi bir cmdlet için yardım dosyasını görüntüler. Örneğin, cmdlet'i hakkında Get-ChildItem yardım almak için bir Windows PowerShell oturumuna aşağıdaki deyimi girin:

Get-Help -Name Get-ChildItem -Detailed

PowerShell modülü nedir?

Cmdlet’ler modüllerde gelir. PowerShell Modülü, kullanılabilir her cmdlet'i işlemek için kod içeren bir dinamik bağlantı kitaplığıdır (DLL). Cmdlet'leri, içinde bulundukları modülü yükleyerek PowerShell'e yüklersiniz. Get-Module komutunu kullanarak yüklenmiş modüllerin listesine ulaşabilirsiniz:

Get-Module

Bu komut şuna benzer bir çıkış oluşturur:

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...

Az PowerShell modülü nedir?

Az , Azure özellikleriyle çalışacak cmdlet'leri içeren Azure PowerShell modülünün resmi adıdır. Her Azure kaynağının neredeyse tüm yönlerini denetlemenizi sağlayan yüzlerce cmdlet içerir. Kaynak grupları, depolama alanı, sanal makineler, Microsoft Entra Id, kapsayıcılar, makine öğrenmesi vb. ile çalışabilirsiniz. Az modülü GitHub'da kullanılabilen bir açık kaynak bileşenidir.

Dekont

Biçim kullanan Azure PowerShell komutlarını görmüş veya kullanmış -AzureRM olabilirsiniz. Az PowerShell modülleri artık AzureRM PowerShell modüllerinin tüm özelliklerine ve daha fazlasına sahip olduğundan, 29 Şubat 2024'te AzureRM PowerShell modüllerini devre dışı bırakacağız. Hizmet kesintilerini önlemek için AzureRM PowerShell modüllerini kullanan betiklerinizi 29 Şubat 2024'e kadar Az PowerShell modüllerini kullanacak şekilde güncelleştirin. Betiklerinizi otomatik olarak güncelleştirmek için hızlı başlangıç kılavuzunu izleyin.

Az PowerShell modülünü yükleme

Az PowerShell modülü, PowerShell Galerisi adlı genel bir depodan kullanılabilir. Modülü cmdlet'i aracılığıyla Install-Module yerel makinenize yükleyebilirsiniz.

En son Azure Az PowerShell modülünü yüklemek için aşağıdaki komutları çalıştırın:

  1. Başlat menüsünü açın ve PowerShell girin.

  2. PowerShell simgesini seçin.

  3. Aşağıdaki komutu girin ve Enter tuşuna basın:

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

Önceki komut, geçerli kullanıcınız için modülü yükler (parametresi tarafından Scope denetlenmektedir).

Komut, bileşenleri almak için NuGet'e dayanır. Bu nedenle, yüklediğiniz sürüme bağlı olarak NuGet'in en son sürümünü indirip yüklemeniz istenebilir.

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"):

Y yazın ve Enter tuşuna basın.

Varsayılan olarak, PowerShell Galerisi PowerShellGet için güvenilir bir depo olarak yapılandırılmaz. Güvenilmeyen bir depodan her yükleme gerçekleştirdiğinizde, modülü aşağıdaki çıkışla yüklemek istediğinizi onaylamanız istenir:

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"):

Y veya A yazın, ardından Enter tuşuna basın.

Betik yürütme başarısız

Güvenlik yapılandırmanıza bağlı olarak, Import-Module aşağıdaki çıkışa benzer bir şeyle başarısız olabilir:

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

Ayrıca hiç yanıt vermeyerek de başarısız olabilir. Bu durumda, programı durdurmak için Ctrl+C tuşlarına basın.

Her iki davranış da genellikle yürütme ilkesinin "Kısıtlı" olduğunu gösterir; yani PowerShell Galerisi dahil olmak üzere bir dış kaynaktan indirdiğiniz modülleri çalıştıramazsınız. cmdlet'ini Get-ExecutionPolicyçalıştırarak kontrol edebilirsiniz. Cmdlet "Kısıtlı" değerini döndürürse:

  1. Set-ExecutionPolicy cmdlet’ini kullanarak ilkenin adını "RemoteSigned" olarak değiştirin:

    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
    

    sizden izin istenir:

    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. Y veya A yazın, ardından Enter tuşuna basın.

  3. Komut isteminde, klavyenizdeki yukarı oku kullanın ve Azure komutunu yeniden çalıştırın Install-Module .

Az PowerShell modülünün yükleniyor olduğunu görebilmeniz gerekir. Tamamlandıktan sonra cmdlet'leri yüklemek için kullanabilirsiniz Import-Module .

Linux veya macOS'a Azure PowerShell'i yüklemek aynı komutları kullanır.

  1. Terminalde aşağıdaki komutu çalıştırarak PowerShell'i başlatın.

    pwsh
    
  2. Azure PowerShell'i yüklemek için PowerShell isteminde aşağıdaki komutu çalıştırın.

    Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force
    
  3. PSGallery'nin modüllerine güvenip güvenmediğiniz sorulursa Evet veya Tümüne Evet yanıtını verin.

PowerShell modülünü güncelleştirme

Azure PowerShell modülünün bir sürümünün zaten yüklü olduğunu belirten bir uyarı veya hata iletisi alabilirsiniz. Bu durumda, en son sürüme güncelleştirmek için aşağıdaki komutu yayımlayabilirsiniz.

Update-Module -Name Az

Cmdlet'inde olduğu gibi modüle Install-Module güvenmek isteyip istemediğiniz sorulduğunda Tümüne Evet veya Evet yanıtını verin. Sorun yaşıyorsanız modülü yeniden yüklemek için komutunu da kullanabilirsiniz Update-Module .

Örnek: Azure PowerShell ile kaynak grubu oluşturma

Azure modülünü yükledikten sonra Azure ile çalışmaya başlayabilirsiniz. Ortak bir görev yapalım: Kaynak Grubu oluşturma. Bildiğiniz gibi, ilgili kaynakları bir arada yönetmek için kaynak gruplarını kullanırız. Yeni bir kaynak grubu oluşturmak, yeni bir Azure çözümü başlatırken gerçekleştirdiğiniz ilk görevlerden biridir.

Gerçekleştirmeniz gereken dört adım vardır:

  1. Azure cmdlet’lerini içeri aktarın.

  2. Azure aboneliğinize bağlanın.

  3. Kaynak grubunu oluşturun.

  4. Oluşturma işleminin başarılı olduğunu doğrulayın.

Aşağıdaki çizimde bu adımlara genel bir bakış gösterilmektedir:

Diagram showing the steps to create a resource group.

Her adım farklı bir cmdlet’e karşılık gelir.

Azure cmdlet’lerini içeri aktarma

PowerShell 3.0'dan başlayarak modül içinde bir cmdlet kullandığınızda modüller otomatik olarak yüklenir. Varsayılan modül otomatik yükleme ayarlarını değiştirmediğiniz sürece PowerShell modüllerini el ile içeri aktarmak artık gerekli değildir.

Bağlan

Azure PowerShell'in yerel yüklemesiyle çalışırken, Azure komutlarını yürütebilmek için önce kimlik doğrulaması yapmanız gerekir. Connect-AzAccount Cmdlet, Azure kimlik bilgilerinizi ister ve ardından Azure aboneliğinize bağlanır. Birçok isteğe bağlı parametresi vardır, ancak tek ihtiyacınız olan etkileşimli bir istemse herhangi bir parametreye ihtiyacınız yoktur:

Connect-AzAccount

Aboneliklerle çalışma

Azure'da yeniyseniz büyük olasılıkla tek bir aboneliğiniz vardır. Ancak bir süredir Azure kullanıyorsanız birden çok Azure aboneliği oluşturmuş olabilirsiniz. Azure PowerShell’i, komutları belirli bir abonelikte yürütecek şekilde yapılandırabilirsiniz.

Aynı anda yalnızca bir aboneliğiniz olabilir. Hangi aboneliğin etkin olduğunu belirlemek için Get-AzContext cmdlet’ini kullanın. Doğru değilse, başka bir cmdlet kullanarak abonelikleri değiştirebilirsiniz.

  1. Get-AzSubscription komutunu kullanarak hesabınızdaki tüm abonelik adlarının listesine ulaşın.

  2. Aboneliği değiştirmek için, seçilecek aboneliğin adını iletin.

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

Abonelik Kimliğini aramanız gerekiyorsa Azure portalına gidin ve giriş sayfasında Abonelikler'i seçin.

Tüm kaynak gruplarının listesini alma

Etkin abonelikteki tüm Kaynak Gruplarının listesini alabilirsiniz.

Get-AzResourceGroup

Daha derli toplu bir görünüm elde etmek için, dikey çizgi ‘|’ kullanarak çıktıyı Get-AzResourceGroup cmdlet’inden Format-Table cmdlet’ine gönderebilirsiniz.

Get-AzResourceGroup | Format-Table

Çıktı şuna benzer:

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

Kaynak grubu oluşturma

Bildiğiniz gibi, Azure'da kaynak oluştururken bunları yönetim amacıyla her zaman bir kaynak grubuna yerleştirirsiniz. Kaynak grubu genellikle yeni bir uygulama başlatırken oluşturduğunuz ilk şeylerden biridir.

cmdlet'ini New-AzResourceGroup kullanarak kaynak grupları oluşturabilirsiniz. Ad ve konum belirtmelisiniz. Ad, aboneliğinizde benzersiz olmalıdır. Konum, kaynak grubunuzun meta verilerinin nerede depolandığını belirler (uyumluluk nedeniyle sizin için önemli olabilir). Konumu belirtmek için "Batı ABD", "Kuzey Avrupa" veya "Batı Hindistan" gibi dizeler kullanırsınız. Azure cmdlet'lerinin çoğunda olduğu gibi birçok New-AzResourceGroup isteğe bağlı parametresi vardır. Ancak, temel söz dizimi şöyledir:

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

Dekont

Unutmayın, sizin için Kaynak Grubunu oluşturan etkin bir Azure korumalı alanında çalışacağız. Kendi aboneliğinizde çalışmayı tercih ediyorsanız önceki komutu kullanın.

Kaynakları doğrulama

Burada Get-AzResource kaynakların oluşturulduğunu ve kaynak grubu oluşturma işleminin başarılı olduğunu doğrulamak için yararlı olan Azure kaynaklarınızı listeler.

Get-AzResource

Komutu gibi Get-AzResourceGroup , cmdlet'i aracılığıyla Format-Table daha kısa bir görünüm elde edebilirsiniz:

Get-AzResource | Format-Table

Ayrıca, bunu belirli kaynak gruplarına filtreleyerek yalnızca o grupla ilişkili kaynakları listeleyebilirsiniz:

Get-AzResource -ResourceGroupName ExerciseResources

Azure Sanal Makinesi oluşturma

PowerShell ile yapabileceğiniz bir diğer yaygın görev de VM'ler oluşturmaktır.

Azure PowerShell, sanal makine oluşturmak için New-AzVm cmdlet’ini sağlar. Cmdlet'in çok büyük sayıda VM yapılandırma ayarını işlemesini sağlayacak birçok parametresi vardır. Parametrelerin çoğu makul varsayılan değerlere sahiptir, bu nedenle yalnızca beş şey belirtmemiz gerekir:

  • ResourceGroupName: Yeni VM'nin yerleştirileceği kaynak grubu.
  • Name: Azure'da VM'nin adı.
  • Konum: VM'nin sağlanması gereken coğrafi konum.
  • Credential: VM yönetici hesabı için kullanıcı adı ve parolayı içeren nesne. Cmdlet'ini Get-Credential kullanırız. Bu cmdlet bir kullanıcı adı ve parola ister ve bunu bir kimlik bilgisi nesnesine paketler.
  • Görüntü: Genellikle linux dağıtımı veya Windows Server olan VM için kullanılacak işletim sistemi görüntüsü.
   New-AzVm
       -ResourceGroupName <resource group name>
       -Name <machine name>
       -Credential <credentials object>
       -Location <location>
       -Image <image name>

Yukarıdaki örnekte gösterildiği gibi bu parametreleri doğrudan cmdlet'e sağlayabilirsiniz. Alternatif olarak, sanal makineyi yapılandırmak için , Set-AzVMSourceImage, Add-AzVMNetworkInterfaceve Set-AzVMOSDiskgibi Set-AzVMOperatingSystemdiğer cmdlet'leri kullanabilirsiniz.

Get-Credential cmdlet’inin -Credential parametresiyle dize haline getirildiği bir örnek:

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

AzVM soneki PowerShell’deki VM tabanlı komutlara özeldir. Kullanabileceğiniz birkaç başka sonek vardır:

Komut Açıklama
Remove-AzVM Azure VM'lerini siler
Start-AzVM Durdurulan vm'leri başlatır
Stop-AzVM Çalışan vm'leri durdurur
Restart-AzVM VM'leri yeniden başlatır
Update-AzVM VM yapılandırmasını Güncelleştirmeler

Örnek: VM için bilgi alma

komutunu kullanarak Get-AzVM -Status aboneliğinizdeki VM'leri listeleyebilirsiniz. Bu komut, özelliğini dahil -Name ederek belirli bir VM girmeyi de destekler. Burada bunu bir PowerShell değişkenine atayacağız:

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

İlginç olan, sanal makinenizin artık etkileşim kurabileceğiniz bir nesne olmasıdır. Örneğin, bu nesnede değişiklik yapabilir ve ardından komutunu kullanarak değişiklikleri Azure'a Update-AzVM geri gönderebilirsiniz:

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

Update-AzVM -ResourceGroupName $ResourceGroupName  -VM $vm

PowerShell'deki etkileşimli mod, tek seferlik görevler için uygundur. Örneğimizde, projenin ömrü boyunca aynı kaynak grubunu kullanırız, bu nedenle etkileşimli olarak oluşturmak mantıklıdır. Etkileşimli mod bu görev için, bir betik yazıp tam olarak bir kez yürütmekten çoğunlukla daha hızlı ve daha kolaydır.