다음을 통해 공유


Az 1.0.0의 호환성이 손상되는 변경

이 문서에서는 AzureRM 6.x와 새 Az 모듈 버전 1.x 이상 간의 변경 내용에 대한 자세한 정보를 제공합니다. 목차는 스크립트에 영향을 줄 수 있는 모듈별 변경을 포함하여 전체 마이그레이션 경로를 안내합니다.

마이그레이션을 AzureRM에서 Az로 시작하는 방법에 대한 일반적인 추천 사항은 AzureRM에서 Az로 마이그레이션 시작을 참조하세요.

Important

Az 1.0.0과 Az 2.0.0 간에도 호환성이 손상되는 변경이 있습니다. 이 가이드에 따라 AzureRM에서 Az로 업데이트한 후에 Az 2.0.0 호환성이 손상되는 변경을 참조하여 추가로 변경할 필요가 있는지 확인하세요.

목차

일반적인 주요 변경 내용

이 섹션에서는 Az 모듈 재설계의 일부인 일반적인 호환성이 손상되는 변경에 대해 자세히 설명합니다.

Cmdlet 명사 접두사 변경

AzureRM 모듈에서 cmdlet은 AzureRM 또는 Azure를 명사 접두사로 사용했습니다. Az는 cmdlet 이름을 간소화하고 정규화하여 모든 cmdlet에서 'Az'를 해당 cmdlet 명사 접두사로 사용합니다. 예시:

Get-AzureRMVM
Get-AzureKeyVaultSecret

다음으로 변경되었습니다.

Get-AzVM
Get-AzKeyVaultSecret

이러한 새 cmdlet 이름으로 더 간단하게 전환할 수 있도록 Az에서 Enable-AzureRmAliasDisable-AzureRmAlias라는 두 개의 새 cmdlet을 도입했습니다. Enable-AzureRmAlias는 최신 Az cmdlet 이름에 매핑되는 AzureRM의 이전 cmdlet 이름에 대한 별칭을 에 만듭니다. Enable-AzureRmAlias에서 -Scope 인수를 사용하면 별칭을 사용하도록 설정되는 위치를 선택할 수 있습니다.

예를 들어, AzureRM의 다음 스크립트가 있습니다.

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

Enable-AzureRmAlias를 사용하여 최소한의 변경으로 실행할 수 있습니다.

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

Enable-AzureRmAlias -Scope CurrentUser를 실행하면 열려 있는 모든 PowerShell 세션에 별칭을 사용하도록 설정되므로 이 cmdlet을 실행한 후 이와 같은 스크립트를 전혀 변경할 필요가 없습니다.

Get-AzureRmStorageAccount | Get-AzureStorageContainer | Get-AzureStorageBlob

별칭 cmdlet을 사용하는 방법에 대한 자세한 내용은 Enable-AzureRmAlias 참조를 참조하세요.

별칭을 사용하지 않도록 설정할 준비가 되면 Disable-AzureRmAlias에서 만들어진 별칭을 제거합니다. 자세한 내용은 Disable-AzureRmAlias 참조를 참조하세요.

Important

별칭을 사용하지 않도록 설정하는 경우 별칭을 사용하도록 설정된 모든 범위에 대해 사용하지 않도록 설정해야 합니다.

모듈 이름 변경

다음 모듈을 제외하고 모듈 이름이 AzureRM.*에서 Az.*로 변경되었습니다.

AzureRM 모듈 Az 모듈
Azure.Storage Az.Storage
Azure.AnalysisServices Az.AnalysisServices
AzureRM.Profile Az.Accounts
AzureRM.Insights Az.Monitor
AzureRM.DataFactories Az.DataFactory
AzureRM.DataFactoryV2 Az.DataFactory
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

모듈 이름이 변경되면 #Requires 또는 Import-Module을 사용하여 특정 모듈을 로드하는 스크립트는 대신 새 모듈을 사용하도록 변경되어야 합니다. cmdlet 접미사가 변경되지 않은 모듈의 경우 이는 모듈 이름이 변경되었지만 작업 공간을 나타내는 접미사가 변경되지 않았음 을 의미합니다.

#Requires 및 Import-Module 문 마이그레이션

#Requires 또는 Import-Module을 사용하여 AzureRM 모듈에 대한 종속성을 선언하는 스크립트는 새 모듈 이름을 사용하도록 업데이트해야 합니다. 예시:

#Requires -Module AzureRM.Compute

다음으로 변경되어야 합니다.

#Requires -Module Az.Compute

Import-Module의 경우:

Import-Module -Name AzureRM.Compute

다음으로 변경되어야 합니다.

Import-Module -Name Az.Compute

Cmdlet 정규화 호출 마이그레이션

다음과 같이 모듈에서 정규화된 cmdlet 호출을 사용하는 스크립트는

