Azure Stack Hub'da AzureRM'den Azure PowerShell Az'ye geçiş

Az modülünün AzureRM ile özellik eşliği vardır ama daha kısa ve daha tutarlı cmdlet adları kullanır. AzureRM cmdlet'leri için yazılmış betikler otomatik olarak yeni modülle çalışmayacaktır. Geçişi kolaylaştırmak için, Az mevcut betiklerinizi AzureRM kullanarak çalıştırmanıza olanak tanıyan araçlar sunar. Yeni bir komut kümesine geçmek hiçbir zaman rahat bir işlem olmamıştır, ama bu makale yeni modüle geçişi başlatmanıza yardımcı olacaktır.

AzureRM ile Az arasındaki yeni değişikliklerin tam listesini görmek için bkz. Az 1.0.0 için geçiş kılavuzu

AzureRM’nin yüklü sürümlerini denetleme

Geçiş adımlarını uygulamadan önce, sisteminizde hangi AzureRM sürümlerinin yüklü olduğunu denetleyin. Bunu yaparak betiklerin zaten en son sürümde çalıştığından emin olabilir ve AzureRM’yi kaldırmadan komut diğer adlarını etkinleştirip etkinleştiremeyeceğinizi anlayabilirsiniz.

AzureRM’nin hangi sürümlerini yüklediğinizi denetlemek için şu komutu çalıştırın:

Get-InstalledModule -Name AzureRM -AllVersions

Geçerli betiklerin AzureRM ile çalışmasını denetleme

En önemli adım budur! Mevcut betiklerinizi çalıştırın ve azureRM'nin en son sürümüyle (2.5.0) çalıştıklarından emin olun. Betikleriniz çalışmazsa, AzureRM geçiş kılavuzunu mutlaka okuyun.

Azure PowerShell Az modülünü yükleme

İlk adım, platformunuza Az modülünü yüklemektir. Az’yi yüklediğinizde AzureRM’yi kaldırmanız önerilir. Aşağıdaki adımlarda, mevcut betiklerinizi çalıştırmaya devam etmeyi ve eski cmdlet adlarıyla uyumluluğu sağlamayı öğreneceksiniz.

Azure PowerShell Az modülünü yüklemek için şu adımları izleyin:

AzureRM uyumluluk diğer adlarını etkinleştirme

Önemli

Uyumluluk modunu yalnızca AzureRM’nin tüm sürümlerini kaldırdıysanız etkinleştirin. AzureRM cmdlet’leri hala kullanılabilir durumdayken uyumluluk modunun etkinleştirilmesi, tahmin edilemeyen davranışlara yol açabilir. AzureRM’yi kaldırmamaya karar verdiyseniz bu adımı atlayın, ancak tüm AzureRM cmdlet’lerinin eski modülleri kullanacağını ve herhangi bir Az cmdlet’ini çağırmayacağını aklınızda bulundurun.

AzureRM kaldırıldıktan ve betiklerinizin en son AzureRM sürümüyle çalıştığından emin olduktan sonra, sıra Az modülü için uyumluluk modunu etkinleştirmeye gelir. Uyumluluk şu komutla etkinleştirilir:

Enable-AzureRmAlias -Scope CurrentUser

Diğer adlar, Az modülü yüklendiğinde eski cmdlet adlarının kullanılabilmesine olanak tanır. Bu diğer adlar, seçili kapsam için kullanıcı profiline yazılır. Kullanıcı profili yoksa, bir profil oluşturulur.

Uyarı

Bu komut için farklı bir -Scope kullanabilirsiniz, ama bunu yapmanız önerilmez. Diğer adlar seçili kapsam için kullanıcı profiline yazılır, dolayısıyla bunları olabildiğince kısıtlı bir kapsamda etkinleştirilmiş durumda tutun. Diğer adların sistem genelinde etkinleştirilmesi, kendi yerel kapsamlarında AzureRM’yi yüklemiş olan diğer kullanıcılarda sorunlara yol açabilir.

Diğer ad modu etkinleştirildikten sonra, hala beklendiği gibi çalıştıklarını doğrulamak için betiklerinizi bir kez daha çalıştırın.

Modül ve cmdlet adlarını değiştirme

