次の方法で共有


Azure Stack Hub 用の PowerShell Az モジュールと Azure Stack モジュールをインストールする

重要

Azure Resource Manager (AzureRM) PowerShell モジュールのすべてのバージョンが古く、サポート対象外です。 Az PowerShell モジュールは、Azure と Azure Stack Hub を操作するための推奨される PowerShell モジュールになりました。 この記事では、Az PowerShell モジュールの使用を開始する方法について説明します。 Az PowerShell モジュールに移行する方法については、「 Azure Stack Hub で AzureRM から Azure PowerShell Az に移行する」を参照してください。 グローバル Azure 全体で採用されている Az モジュールの機能の強化の詳細については、「 Azure Az PowerShell モジュールの概要」を参照してください。

Azure Stack Hub のバージョン AzureStack PowerShell のバージョン
2102 2.1.1
2108 2.2.0
2206 2.3.0
2301+ 2.4.0

AzureStack モジュールの詳細については、 PSGallery を参照してください。

この記事では、 PowerShellGet を使用して Azure PowerShell Az と互換性のある Azure Stack Hub 管理者モジュールをインストールする方法について説明します。 Az モジュールは、Windows、macOS、Linux プラットフォームにインストールできます。

Docker コンテナーで Azure Stack Hub 用の Az モジュールを実行することもできます。 手順については、「 Docker を使用して Azure Stack Hub の PowerShell を実行する」を参照してください。

API プロファイルを使用して、Azure Stack Hub リソース プロバイダーの互換性のあるエンドポイントを指定できます。 API プロファイルは、Azure と Azure Stack Hub のバージョンの違いを管理する方法を提供します。 API バージョン プロファイルは、特定の API バージョンを持つ Azure Resource Manager PowerShell モジュールのセットです。 各クラウド プラットフォームには、サポートされている一連の API バージョン プロファイルがあります。 たとえば、Azure Stack Hub では、 2020-09-01-hybrid などの特定のプロファイル バージョンがサポートされています。 プロファイルをインストールすると、指定したプロファイルに対応する Azure Resource Manager PowerShell モジュールがインストールされます。

Azure Stack Hub と互換性のある PowerShell Az モジュールは、インターネットに接続されている、部分的に接続されている、または切断されたシナリオにインストールできます。 この記事では、これらのシナリオの詳細な手順について説明します。

前提条件を確認する

Az モジュールは、更新プログラム 2002 以降と、現在のすべての修正プログラムがインストールされている Azure Stack Hub でサポートされています。 詳細については、 Azure Stack Hub のリリース ノート を参照してください。

Azure PowerShell Az モジュールは、Windows 上の PowerShell 5.1 以降、またはすべてのプラットフォームで PowerShell Core 6.x 以降で動作します。 オペレーティング システムで使用できる 最新バージョンの PowerShell Core をインストールする必要があります。 PowerShell Core で実行する場合、Azure PowerShell には他の要件はありません。

PowerShell のバージョンを確認するには、次のコマンドを実行します。

$PSVersionTable.PSVersion

Windows の前提条件

Windows 上の PowerShell 5.1 で Azure PowerShell を使用するには:

  1. 必要に応じて 、Windows PowerShell 5.1 に更新します。 Windows 10 を使用している場合は、PowerShell 5.1 が既にインストールされています。

  2. .NET Framework 4.7.2 以降をインストールします。

  3. 最新バージョンの PowerShellGet があることを確認します。 管理者特権のプロンプトから次のコマンドレットを実行します。

    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
    
    powershell -noprofile
    $PSVersionTable
    Uninstall-Module PowershellGet -AllVersions -Force -Confirm:$false
    Get-module PowershellGet
    Find-module PowershellGet
    Install-Module PowershellGet -MinimumVersion 2.2.3 -Force
    

Linux と Mac の前提条件

PowerShell Core 6.x 以降のバージョンが必要です。 手順については、 リンク 先を参照してください。

Azure Stack Hub PowerShell モジュールの既存のバージョンをアンインストールする