AzureRM.Compute\Get-AzureRmVM

새 모듈 및 cmdlet 이름을 사용하도록 변경되어야 합니다.

Az.Compute\Get-AzVM

모듈 매니페스트 종속성 마이그레이션

모듈 매니페스트 파일(.psd1)을 통해 AzureRM 모듈에 대한 종속성을 나타내는 모듈은 RequiredModules 섹션에서 모듈 이름을 업데이트해야 합니다

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

다음으로 변경되어야 합니다.

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

제거된 모듈

다음 모듈이 제거되었습니다.

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

이러한 서비스를 위한 도구는 더 이상 적극적으로 지원되지 않습니다. 편리한 대체 서비스로 이동하는 것이 좋습니다.

Windows PowerShell 5.1 및 .NET 4.7.2

Windows용 PowerShell 5.1에서 Az를 사용하려면 .NET Framework 4.7.2를 설치해야 합니다. PowerShell Core 6.x 이상을 사용하는 경우 .NET Framework가 필요하지 않습니다.

PSCredential을 사용하여 사용자 로그인 임시 제거

.NET 표준의 인증 흐름이 변경되어 PSCredential을 통한 사용자 로그인이 일시적으로 제거됩니다. 이 기능은 Windows용 PowerShell 5.1에 대한 2019년 1월 15일 릴리스에서 다시 도입됩니다. 이는 이 GitHub 문제에서 자세히 설명하고 있습니다.

웹 브라우저 프롬프트 대신 기본 디바이스 코드 로그인

.NET 표준의 인증 흐름이 변경되어 대화식 로그인 중에 기본 로그인 흐름으로 디바이스 로그인을 사용합니다. 웹 브라우저 기반 로그인은 Windows용 PowerShell 5.1에 대한 2019년 1월 15일 릴리스에서 기본적으로 다시 도입됩니다. 이때 사용자는 스위치 매개 변수를 사용하여 디바이스 로그인을 선택할 수 있습니다.

모듈의 호환성이 손상되는 변경

이 섹션에서는 개별 모듈 및 cmdlet에 대한 특정 호환성이 손상되는 변경에 대해 자세히 설명합니다.

Az.ApiManagement(이전에는 AzureRM.ApiManagement)

  • 다음 cmdlet이 제거되었습니다.
    • New-AzureRmApiManagementHostnameConfiguration
    • Set-AzureRmApiManagementHostnames
    • Update-AzureRmApiManagementDeployment
    • Import-AzureRmApiManagementHostnameCertificate
    • 대신 Set-AzApiManagement를 사용하여 이러한 속성을 설정합니다.
  • 다음 속성이 제거되었습니다.
    • PsApiManagementContext에서 PsApiManagementHostnameConfiguration 형식의 PortalHostnameConfiguration, ProxyHostnameConfiguration, ManagementHostnameConfiguration, ScmHostnameConfiguration 속성을 제거했습니다. 대신 PsApiManagementCustomHostNameConfiguration 형식의 PortalCustomHostnameConfiguration, ProxyCustomHostnameConfiguration, ManagementCustomHostnameConfiguration, ScmCustomHostnameConfiguration을 사용합니다.
    • PsApiManagementContext에서 StaticIPs속성을 제거했습니다. 해당 속성은 PublicIPAddresses, PrivateIPAddresses로 분할되었습니다.
    • 필수 속성 Location을 New-AzureApiManagementVirtualNetwork cmdlet에서 제거했습니다.

Az.Billing(이전에는 AzureRM.Billing, AzureRM.Consumption, 및 AzureRM.UsageAggregates)

  • InvoiceName 매개 변수가 Get-AzConsumptionUsageDetail cmdlet에서 제거되었습니다. 스크립트는 청구서에 대한 다른 ID 매개 변수를 사용해야 합니다.

Az.CognitiveServices(이전에는 AzureRM.CognitiveServices)

  • Get-AzCognitiveServicesAccountSkus cmdlet에서 GetSkusWithAccountParamSetName 매개 변수 집합을 제거했습니다. ResourceGroupName 및 계정 이름을 사용하는 대신 계정 형식 및 위치별로 SKU를 가져와야 합니다.

Az.Compute(이전에는 AzureRM.Compute)

  • PSVirtualMachinePSVirtualMachineScaleSet 객체의 Identity 속성에서 IdentityIds가 제거되었습니다. 스크립트는 더 이상 이 필드의 값을 사용하여 처리 결정을 내려서는 안됩니다.
  • PSVirtualMachineScaleSetVM 개체의 InstanceView 속성의 형식이 VirtualMachineInstanceView에서 VirtualMachineScaleSetVMInstanceView로 변경되었습니다.
  • UpgradePolicy 속성에서 AutoOSUpgradePolicyAutomaticOSUpgrade 속성이 제거되었습니다.
  • PSSnapshotUpdate 개체의 Sku 속성의 형식이 DiskSku에서 SnapshotSku로 변경되었습니다.
  • VmScaleSetVMParameterSetAdd-AzVMDataDisk cmdlet에서 제거되어, 더 이상 ScaleSet VM에 개별적으로 데이터 디스크를 추가할 수 없습니다.