Genel olarak, modül adları AzureRM ve AzureAz olacak şekilde değiştirilmiştir ve cmdlet'lerde de aynı durum geçerlidir. Örneğin, AzureRM.Compute modülü Az.Compute olarak yeniden adlandırılmıştır. Şimdi New-AzureRMVMNew-AzVM ve Get-AzureStorageBlob de Get-AzStorageBlob olmuştur.

Bu adlandırma değişikliğinin bilmeniz gereken özel durumları vardır. Bazı modüller yeniden adlandırılmış veya mevcut modüllerle birleştirilmiştir, ancak AzureRM veya Azure adının Az olarak değiştirilmesi dışında modül cmdlet’lerinin son eki bundan etkilenmemiştir. Bunun dışında, cmdlet sonekinin tamamı yeni modül adını yansıtacak şekilde değiştirilmiştir.

AzureRM modülü Az modülü Cmdlet soneki değişti mi?
AzureRM.Profile Az.Accounts Yes
AzureRM.Insights Az.Monitor Yes
AzureRM.Tags Az.Resources Hayır
AzureRM.UsageAggregates Az.Billing Hayır
AzureRM.Consumption Az.Billing Hayır

Özet

Bu adımları izleyerek mevcut betiklerinizin tümünü yeni modülü kullanacak şekilde güncelleştirebilirsiniz. Bu adımlarla ilgili, geçiş işleminizi zorlaştıran sorularınız veya sorunlarınız varsa lütfen bu makaleye yorum ekleyin. Bu sayede biz de yönergeleri geliştirebiliriz.

Az 1.0.0 için yeni değişiklikler

Bu belge, AzureRM 6.x ve yeni Az modülü (sürüm 1.x ve sonrası) arasındaki değişiklikler hakkında ayrıntılı bilgi sağlar. İçindekiler tablosu, betiklerinizi etkileyebilecek modüle özgü değişiklikler de dahil olmak üzere, tam geçiş yolunda size kılavuzluk edecektir.

Hataya neden olan genel değişiklikler

Bu bölümde, Az modülünün yeniden tasarımının bir parçası olan, hataya neden olan genel değişiklikler ayrıntılı olarak açıklanır.

Cmdlet isim ön eki değişiklikleri

AzureRM modülünde cmdlet’ler isim ön eki olarak AzureRM veya Azure kullanılır. Az ile birlikte cmdlet adları basitleştirilip normalleştirilerek tüm cmdlet’lerin isim ön eki olarak 'Az' kullanılacak. Örneğin:

Get-AzureRMVM
Get-AzureKeyVaultSecret

Yeni ad:

Get-AzVM
Get-AzKeyVaultSecret

Bu yeni cmdlet adlarına geçişi kolaylaştırmak için Az ile birlikte iki yeni cmdlet sunuluyor: Enable-AzureRmAlias ve Disable-AzureRmAlias. Enable-AzureRmAlias, AzureRM’deki eski cmdlet adları için yeni Az cmdlet adlarına eşlenen diğer adlar oluşturur. Enable-AzureRmAlias ile -Scope bağımsız değişkenini kullanarak diğer adları nerede etkinleştireceğinizi seçebilirsiniz.

Örneğin, şu AzureRM betiği:

#Requires -Modules AzureRM.Storage
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob

Enable-AzureRmAlias kullanılarak küçük değişikliklerle çalıştırılabilir:

#Requires -Modules Az.Storage
Enable-AzureRmAlias -Scope Process
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob

Enable-AzureRmAlias -Scope CurrentUser çalıştırıldığında açtığınız tüm PowerShell oturumları için diğer adları etkinleştireceğinden, bu cmdlet’i çalıştırdıktan sonra şunun gibi bir betiğin hiç değiştirilmesi gerekmez:

Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob

Diğer ad cmdlet’leri kullanımının tüm ayrıntıları için bkz. Enable-AzureRmAlias başvurusu.

Diğer adları devre dışı bırakmaya hazır olduğunuzda Disable-AzureRmAlias cmdlet'i oluşturulan diğer adları kaldırır. Tüm ayrıntıları için bkz. Disable-AzureRmAlias başvurusu.