必要なバージョンをインストールする前に、以前にインストールした Azure Stack Hub Azure Resource Manager または Az PowerShell モジュールをアンインストールしてください。 次の 2 つの方法のいずれかを使用して、モジュールをアンインストールします。

  • 既存の Azure Resource Manager モジュールと Az PowerShell モジュールをアンインストールするには、アクティブなすべての PowerShell セッションを閉じて、次のコマンドレットを実行します。

    Get-Module -Name Azure* -ListAvailable | Uninstall-Module -Force -Verbose -ErrorAction Continue
    Get-Module -Name Azs.* -ListAvailable | Uninstall-Module -Force -Verbose -ErrorAction Continue
    Get-Module -Name Az.* -ListAvailable | Uninstall-Module -Force -Verbose -ErrorAction Continue
    

    "モジュールは既に使用中です" などのエラーが発生した場合は、モジュールを使用する PowerShell セッションを閉じて、これらのコマンドレットを再実行します。

  • Uninstall-Module成功しなかった場合は、AzureAzAzs で始まるすべてのフォルダーを$env:PSModulePathの場所から削除します。 Windows PowerShell の場合、場所は C:\Program Files\WindowsPowerShell\ModulesC:\Users\{yourusername}\Documents\WindowsPowerShell\Modules である可能性があります。 PowerShell Core の場合、場所としては C:\Program Files\PowerShell\7\Modules および C:\Users\{yourusername}\Documents\PowerShell\Modules が考えられます。 これらのフォルダーを削除すると、既存の Azure PowerShell モジュールが削除されます。

接続済み: インターネット接続を使用してインストールする

Azure Stack Az モジュールは、Windows マシン上の PowerShell 5.1 以降、または Linux または macOS プラットフォーム上の PowerShell 6.x 以上で動作します。 推奨されるインストール方法は、PowerShellGet コマンドレットを使用することです。 この方法は、サポートされているプラットフォームでも同じように動作します。

  1. PowerShell セッションから次のコマンドを実行して、PowerShellGet をバージョン 2.2.3 以降に更新します。

    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
    Install-Module PowerShellGet -MinimumVersion 2.2.3 -Force
    
  2. PowerShell セッションを閉じ、更新プログラムを有効にできるように新しい PowerShell セッションを開きます。

  3. 次のコマンドを実行して、Az モジュールをインストールします。

    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
    Install-Module -Name Az.BootStrapper -Force
    Install-AzProfile -Profile 2020-09-01-hybrid -Force
    
  4. AzureStack PowerShell モジュールをインストールします。

    Install-Module -Name AzureStack -RequiredVersion 2.4.0
    
    Install-Module -Name AzureStack -RequiredVersion 2.3.0
    
    Install-Module -Name AzureStack -RequiredVersion 2.2.0
    
    Install-Module -Name AzureStack -RequiredVersion 2.1.1
    

オフライン: インターネット接続なしでインストールする

切断されたシナリオでは、まず、インターネットに接続されているコンピューターに PowerShell モジュールをダウンロードします。 次に、インストールのために Azure Stack Development Kit (ASDK) に転送します。

インターネットに接続されたコンピューターにサインインし、次のスクリプトを使用して、Azure Stack Hub のバージョンに応じて Azure Resource Manager と Azure Stack Hub パッケージをダウンロードします。

インストールには、次の 5 つの手順があります。

  1. 接続されているマシンに Azure Stack Hub PowerShell をインストールします。
  2. 追加のストレージ機能を有効にします。
  3. PowerShell パッケージを切断されたワークステーションに転送します。
  4. 切断されたワークステーションで NuGet プロバイダーを手動でブートストラップします。
  5. PowerShell のインストールを確認します。

Azure Stack Hub PowerShell のインストール

  1. 次のコードは、 信頼できるオンライン リポジトリから Az モジュールをインストールします。

    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
    Install-module -Name PowerShellGet -MinimumVersion 2.2.3 -Force
    Import-Module -Name PackageManagement -ErrorAction Stop
    $savedModulesPath = "<Path that is used to save the packages>"
    Save-Package -ProviderName NuGet -Source https://www.powershellgallery.com/api/v2 -Name Az -Path $savedModulesPath -Force -RequiredVersion 2.0.1
    
  2. Az モジュールがインストールされたら、AzureStack モジュールのインストールに進みます。

    Save-Package -ProviderName NuGet -Source https://www.powershellgallery.com/api/v2 -Name AzureStack -Path $savedModulesPath -Force -RequiredVersion 2.4.0
    
    Save-Package -ProviderName NuGet -Source https://www.powershellgallery.com/api/v2 -Name AzureStack -Path $savedModulesPath -Force -RequiredVersion 2.3.0
    
    Save-Package -ProviderName NuGet -Source https://www.powershellgallery.com/api/v2 -Name AzureStack -Path $savedModulesPath -Force -RequiredVersion 2.2.0
    
    Save-Package -ProviderName NuGet -Source https://www.powershellgallery.com/api/v2 -Name AzureStack -Path $savedModulesPath -Force -RequiredVersion 2.1.1
    