Az.DataFactory(이전에는 AzureRM.DataFactories 및 AzureRM.DataFactoryV2)

  • GatewayName 매개 변수가 New-AzDataFactoryEncryptValue cmdlet에서 필수 항목이 되었습니다.
  • New-AzDataFactoryGatewayKey cmdlet이 제거됨
  • Get-AzDataFactoryV2ActivityRun cmdlet에서 LinkedServiceName 매개 변수가 제거되었습니다. 스크립트는 더 이상 이 필드의 값을 사용하여 처리 결정을 내려서는 안됩니다.

Az.DataLakeAnalytics(이전에는 AzureRM.DataLakeAnalytics)

  • 사용되지 않는 cmdlet 제거: New-AzDataLakeAnalyticsCatalogSecret, Remove-AzDataLakeAnalyticsCatalogSecret, Set-AzDataLakeAnalyticsCatalogSecret

Az.DataLakeStore(이전에는 AzureRM.DataLakeStore)

  • 다음 cmdlet의 Encoding 매개 변수는 FileSystemCmdletProviderEncoding 형식에서 System.Text.Encoding 형식으로 변경되었습니다. 이 변경은 인코딩 값 StringOem을 제거합니다. 다른 모든 이전 인코딩 값은 유지됩니다.

    • New-AzureRmDataLakeStoreItem
    • Add-AzureRmDataLakeStoreItemContent
    • Get-AzureRmDataLakeStoreItemContent
  • 사용되지 않는 Tags 속성 별칭을 New-AzDataLakeStoreAccountSet-AzDataLakeStoreAccount cmdlet에서 제거함

    다음을 사용하는 스크립트

    New-AzureRMDataLakeStoreAccount -Tags @{TagName="TagValue"}
    

    다음과 같이 변경되어야 합니다.

    New-AzDataLakeStoreAccount -Tag @{TagName="TagValue"}
    
  • PSDataLakeStoreAccountBasic 개체에서 사용되지 않는 속성 Identity, EncryptionState, EncryptionProvisioningState, EncryptionConfig, FirewallState, FirewallRules, VirtualNetworkRules, TrustedIdProviderState, TrustedIdProviders, DefaultGroup, NewTier, CurrentTier, FirewallAllowAzureIps을 제거했습니다. Get-AzDataLakeStoreAccount에서 반환된 PSDatalakeStoreAccount를 사용하는 모든 스크립트는 이러한 속성을 참조하지 않아야 합니다.

Az.KeyVault(이전에는 AzureRM.KeyVault)

  • PSKeyVaultKeyAttributes, PSKeyVaultKeyIdentityItemPSKeyVaultSecretAttributes 개체에서 PurgeDisabled 속성이 제거되었습니다. 스크립트는 처리 결정을 내리기 위해 PurgeDisabled 속성을 더 이상 참조하지 않아야 합니다.

Az.Media(이전에는 AzureRM.Media)

  • 다음을 사용하여 New-AzMediaService cmdlet에서 사용되지 않는 Tags 속성 별칭을 제거합니다.

    New-AzureRMMediaService -Tags @{TagName="TagValue"}
    

    다음과 같이 변경되어야 합니다.

    New-AzMediaService -Tag @{TagName="TagValue"}
    

Az.Monitor(이전에는 AzureRM.Insights)

  • Set-AzDiagnosticSetting cmdlet 스크립트에서 다음을 사용하여 단일 매개 변수 이름을 위해 복수 이름 CategoriesTimegrains 매개 변수를 제거했습니다.

    Set-AzureRmDiagnosticSetting -Timegrains PT1M -Categories Category1, Category2
    

    다음과 같이 변경되어야 합니다.

    Set-AzDiagnosticSetting -Timegrain PT1M -Category Category1, Category2
    

Az.Network(이전에는 AzureRM.Network)

  • 사용되지 않는 매개 변수 ResourceIdGet-AzServiceEndpointPolicyDefinition cmdlet에서 제거
  • PSVirtualNetwork 개체에서 사용되지 않는 속성 EnableVmProtection을 제거했습니다.
  • 사용되지 않는 cmdlet 제거: Set-AzVirtualNetworkGatewayVpnClientConfig

스크립트는 더 이상 이 필드의 값에 따라 처리하도록 결정하지 않아야 합니다.