Önemli

Diğer adları devre dışı bırakırken, diğer adların etkin olduğu tüm kapsamlarda devre dışı bırakıldıklarından emin olun.

Modül adı değişiklikleri

Aşağıdaki modüller dışında, önceden AzureRM.* olan modül adları Az.* olarak değiştirildi:

AzureRM modülü Az modülü
Azure Depolama Az.Storage
Azure.AnalysisServices Az.AnalysisServices
AzureRM.Profile Az.Accounts
AzureRM.Insights Az.Monitor
AzureRM.RecoveryServices.Backup Az.RecoveryServices
AzureRM.RecoveryServices.SiteRecovery Az.RecoveryServices
AzureRM.Tags Az.Resources
AzureRM.MachineLearningCompute Az.MachineLearning
AzureRM.UsageAggregates Az.Billing
AzureRM.Consumption Az.Billing

Modül adlarındaki değişiklikler nedeniyle, belirli modülleri yüklemek için #Requires ve Import-Module deyimlerini kullanan tüm betiklerin yeni modülü kullanacak şekilde güncelleştirilmesi gerekir. Cmdlet sonekinin değişmediği modüllerde bu, modül adı değişmiş olsa da işlem alanını belirten sonekin değişmediği anlamına gelir.

Geçiş için modül deyimlerini içeri ve içeri aktarma gerekir

AzureRM modüllerine bağımlılığı bildirmek için #Requires veya Import-Module deyimini kullanan betikler yeni modül adlarını kullanacak şekilde güncelleştirilmelidir. Örneğin:

#Requires -Module AzureRM.Compute

Şöyle değiştirilmelidir:

#Requires -Module Az.Compute

Import-Module için:

Import-Module -Name AzureRM.Compute

Şöyle değiştirilmelidir:

Import-Module -Name Az.Compute

Tam cmdlet çağrılarını geçirme

Şunun gibi modül adıyla nitelenen cmdlet çağrılarını kullanan betikler:

AzureRM.Compute\Get-AzureRmVM

Yeni modülü ve cmdlet adlarını kullanacak şekilde değiştirilmelidir:

Az.Compute\Get-AzVM

Modül bildirimi bağımlılıklarını geçirme

Bir modül bildirimi (.psd1) dosyası aracılığıyla AzureRM modüllerine bağımlılığı ifade eden modüllerin RequiredModules bölümünde güncelleştirilmiş modül adları olmalıdır:

RequiredModules = @(@{ModuleName="AzureRM.Profile"; ModuleVersion="5.8.2"})

Şöyle değiştirilmelidir:

RequiredModules = @(@{ModuleName="Az.Accounts"; ModuleVersion="1.0.0"})

Kaldırılan modüller

Aşağıdaki modüller kaldırıldı:

  • AzureRM.Backup
  • AzureRM.Compute.ManagedService
  • AzureRM.Scheduler

Bu hizmetlere yönelik araçlar artık etkin bir şekilde desteklenmemektedir. Müşterilerin uygun olan en yakın zamanda alternatif hizmetlere geçmesi önerilir.

Windows PowerShell 5.1 ve .NET 4.7.2

Windows için PowerShell 5.1 ile Az kullanımı, .NET Framework 4.7.2 sürümünün yüklenmesini gerektirir. PowerShell Core 6.x ve sonraki sürümleri .NET Framework gerektirmez.

PSCredential kullanılarak kullanıcı oturum açma bilgilerinin geçici olarak kaldırılması

.NET Standard kimlik doğrulama akışındaki değişiklikler nedeniyle, PSCredential üzerinden kullanıcı oturumu açmayı geçici olarak kaldırıyoruz. Bu özellik, Windows için PowerShell 5.1’in 15/1/2019 tarihli yayınında yeniden kullanıma sunulacaktır. Bu konu, bu GitHub sorununda ayrıntılı olarak açıklanmıştır.

Web tarayıcısı istemi yerine varsayılan cihaz kodu ile oturum açma

