Memigrasikan dari AzureRM ke Az Azure PowerShell di Azure Stack Hub
Modul Az memiliki persamaan fitur dengan AzureRM, tetapi menggunakan nama cmdlet yang lebih pendek dan lebih konsisten. Skrip yang ditulis untuk cmdlet AzureRM tidak akan secara otomatis berfungsi dengan modul baru. Untuk mempermudah transisi, Az menawarkan alat untuk memungkinkan Anda menjalankan skrip yang ada menggunakan AzureRM. Tidak ada migrasi ke set perintah baru selalu mudah, tetapi artikel ini akan membantu Anda memulai transisi ke modul baru.
Untuk melihat daftar lengkap perubahan yang dapat menyebabkan gangguan antara AzureRM dan Az, lihat Panduan migrasi untuk Az 1.0.0
Memeriksa versi AzureRM yang terinstal
Sebelum melakukan langkah migrasi, periksa versi AzureRM mana yang terinstal pada sistem Anda. Melakukan hal itu memungkinkan Anda untuk memastikan skrip sudah berjalan pada rilis terbaru, dan mengetahui jika Anda dapat mengaktifkan alias perintah tanpa menghapus instalan AzureRM.
Untuk memeriksa versi AzureRM mana yang telah Anda terinstal, jalankan perintah:
Get-InstalledModule -Name AzureRM -AllVersions
Memeriksa skrip saat ini yang berfungsi dengan AzureRM
Ini adalah langkah yang paling penting. Jalankan skrip yang ada, dan pastikan skrip tersebut berfungsi dengan rilis terbaru AzureRM (2.5.0). Jika skrip Anda tidak berfungsi, pastikan untuk membaca Panduan migrasi AzureRM.
Menginstal modul Az Azure PowerShell
Langkah pertama adalah menginstal modul Az di platform Anda. Saat menginstal Az, sebaiknya Anda menghapus instalan AzureRM. Pada langkah-langkah berikut, Anda akan mempelajari cara tetap menjalankan skrip yang ada dan mengaktifkan kompatibilitas untuk nama cmdlet lama.
Untuk menginstal modul Az Azure PowerShell, ikuti langkah-langkah berikut:
- Rekomendasi: Hapus instalan modul AzureRM. Pastikan Anda menghapus semua versi AzureRM yang terinstal, bukan hanya versi terbaru.
- Instal modul Az
Mengaktifkan alias kompatibilitas AzureRM
Penting
Hanya aktifkan mode kompatibilitas jika Anda telah menghapus instalan semua versi AzureRM. Mengaktifkan mode kompatibilitas dengan cmdlet AzureRM yang masih tersedia dapat menyebabkan perilaku yang tidak dapat diprediksi. Lewati langkah ini jika Anda memutuskan untuk tidak menghapus instalan AzureRM, tetapi perhatikan bahwa setiap cmdlet AzureRM akan menggunakan modul yang lebih lama dan tidak memanggil cmdlet Az.
Dengan dihapusnya instalan AzureRM dan skrip Anda berfungsi dengan versi AzureRM terbaru, langkah selanjutnya adalah mengaktifkan mode kompatibilitas untuk modul Az. Kompatibilitas diaktifkan dengan perintah:
Enable-AzureRmAlias -Scope CurrentUser
Alias memungkinkan kemampuan untuk menggunakan nama cmdlet lama dengan modul Az yang terinstal. Alias ini ditulis ke profil pengguna untuk cakupan yang dipilih. Jika tidak ada profil pengguna, satu akan dibuat.
Peringatan
Anda dapat menggunakan -Scope
yang berbeda untuk perintah ini, tetapi tidak disarankan. Alias ditulis ke profil pengguna untuk cakupan yang dipilih, jadi tetap aktifkan dengan cakupan paling terbatas. Mengaktifkan alias di seluruh sistem juga dapat menyebabkan masalah bagi pengguna lain yang menginstal AzureRM di cakupan lokal mereka.
Setelah mode alias diaktifkan, jalankan skrip Anda lagi untuk mengonfirmasi alias masih berfungsi seperti yang diharapkan.
Mengubah nama modul dan cmdlet
Umumnya, nama modul telah diubah agar AzureRM
dan Azure
menjadi Az
, dan begitu juga untuk cmdlet.
Misalnya, modul AzureRM.Compute
telah diganti namanya menjadi Az.Compute
.
New-AzureRMVM
telah menjadi New-AzVM
, and Get-AzureStorageBlob
kini menjadi Get-AzStorageBlob
.
Terdapat pengecualian pada perubahan penamaan ini yang harus Anda perhatikan. Beberapa modul diganti namanya atau digabungkan menjadi modul yang ada tanpa mempengaruhi akhiran cmdlet-nya, selain mengubah AzureRM
atau Azure
menjadi Az
. Jika tidak, akhiran cmdlet lengkap diubah untuk mencerminkan nama modul baru.
AzureRM module | Modul Az | Akhiran cmdlet berubah? |
---|---|---|
AzureRM.Profile | Az.Accounts | Ya |
AzureRM.Insights | Az.Monitor | Ya |
AzureRM.Tags | Az.Resources | Tidak |
AzureRM.UsageAggregates | Az.Billing | Tidak |
AzureRM.Consumption | Az.Billing | Tidak |
Ringkasan
Dengan mengikuti langkah-langkah ini, Anda dapat memperbarui semua skrip yang ada untuk menggunakan modul baru. Jika memiliki pertanyaan atau masalah dengan langkah-langkah ini yang membuat migrasi Anda sulit, harap beri komentar artikel ini sehingga kami dapat mempermudah petunjuknya.
Perubahan yang dapat menyebabkan gangguan untuk Az 1.0.0
Dokumen ini memberikan informasi detail tentang perubahan antara AzureRM 6.x dan modul Az baru, versi 1.x dan yang lebih baru. Daftar isi akan membantu memandu Anda menyelesaikan jalur migrasi penuh, termasuk perubahan khusus modul yang dapat memengaruhi skrip Anda.
Perubahan umum yang dapat menyebabkan gangguan
Bagian ini merinci perubahan umum yang dapat menyebabkan gangguan yang merupakan bagian dari desain ulang modul Az.
Perubahan awalan kata benda cmdlet
Di modul AzureRM, cmdlet menggunakan AzureRM
atau Azure
sebagai awalan kata benda. Az menyederhanakan dan menormalkan nama cmdlet, sehingga semua cmdlet menggunakan 'Az' sebagai awalan kata benda cmdlet-nya. Contohnya:
Get-AzureRMVM
Get-AzureKeyVaultSecret
Telah berubah menjadi:
Get-AzVM
Get-AzKeyVaultSecret
Untuk mempermudah transisi ke nama cmdlet baru ini, Az memperkenalkan dua cmdlet baru, Enable-AzureRmAlias dan Disable-AzureRmAlias.
Enable-AzureRmAlias
membuat alias untuk nama cmdlet lama di AzureRM yang memetakan ke nama cmdlet Az yang lebih baru. Menggunakan argumen -Scope
dengan Enable-AzureRmAlias
memungkinkan Anda untuk memilih di mana alias diaktifkan.
Misalnya, skrip berikut di AzureRM:
#Requires -Modules AzureRM.Storage
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob
Dapat dijalankan dengan perubahan minimal menggunakan Enable-AzureRmAlias
:
#Requires -Modules Az.Storage
Enable-AzureRmAlias -Scope Process
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob
Menjalankan Enable-AzureRmAlias -Scope CurrentUser
akan mengaktifkan alias untuk semua sesi PowerShell yang Anda buka, sehingga setelah menjalankan cmdlet ini, skrip seperti ini tidak perlu diubah sama sekali:
Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob
Untuk detail lengkap tentang penggunaan cmdlet alias, lihat referensi Enable-AzureRmAlias.
Saat Anda siap menonaktifkan alias, Disable-AzureRmAlias
akan menghapus alias yang dibuat. Untuk detail selengkapnya, lihat referensi Disable-AzureRmAlias.
Penting
Saat menonaktifkan alias, pastikan bahwa alias dinonaktifkan untuk semua cakupan yang memiliki alias aktif.
Perubahan nama modul
Nama modul telah berubah dari AzureRM.*
ke Az.*
, kecuali untuk modul berikut:
AzureRM module | Modul Az |
---|---|
Azure.Storage | 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 |
Perubahan dalam nama modul berarti bahwa setiap skrip yang menggunakan #Requires
atau Import-Module
untuk memuat modul tertentu harus diubah untuk menggunakan modul baru sebagai gantinya. Untuk modul yang akhiran cmdlet-nya tidak berubah, ini berarti meskipun nama modul telah berubah, akhiran yang menunjukkan ruang operasi masih belum.
Memigrasi memerlukan dan mengimpor pernyataan modul
Skrip yang menggunakan #Requires
atau Import-Module
untuk mendeklarasikan dependensi pada modul AzureRM harus diperbarui untuk menggunakan nama modul baru. Contohnya:
#Requires -Module AzureRM.Compute
Harus diubah menjadi:
#Requires -Module Az.Compute
Untuk Import-Module
:
Import-Module -Name AzureRM.Compute
Harus diubah menjadi:
Import-Module -Name Az.Compute
Migrasi pemanggilan cmdlet yang memenuhi syarat
Skrip yang menggunakan pemanggilan cmdlet yang memenuhi syarat modul, seperti:
AzureRM.Compute\Get-AzureRmVM
Harus diubah untuk menggunakan modul dan nama cmdlet baru:
Az.Compute\Get-AzVM
Memigrasi dependensi manifes modul
Modul yang menunjukkan dependensi pada modul AzureRM melalui file manifes modul (.psd1) harus memperbarui nama modul di bagian RequiredModules
:
RequiredModules = @(@{ModuleName="AzureRM.Profile"; ModuleVersion="5.8.2"})
Harus diubah menjadi:
RequiredModules = @(@{ModuleName="Az.Accounts"; ModuleVersion="1.0.0"})
Modul yang dihapus
Modul-modul berikut telah dihapus:
AzureRM.Backup
AzureRM.Compute.ManagedService
AzureRM.Scheduler
Alat untuk layanan ini tidak lagi didukung secara aktif. Pelanggan disarankan untuk pindah ke layanan alternatif segera setelah sesuai.
Windows PowerShell 5.1 and .NET 4.7.2
Menggunakan Az dengan PowerShell 5.1 untuk Windows memerlukan penginstalan .NET Framework 4.7.2. Menggunakan PowerShell Core 6.x atau yang lebih baru tidak memerlukan .NET Framework.
Penghapusan sementara masuk pengguna menggunakan PSCredential
Karena perubahan alur autentikasi untuk .NET Standard, kami untuk sementara menghapus pengguna yang masuk melalui PSCredential. Kemampuan ini akan diperkenalkan kembali dalam rilis 1/15/2019 untuk PowerShell 5.1 untuk Windows. Ini dibahas secara detail dalam masalah GitHub ini.
Masuk kode perangkat default sebagai ganti perintah browser web
Karena perubahan dalam alur autentikasi untuk .NET Standar, kami menggunakan masuk perangkat sebagai alur masuk default selama masuk interaktif. Masuk berbasis browser web akan diperkenalkan kembali untuk PowerShell 5.1 untuk Windows sebagai default dalam rilis 1/15/2019. Pada saat itu, pengguna akan dapat memilih masuk perangkat menggunakan parameter Beralih.
Perubahan modul yang dapat menyebabkan gangguan
Bagian ini merinci perubahan spesifik yang dapat menyebabkan gangguan untuk modul dan cmdlet individual.
Az.ApiManagement (previously AzureRM.ApiManagement)
- Menghapus cmdlet berikut:
- New-AzureRmApiManagementHostnameConfiguration
- Set-AzureRmApiManagementHostnames
- Update-AzureRmApiManagementDeployment
- Import-AzureRmApiManagementHostnameCertificate
- Gunakan cmdlet Set-AzApiMenagement untuk mengatur properti ini sebagai gantinya
- Menghapus properti berikut:
- Properti yang dihapus
PortalHostnameConfiguration
,ProxyHostnameConfiguration
,ManagementHostnameConfiguration
, danScmHostnameConfiguration
pada jenisPsApiManagementHostnameConfiguration
dariPsApiManagementContext
. Sebagai gantinya gunakanPortalCustomHostnameConfiguration
,ProxyCustomHostnameConfiguration
,ManagementCustomHostnameConfiguration
, danScmCustomHostnameConfiguration
pada jenisPsApiManagementCustomHostNameConfiguration
. - Menghapus properti
StaticIPs
dari PsApiManagementContext. Properti telah dibagi menjadiPublicIPAddresses
danPrivateIPAddresses
. - Menghapus properti
Location
yang diperlukan dari cmdlet New-AzureApiManagementVirtualNetwork.
- Properti yang dihapus
Az.Billing (previously AzureRM.Billing, AzureRM.Consumption, and AzureRM.UsageAggregates)
- Parameter
InvoiceName
telah dihapus dari cmdletGet-AzConsumptionUsageDetail
. Skrip perlu menggunakan parameter identitas lain untuk faktur.
Az.Compute (previously AzureRM.Compute)
-
IdentityIds
dihapus dari propertiIdentity
di objekPSVirtualMachine
danPSVirtualMachineScaleSet
Skrip tidak boleh lagi menggunakan nilai kolom ini untuk membuat keputusan pemrosesan. - Jenis properti
InstanceView
objekPSVirtualMachineScaleSetVM
diubah dariVirtualMachineInstanceView
menjadiVirtualMachineScaleSetVMInstanceView
- properti
AutoOSUpgradePolicy
danAutomaticOSUpgrade
dihapus dari propertiUpgradePolicy
- Jenis properti
Sku
objekPSSnapshotUpdate
diubah dariDiskSku
menjadiSnapshotSku
-
VmScaleSetVMParameterSet
dihapus dari cmdletAdd-AzVMDataDisk
, Anda tidak dapat lagi menambahkan disk data secara individual ke mesin virtual ScaleSet.
Az.KeyVault (previously AzureRM.KeyVault)
- Properti
PurgeDisabled
telah dihapus dari objekPSKeyVaultKeyAttributes
,PSKeyVaultKeyIdentityItem
, danPSKeyVaultSecretAttributes
Skrip seharusnya tidak lagi merujuk propertiPurgeDisabled
untuk membuat keputusan pemrosesan.
Az.Monitor (previously AzureRM.Insights)
Menghapus parameter
Categories
danTimegrains
nama jamak sebagai ganti nama parameter tunggal dari cmdletSet-AzDiagnosticSetting
Skrip menggunakanSet-AzureRmDiagnosticSetting -Timegrains PT1M -Categories Category1, Category2
Harus diubah menjadi
Set-AzDiagnosticSetting -Timegrain PT1M -Category Category1, Category2
Az.Network (previously AzureRM.Network)
- Menghapus parameter
ResourceId
yang tidak digunakan lagi dari cmdletGet-AzServiceEndpointPolicyDefinition
- Menghapus properti
EnableVmProtection
yang tidak digunakan lagi dari objekPSVirtualNetwork
- Menghapus cmdlet
Set-AzVirtualNetworkGatewayVpnClientConfig
yang tidak digunakan lagi
Skrip seharusnya tidak lagi membuat keputusan pemrosesan berdasarkan nilai-nilai di kolom ini.
Az.Resources (previously AzureRM.Resources)
Menghapus parameter
Sku
dari cmdletNew/Set-AzPolicyAssignment
Menghapus parameter
Password
dari cmdletNew-AzADServicePrincipal
danNew-AzADSpCredential
Kata sandi dibuat secara otomatis, skrip yang menyediakan kata sandinya:New-AzAdSpCredential -ObjectId aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb -Password $secPassword
Harus diubah untuk mengambil kata sandi dari output:
$credential = New-AzAdSpCredential -ObjectId aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb $secPassword = $credential.Secret
Az.Storage (previously Azure.Storage and AzureRM.Storage)
- Untuk mendukung pembuatan konteks penyimpanan Oauth hanya dengan nama akun penyimpanan, kumpulan parameter default telah diubah menjadi
OAuthParameterSet
- Contoh:
$ctx = New-AzureStorageContext -StorageAccountName $accountName
- Contoh:
- Parameter
Location
telah menjadi wajib dalam cmdletGet-AzStorageUsage
- Metode API Storage kini menggunakan Pola Asinkron Berbasis Tugas (TAP), bukan panggilan API sinkron. Contoh berikut menunjukkan perintah asinkron baru:
Snapshot blob
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
Membagikan rekam jepret
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
Membatalkan penghapusan blob yang dihapus sementara
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()
Set tingkat blob
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 (previously AzureRM.Websites)
- Menghapus properti yang tidak digunakan lagi dari objek
PSAppServicePlan
,PSCertificate
,PSCloningInfo
, danPSSite
Langkah berikutnya
- Pelajari selengkapnya tentang PowerShell di Azure Stack Hub, lihat Memulai PowerShell di Azure Stack Hub
- Instal modul PowerShell Az, lihat Menginstal modul PowerShell Az untuk Azure Stack Hub