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:
- Önerilen: AzureRM modülünü kaldırın. AzureRM'nin yalnızca en son sürümünü değil tüm yüklü sürümlerini kaldırdığınızdan emin olun.
- Az modülünü yükleme
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 Azure
Az
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-AzureRMVM
New-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
öğesindenPsApiManagementHostnameConfiguration
türündekiPortalHostnameConfiguration
,ProxyHostnameConfiguration
,ManagementHostnameConfiguration
veScmHostnameConfiguration
özelliği kaldırıldı. Bunun yerinePsApiManagementCustomHostNameConfiguration
türündekiPortalCustomHostnameConfiguration
,ProxyCustomHostnameConfiguration
,ManagementCustomHostnameConfiguration
veScmCustomHostnameConfiguration
özelliğini kullanın. - PsApiManagementContext öğesinden
StaticIPs
özelliği kaldırıldı. ÖzellikPublicIPAddresses
vePrivateIPAddresses
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’indenInvoiceName
parametresi kaldırıldı. Fatura için betiklerin diğer kimlik parametrelerini kullanması gerekir.
Az.Compute (eski adıyla AzureRM.Compute)
-
PSVirtualMachine
vePSVirtualMachineScaleSet
nesnelerindeIdentity
özelliğindenIdentityIds
kaldırıldı Betikler artık işleme kararları vermek için bu alanın değerini kullanmamalıdır. -
PSVirtualMachineScaleSetVM
nesnesininInstanceView
özelliğininVirtualMachineInstanceView
olan türüVirtualMachineScaleSetVMInstanceView
olarak değiştirildi -
UpgradePolicy
özelliğindenAutoOSUpgradePolicy
veAutomaticOSUpgrade
özelliği kaldırıldı -
PSSnapshotUpdate
nesnesindekiSku
özelliğininDiskSku
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
vePSKeyVaultSecretAttributes
nesnesindenPurgeDisabled
özelliği kaldırıldı Betikler artık işleme kararları vermek içinPurgeDisabled
ö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 adCategories
veTimegrains
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’indenSku
parametresi kaldırıldıNew-AzADServicePrincipal
veNew-AzADSpCredential
cmdlet’indenPassword
parametresi kaldırıldı Parolalar otomatik olarak oluşturulduğundan, daha önce parolayı sağlayan betikler:New-AzAdSpCredential -ObjectId aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb -Password $secPassword
Parolayı çıktıdan alacak şekilde değiştirilmelidir:
$credential = New-AzAdSpCredential -ObjectId aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb $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
- Örnek:
-
Get-AzStorageUsage
cmdlet’indeLocation
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
vePSSite
nesnesinden kullanım dışı özellikler kaldırıldı
Sonraki adımlar
- Azure Stack Hub'da PowerShell hakkında daha fazla bilgi edinin, bkz. Azure Stack Hub'da PowerShell'i kullanmaya başlama
- PowerShell Az modülünü yükleyin, bkz . Azure Stack Hub için PowerShell Az modülünü yükleme