.NET Standard kimlik doğrulama akışındaki değişiklikler nedeniyle, etkileşimli oturum açma sırasında varsayılan oturum açma akışı olarak cihazla oturum açmayı kullanıyoruz. Web tarayıcısı tabanlı oturum açma, Windows için PowerShell 5.1'de 15/1/2019 tarihli yayınla birlikte yeniden varsayılan seçenek olarak kullanıma sunulacaktır. İlgili tarihte, kullanıcılar bir Switch parametresini kullanarak cihaz oturumunu seçebilecek.

Modüldeki yeni değişiklikler

Bu bölümde, belirli modüller ve cmdlet’lerde hataya neden olan değişiklikler ayrıntılı olarak açıklanır.

Az.ApiManagement (eski adıyla AzureRM.ApiManagement)

  • Aşağıdaki cmdlet’ler kaldırıldı:
    • New-AzureRmApiManagementHostnameConfiguration
    • Set-AzureRmApiManagementHostnames
    • Update-AzureRmApiManagementDeployment
    • Import-AzureRmApiManagementHostnameCertificate
    • Bu özellikleri ayarlamak için bunun yerine Set-AzApiManagement cmdlet’ini kullanın
  • Aşağıdaki özellikler kaldırıldı:
    • PsApiManagementContext öğesinden PsApiManagementHostnameConfiguration türündeki PortalHostnameConfiguration, ProxyHostnameConfiguration, ManagementHostnameConfiguration ve ScmHostnameConfiguration özelliği kaldırıldı. Bunun yerine PsApiManagementCustomHostNameConfiguration türündeki PortalCustomHostnameConfiguration, ProxyCustomHostnameConfiguration, ManagementCustomHostnameConfiguration ve ScmCustomHostnameConfiguration özelliğini kullanın.
    • PsApiManagementContext öğesinden StaticIPs özelliği kaldırıldı. Özellik PublicIPAddresses ve PrivateIPAddresses olarak bölündü.
    • New-AzureApiManagementVirtualNetwork cmdlet’inden gerekli olan Location özelliği kaldırıldı.

Az.Billing (eski adıyla AzureRM.Billing, AzureRM.Consumption ve AzureRM.UsageAggregates)

  • Get-AzConsumptionUsageDetail cmdlet’inden InvoiceName parametresi kaldırıldı. Fatura için betiklerin diğer kimlik parametrelerini kullanması gerekir.

Az.Compute (eski adıyla AzureRM.Compute)

  • PSVirtualMachine ve PSVirtualMachineScaleSet nesnelerinde Identity özelliğinden IdentityIds kaldırıldı Betikler artık işleme kararları vermek için bu alanın değerini kullanmamalıdır.
  • PSVirtualMachineScaleSetVM nesnesinin InstanceView özelliğinin VirtualMachineInstanceView olan türü VirtualMachineScaleSetVMInstanceView olarak değiştirildi
  • UpgradePolicy özelliğinden AutoOSUpgradePolicy ve AutomaticOSUpgrade özelliği kaldırıldı
  • PSSnapshotUpdate nesnesindeki Sku özelliğinin DiskSku olan türü SnapshotSku olarak değiştirildi
  • VmScaleSetVMParameterSet, Add-AzVMDataDisk cmdlet’inden kaldırıldığından artık bir veri diskini ScaleSet VM’sine tek başına ekleyemezsiniz.

Az.KeyVault (eski adıyla AzureRM.KeyVault)

  • PSKeyVaultKeyAttributes, PSKeyVaultKeyIdentityItem ve PSKeyVaultSecretAttributes nesnesinden PurgeDisabled özelliği kaldırıldı Betikler artık işleme kararları vermek için PurgeDisabled özelliğine başvurmamalıdır.

Az.Monitor (eski adıyla AzureRM.Insights)

  • Set-AzDiagnosticSetting cmdlet’inden alınan tekil parametre adları tercih edilerek çoğul ad Categories ve Timegrains parametresi kaldırıldı Şunları kullanan betikler:

    Set-AzureRmDiagnosticSetting -Timegrains PT1M -Categories Category1, Category2
    

    Şöyle değiştirilmelidir:

    Set-AzDiagnosticSetting -Timegrain PT1M -Category Category1, Category2
    