インターネットに接続していないマシンでは、Disable-AzDataCollection コマンドレットを実行してテレメトリ データ収集を無効にすることをお勧めします。 そうしないと、コマンドレットのパフォーマンスが低下する可能性があります。 これは、インターネットに接続されていないマシンにのみ適用されます。

ワークステーションにパッケージを追加する

  1. ダウンロードしたパッケージを USB デバイスにコピーします。

  2. 切断されたワークステーションにサインインし、USB デバイスからワークステーション上の場所にパッケージをコピーします。

  3. 切断されたワークステーションで NuGet プロバイダーを手動でブートストラップします。 手順については、「 インターネットに接続されていないコンピューターで NuGet プロバイダーを手動でブートストラップする」を参照してください。

  4. この場所を既定のリポジトリとして登録し、このリポジトリから AzureRM モジュールと AzureStack モジュールをインストールします。

     # requires -Version 5
     # requires -RunAsAdministrator
     # requires -Module PowerShellGet
     # requires -Module PackageManagement
    
     $SourceLocation = "<Location on the development kit that contains the PowerShell packages>"
     $RepoName = "MyNuGetSource"
     [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
     Register-PSRepository -Name $RepoName -SourceLocation $SourceLocation -InstallationPolicy Trusted
    
  5. Az モジュールをインストールします。

     Install-Module -Name Az -Repository $RepoName -RequiredVersion 2.0.1 -Scope AllUsers
    
  6. AzureStack modulesL をインストールする

    Install-Module -Name AzureStack -Repository $RepoName -RequiredVersion 2.4.0 -Scope AllUsers
    
    Install-Module -Name AzureStack -Repository $RepoName -RequiredVersion 2.3.0 -Scope AllUsers
    
    Install-Module -Name AzureStack -Repository $RepoName -RequiredVersion 2.2.0 -Scope AllUsers
    
    Install-Module -Name AzureStack -Repository $RepoName -RequiredVersion 2.1.1 -Scope AllUsers
    

PowerShell のインストールを確認する

次のコマンドを実行して、インストールを確認します。

Get-Module -Name "Az*" -ListAvailable
Get-Module -Name "Azs*" -ListAvailable

プロキシ サーバーを使用するように PowerShell を構成する

プロキシ サーバーがインターネットにアクセスする必要があるシナリオでは、まず、既存のプロキシ サーバーを使用するように PowerShell を構成します。

  1. 管理者権限の PowerShell プロンプトを開きます。

  2. 次のコマンドを実行してください:

    #To use Windows credentials for proxy authentication
    [System.Net.WebRequest]::DefaultWebProxy.Credentials = [System.Net.CredentialCache]::DefaultCredentials
    
    #Alternatively, to prompt for separate credentials that can be used for #proxy authentication
    [System.Net.WebRequest]::DefaultWebProxy.Credentials = Get-Credential
    

Az モジュールを使用する

AzureRM モジュールに基づくコマンドレットとコード サンプルは引き続き使用できます。 ただし、モジュールとコマンドレットの名前を変更する必要があります。 モジュール名は、 AzureRM と Azure が Azになるように変更されました。コマンドレットの場合も同じです。 たとえば、 AzureRM.Compute モジュールの名前が Az.Compute に変更されました。 New-AzureRMVM New-AzVMされ、 Get-AzureStorageBlobGet-AzStorageBlobされました。

AzureRM スクリプトを Az に移動するための詳細な説明とガイダンス、および Azure Stack Hub の Az モジュールの破壊的変更に関する情報については、「 AzureRM から Azure PowerShell Az への移行」を参照してください。

既知の問題

Az モジュールをインストールすると、エラーがスローされる

  • 該当: この問題は 2002 以降に適用されます
  • 原因: モジュールをインストールすると、エラーが発生します。 エラー メッセージが始まります: Register-PacakgeSource : A parameter cannot be found that matches parameter name. 'PackageManagementProvider'. またはエラー メッセージに次のテキストが含まれている場合があります。 PackageManagement\Install-Package : Cannot convert value "2.0.1-preview" to type "System.Version". Error: "Input string was not in a correct format."
  • 修復: 同じセッションで次のコマンドレットを実行します。
    Install-Module PowershellGet -MinimumVersion 2.3.0 -Force
    セッションを閉じ、新しい管理者特権の PowerShell セッションを開始します。
  • 発生: 共通

Az モジュールのインストール時に、管理者権限が必要であるという誤ったエラーが発生する

  • 該当: この問題は 2002 以降に適用されます
  • 原因: 管理者特権でプロンプトを使ってモジュールをインストールすると、エラーが発生します。 エラーは Administrator rights required と表示されます。
  • 修復: セッションを閉じて、新しい管理者特権の PowerShell セッションを開始します。 既存の Az が存在しないことを確認します。 アカウント モジュールがセッションに読み込まれました。
  • 発生: 共通

2020-09-01-hybrid プロファイルを使用すると、コマンドレット New-AzVmss が失敗します。

  • 該当: この問題は、2020-09-01-hybrid プロファイルに適用されます。
  • 原因: コマンドレット New-AzVmss が 2020-09-01-hybrid プロファイルで動作しません。
  • 修復: 仮想マシン スケール セットを作成するためのテンプレートを使用します。 Azure Stack Hub Resource Manager テンプレートのサンプルは、GitHub リポジトリ の AzureStack-QuickStart-Templates/101-vmss-windows-vm にあり、 Visual Studio Code で Azure Stack Hub Resource Manager を使用する手順を見つけることができます。
  • 発生: 共通

PowerShell スクリプトの実行時にスローされるエラー

  • 該当: この問題は 2002 以降に適用されます。

  • 原因: Azure Stack Hub 固有のモジュールを使用してスクリプトまたは PowerShell コマンドを実行する場合は、モジュールでスクリプトまたはコマンドを使用できるようにする必要があります。 次のエラーが表示される場合があります。

    Method 'get_SerializationSettings' in type 'Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient' from assembly 'Microsoft.Azure.Commands.ResourceManager.Common, Version=4.0.0.0, 
    Culture=neutral, PublicKeyToken=31bf3856ad364e35' does not have an implementation.
    

    現在のモジュールは、PowerShell AzureRM モジュールを置き換えた PowerShell Az モジュールです。 Az モジュールがインストールされている状態で、AzureRM コマンドを呼び出すスクリプトを実行しようとすると、スクリプトはエラーを発生させます。 AzureRM モジュールがインストールされている状態で Az コマンドを呼び出すスクリプトを実行しようとすると、そのスクリプトはエラーを発生させます。

  • 修復: AzureRM モジュールをアンインストールし、Az モジュールをインストールします。 手順については、 Azure Stack Hub 用の PowerShell Az モジュールのインストールに関するページを参照してください。 Azure Stack Hub Tools を使用している場合は、Az ツールを使用します。 az ブランチからツール リポジトリを複製するか、 az ブランチから AzureStack-Tools をダウンロード します。 手順については、「GitHub から Azure Stack Hub ツールをダウンロードする」を参照してください。

  • 発生: 共通

New-AzADServicePrincipal と New-AzADApplication でスローされたエラー

  • 適用: Microsoft Entra ID を使用する Azure Stack 環境。

  • 原因: Azure Active Directory Graph では、Active Directory アプリケーションの IdentifierUri をディレクトリ内の検証済みドメインのサブドメインに制限する破壊的変更が導入されました。 変更前は、この制限はマルチテナント アプリにのみ適用されていました。 この制限は、シングル テナント アプリにも適用されます。 この変更により、次のエラーが発生します: Values of identifierUris property must use a verified domain of the organization or its subdomain' is displayed when running

  • 修復: この制限を回避する方法は 2 つあります。

    • ディレクトリ テナントのサブドメインであるサービス プリンシパル名を使用する必要があります。 たとえば、ディレクトリが contoso.onmicrosoft.comされている場合、サービス プリンシパル名は <foo>.contoso.onmicrosoft.com の形式である必要があります。 次のコマンドレットを使用します。

      New-AzADServicePrincipal -Role Owner -DisplayName <foo>.contoso.onmicrosoft.com
      

      ID と Azure Stack Hub でのサービス プリンシパルの使用の詳細については、「Azure Stack Hub の ID プロバイダーの概要」を参照してください。

    • 有効な IdentifierUri を提供する Microsoft Entra アプリを作成し、次のコマンドレットを使用してアプリを関連付けてサービス プリンシパルを作成します。

      $app=New-AzADApplication -DisplayName 'newapp' -IdentifierUris http://anything.contoso.onmicrosoft.com
      New-AzADServicePrincipal -Role Owner -ApplicationId $app.ApplicationId
      
  • 発生: 共通

エラー: "SharedTokenCacheCredential 認証に失敗しました"

  • 該当: この問題は、サポートされているすべてのリリースに適用されます。
  • 原因: Azure Stack Hub PowerShell モジュール バージョン 2.1.1 で複数のバージョンの AzAccounts がインストールされている場合、SharedTokenCacheCredential 認証に失敗したエラーがスローされます。
  • 修復: AzAccounts のすべてのバージョンを削除し、サポートされている AzAccounts バージョン 2.2.8 のみをインストールします。
  • 発生: 共通

次のステップ