Azure PowerShell’de betikleri kullanarak Azure Kaynağı oluşturma
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-Table
ve 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:
Başlat menüsünü açın ve PowerShell girin.
PowerShell simgesini seçin.
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:
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
Y veya A yazın, ardından Enter tuşuna basın.
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.
Terminalde aşağıdaki komutu çalıştırarak PowerShell'i başlatın.
pwsh
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
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:
Azure cmdlet’lerini içeri aktarın.
Azure aboneliğinize bağlanın.
Kaynak grubunu oluşturun.
Oluşturma işleminin başarılı olduğunu doğrulayın.
Aşağıdaki çizimde bu adımlara genel bir bakış gösterilmektedir:
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.
Get-AzSubscription
komutunu kullanarak hesabınızdaki tüm abonelik adlarının listesine ulaşın.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-AzVMNetworkInterface
ve Set-AzVMOSDisk
gibi Set-AzVMOperatingSystem
diğ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.