Az.Network (eski adıyla AzureRM.Network)

  • Get-AzServiceEndpointPolicyDefinition cmdlet’inden kullanım dışı ResourceId parametresi kaldırıldı
  • PSVirtualNetwork nesnesinden kullanım dışı EnableVmProtection özelliği kaldırıldı
  • Kullanım dışı Set-AzVirtualNetworkGatewayVpnClientConfig cmdlet’i kaldırıldı

Betikler artık bu alanların değerlerini temel alan işleme kararları almamalıdır.

Az.Resources (eski adıyla AzureRM.Resources)

  • New/Set-AzPolicyAssignment cmdlet’inden Sku parametresi kaldırıldı

  • New-AzADServicePrincipal ve New-AzADSpCredential cmdlet’inden Password parametresi kaldırıldı Parolalar otomatik olarak oluşturulduğundan, daha önce parolayı sağlayan betikler:

    New-AzAdSpCredential -ObjectId 1f99cf81-0146-4f4e-beae-2007d0668476 -Password $secPassword
    

    Parolayı çıktıdan alacak şekilde değiştirilmelidir:

    $credential = New-AzAdSpCredential -ObjectId 1f99cf81-0146-4f4e-beae-2007d0668476
    $secPassword = $credential.Secret
    

Az.Storage (eski adıyla Azure.Storage and AzureRM.Storage)

  • Yalnızca depolama hesabı adıyla bir Oauth depolama bağlamı oluşturulmasının desteklenmesi için varsayılan parametre kümesi OAuthParameterSet olarak değiştirildi
    • Örnek: $ctx = New-AzureStorageContext -StorageAccountName $accountName
  • Get-AzStorageUsage cmdlet’inde Location parametresi zorunlu hale geldi
  • Depolama API’si metotları artık zaman uyumlu API çağrıları yerine Görev Tabanlı Zaman Uyumsuz Düzeni (TAP) kullanıyor. Aşağıdaki örneklerde yeni zaman uyumsuz komutlar gösterilir:

Blob anlık görüntüsü

AzureRM:

$b = Get-AzureStorageBlob -Container $containerName -Blob $blobName -Context $ctx
$b.ICloudBlob.Snapshot()

Az:

$b = Get-AzStorageBlob -Container $containerName -Blob $blobName -Context $ctx
$task = $b.ICloudBlob.SnapshotAsync()
$task.Wait()
$snapshot = $task.Result

Anlık görüntüyü paylaşma

AzureRM:

$Share = Get-AzureStorageShare -Name $containerName -Context $ctx
$snapshot = $Share.Snapshot()

Az:

$Share = Get-AzStorageShare -Name $containerName -Context $ctx
$task = $Share.SnapshotAsync()
$task.Wait()
$snapshot = $task.Result

Geçici silinen blob’un silinmesini geri al

AzureRM:

$b = Get-AzureStorageBlob -Container $containerName -Blob $blobName -IncludeDeleted -Context $ctx
$b.ICloudBlob.Undelete()

Az:

$b = Get-AzStorageBlob -Container $containerName -Blob $blobName -IncludeDeleted -Context $ctx
$task = $b.ICloudBlob.UndeleteAsync()
$task.Wait()

Blob katmanını ayarlama

AzureRM:

$blockBlob = Get-AzureStorageBlob -Container $containerName -Blob $blockBlobName -Context $ctx
$blockBlob.ICloudBlob.SetStandardBlobTier("hot")

$pageBlob = Get-AzureStorageBlob -Container $containerName -Blob $pageBlobName -Context $ctx
$pageBlob.ICloudBlob.SetPremiumBlobTier("P4")

Az:

$blockBlob = Get-AzStorageBlob -Container $containerName -Blob $blockBlobName -Context $ctx
$task = $blockBlob.ICloudBlob.SetStandardBlobTierAsync("hot")
$task.Wait()

$pageBlob = Get-AzStorageBlob -Container $containerName -Blob $pageBlobName -Context $ctx
$task = $pageBlob.ICloudBlob.SetPremiumBlobTierAsync("P4")
$task.Wait()

Az.Websites (eski adıyla AzureRM.Websites)

  • PSAppServicePlan, PSCertificate, PSCloningInfo ve PSSite nesnesinden kullanım dışı özellikler kaldırıldı

Sonraki adımlar