Az.OperationalInsights(이전에는 AzureRM.OperationalInsights)

  • Get-AzOperationalInsightsDataSource에 설정된 기본 매개 변수가 제거되고 ByWorkspaceNameByKind가 기본 매개 변수 집합이 되었습니다.

    다음을 사용하여 데이터 원본을 나열하는 스크립트

    Get-AzureRmOperationalInsightsDataSource
    

    종류를 지정하도록 변경되어야 합니다.

    Get-AzOperationalInsightsDataSource -Kind AzureActivityLog
    

Az.RecoveryServices(이전에는 AzureRM.RecoveryServices, AzureRM.RecoveryServices.Backup, 및 AzureRM.RecoveryServices.SiteRecovery)

  • New/Set-AzRecoveryServicesAsrPolicy cmdlet에서 Encryption 매개 변수를 제거했습니다.
  • TargetStorageAccountName 매개 변수는 이제 Restore-AzRecoveryServicesBackupItem cmdlet의 관리 디스크 복원에 필수 항목입니다.
  • Restore-AzRecoveryServicesBackupItem cmdlet에서 StorageAccountName, StorageAccountResourceGroupName 매개 변수 제거
  • Get-AzRecoveryServicesBackupContainer cmdlet에서 Name 매개 변수 제거

Az.Resources(이전에는 AzureRM.Resources)

  • New/Set-AzPolicyAssignment cmdlet에서 Sku 매개 변수를 제거했습니다.

  • New-AzADServicePrincipalNew-AzADSpCredential cmdlet에서 Password 매개 변수를 제거했습니다. 암호는 자동으로 생성되며 암호를 제공하는 스크립트는 다음과 같습니다.

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

    출력에서 암호를 검색하도록 변경해야 합니다.

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

Az.ServiceFabric(이전에는 AzureRM.ServiceFabric)

  • 다음 cmdlet 반환 형식이 변경되었습니다.
    • ApplicationHealthPolicy 형식의 속성 ServiceTypeHealthPolicies가 제거되었습니다.
    • ClusterUpgradeDeltaHealthPolicy 형식의 속성 ApplicationHealthPolicies가 제거되었습니다.
    • ClusterUpgradePolicy 형식의 속성 OverrideUserUpgradePolicy가 제거되었습니다.
    • 이러한 변경 내용은 다음 cmdlet에 영향을 줍니다.
      • Add-AzServiceFabricClientCertificate
      • Add-AzServiceFabricClusterCertificate
      • Add-AzServiceFabricNode
      • Add-AzServiceFabricNodeType
      • Get-AzServiceFabricCluster
      • Remove-AzServiceFabricClientCertificate
      • Remove-AzServiceFabricClusterCertificate
      • Remove-AzServiceFabricNode
      • Remove-AzServiceFabricNodeType
      • Remove-AzServiceFabricSetting
      • Set-AzServiceFabricSetting
      • Set-AzServiceFabricUpgradeType
      • Update-AzServiceFabricDurability
      • Update-AzServiceFabricReliability

Az.Sql(이전에는 AzureRM.Sql)

  • Set-AzSqlDatabaseBackupLongTermRetentionPolicy cmdlet에서 State, ResourceId 매개 변수 제거
  • 사용되지 않는 cmdlet 제거: Get/Set-AzSqlServerBackupLongTermRetentionVault, Get/Start/Stop-AzSqlServerUpgrade, Get/Set-AzSqlDatabaseAuditingPolicy, Get/Set-AzSqlServerAuditingPolicy, Remove-AzSqlDatabaseAuditing, Remove-AzSqlServerAuditing
  • 사용되지 않는 매개 변수 CurrentGet-AzSqlDatabaseBackupLongTermRetentionPolicy cmdlet에서 제거
  • 사용되지 않는 매개 변수 DatabaseNameGet-AzSqlServerServiceObjective cmdlet에서 제거
  • 사용되지 않는 매개 변수 PrivilegedLoginSet-AzSqlDatabaseDataMaskingPolicy cmdlet에서 제거

Az.Storage(이전에는 Azure.Storage 및 AzureRM.Storage)

  • 스토리지 계정 이름만 사용하여 Oauth 스토리지 컨텍스트를 만들 수 있도록 기본 매개 변수 집합이 OAuthParameterSet으로 변경되었습니다.
    • 예: $ctx = New-AzureStorageContext -StorageAccountName $accountName
  • Location 매개 변수가 Get-AzStorageUsage cmdlet에서 필수 항목이 되었습니다.
  • 이제 Storage API 메서드는 동기 API 호출 대신 작업 기반 비동기 패턴(TAP)을 사용합니다. 다음 예제에서는 새 비동기 명령을 보여 줍니다.

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

스냅샷 공유

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

일시 삭제된 Blob 삭제 취소

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 계층 설정

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(이전에는 AzureRM.Websites)

  • 사용되지 않는 속성을 PSAppServicePlan, PSCertificate, PSCloningInfo, PSSite 개체에서 제거했습니다.