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

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

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

Azure Stack Hub 用の PowerShell Resource Modules (AzureRM) モジュールをインストールする場合は、「Azure Stack Hub 用の PowerShell AzureRM モジュールをインストールする」を参照してください。

重要

Azure Resource Modules モジュールには新しいリリースがない可能性があります。 Azure Resource Modules モジュールは、重要な修正についてのみサポートされています。 今後は、Azure Stack Hub 用の Az リリースのみになります。

"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 モジュールは、インターネットに接続されている、部分的に接続されている、または接続が切断されているシナリオでインストールできます。 この記事では、これらのシナリオの詳細な手順について説明します。

1.前提条件を確認する

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

2.Linux および Mac の前提条件

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

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

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

  1. 既存の 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 セッションを終了してから、上のスクリプトをもう一度実行してください。

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

4.接続済みの場合: インターネット接続を使用したインストール

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 セッションを開きます。

  1. PowerShell セッションから次のコマンドを実行します。

    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
    
    Install-Module -Name Az.BootStrapper -Force
    Install-AzProfile -Profile 2020-09-01-hybrid -Force
    Install-Module -Name AzureStack -RequiredVersion 2.2.0 
    
  1. PowerShell セッションから次のコマンドを実行します。

    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
    
    Install-Module -Name Az.BootStrapper -Force
    Install-AzProfile -Profile 2020-09-01-hybrid -Force
    Install-Module -Name AzureStack -RequiredVersion 2.1.1
    

警告

Windows 用の PowerShell 5.1 で Azure Resource Manager (AzureRM) と Az の両方のモジュールを同時にインストールすることはできません。 Azure Resource Manager をシステムで引き続き使用できるようにしておく必要がある場合は、PowerShell Core 6.x 以降用の Az モジュールをインストールします。 そのためには、PowerShell Core 6.x 以降をインストールしてから、PowerShell Core ターミナルで以下の手順に従ってください。

5.切断状態の場合: インターネット接続を使用しないインストール

接続が切断されたシナリオでは、まずインターネット接続が確立されたマシンに 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 のインストール

Azure Stack Hub 2108 以降。

Azure Resource Manager または Az モジュールのいずれかを使用できます。 Azure Resource Manager については、PowerShell AzureRM モジュールのインストールに関する記事の手順を参照してください。 次のコードでは、信頼できるオンライン リポジトリ https://www.powershellgallery.com/ からのモジュールが保存されます。

[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
Save-Package -ProviderName NuGet -Source https://www.powershellgallery.com/api/v2 -Name AzureStack -Path $savedModulesPath -Force -RequiredVersion 2.2.0

Azure Stack Hub 2102。

Azure Resource Manager または Az モジュールのいずれかを使用できます。 Azure Resource Manager については、PowerShell AzureRM モジュールのインストールに関する記事の手順を参照してください。 次のコードでは、信頼できるオンライン リポジトリ https://www.powershellgallery.com/ からのモジュールが保存されます。

[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
Save-Package -ProviderName NuGet -Source https://www.powershellgallery.com/api/v2 -Name AzureStack -Path $savedModulesPath -Force -RequiredVersion 2.1.1

Note

インターネット接続のないマシンでは、次のコマンドレットを実行して利用統計情報の収集を無効にすることをお勧めします。 利用統計情報の収集を無効にしないと、コマンドレットのパフォーマンスが低下することがあります。 これは、インターネット接続のないマシンのみ該当します。

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

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

 Install-Module -Name Az -Repository $RepoName -RequiredVersion 2.0.1 -Scope AllUsers
 # 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

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

 Install-Module -Name Az -Repository $RepoName -RequiredVersion 2.0.1 -Scope AllUsers

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

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

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

6.プロキシ サーバーを使用するように 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
    

7.Az モジュールを使用する

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

Az への AzurRM スクリプトの移動、および 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 プロファイルでは機能しません。
  • 修復: 仮想マシン スケール セットを作成するためのテンプレートを使用します。 GitHub リポジトリ AzureStack-QuickStart-Templates/101-vmss-windows-vm でサンプルの Azure Stack Hub Resource Manager テンプレートを見つけ、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 Az モジュールです。PowerShell AzureRM モジュールは、これによって置き換えられています。 Az モジュールがインストールされている場合に、AzureRM コマンドを呼び出すスクリプトを実行しようとすると、スクリプトによってエラーがスローされます。 または、AzureRM モジュールがインストールされている場合に、Az コマンドを呼び出すスクリプトを実行しようとすると、スクリプトによってエラーがスローされます。

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

  • 発生頻度: 共通

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

  • 適用先: Azure Active Directory (Azure AD) を使用した 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
      

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

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

      $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 のみをインストールします。
  • 発生頻度: 共通

次のステップ