安裝適用於 Azure Stack Hub 的 PowerShell AzureRM 模組

Azure PowerShell Azure Resource Manager (AzureRM) 提供了一組 Cmdlet,其會使用 Azure Resource Manager 模型來管理 Azure Stack Hub 資源。

重要

您所造訪的是過期版本的 Azure Stack Hub PowerShell 網頁。 所有 Azure Resource Manager (AzureRM) PowerShell 模組的版本都已過時,但我們依然會支援。 未來 Azure Stack Hub 組建將不再更新 AzureRM 模組。 Az 模組將用於組建 2002 和更新版本。 AzureRM 模組不支援 2020-09-01-hybrid 設定檔。

現在建議用來與 Azure 和 Azure Stack Hub 互動的 PowerShell 模組是 Az PowerShell 模組。 若要開始使用 Az PowerShell 模組,請參閱安裝適用於 Azure Stack Hub 的 PowerShell Az 預覽模組。 若要了解如何移轉到 Az PowerShell 模組, 請參閱在 Azure Stack Hub 中從 AzureRM 移轉至 Azure PowerShell Az。 如需有關在全域 Azure 中採用的 Az 模組增強功能詳細資訊,請參閱 Azure Az PowerShell 模組簡介

您也需要使用 API 設定檔指定與 Azure Stack Hub 資源提供者相容的端點。

API 設定檔提供一個管理 Azure 與 Azure Stack Hub 之間版本差異的方式。 API 版本設定檔是一組具有特定 API 版本的 Azure Resource Manager PowerShell 模組。 每個雲端平台都有一組支援的 API 版本設定檔。 例如,Azure Stack Hub 支援特定的設定檔版本,像是 2019-03-01-hybrid。 當您安裝設定檔時,會安裝與所指定設定檔對應的 Azure Resource Manager PowerShell 模組。

您可以在已連線至網際網路、部分連線或已中斷連線的情況下,安裝與 Azure Stack Hub 相容的 PowerShell 模組。 本文會引導您執行這些案例的詳細指示。

您也可以在 Docker 容器中針對 Azure Stack Hub 執行 Azure Resource Manager 模組。 如需相關指示,請參閱使用 Docker 針對 Azure Stack Hub 執行 PowerShell

1.驗證您的必要條件

在開始使用 Azure Stack Hub 與 PowerShell Azure Resource Manager 模組之前,必須具備下列必要條件:

  • PowerShell 5.1 版
    若要檢查您的版本,請執行 $PSVersionTable.PSVersion 並比較主要版本。 如果您沒有 PowerShell 5.1,請遵循安裝 Windows PowerShell

    注意

    PowerShell 5.1 需要 Windows 機器。

  • 在已提高權限的命令提示字元中執行 PowerShell

  • PowerShell 資源庫存取權
    您需要 PowerShell 資源庫 的存取權。 此資源庫是 PowerShell 內容的中央存放庫。 PowerShellGet 模組包含用於探索、安裝、更新及發佈 PowerShell 成品的 Cmdlet。 這些成品的範例包括 PowerShell 資源庫和其他私人存放庫中的模組、DSC 資源、角色功能和指令碼。 如果您是在已中斷連線的情況下使用 PowerShell,您必須從可連線至網際網路的電腦擷取資源,然後將它們儲存在已中斷連線電腦可存取的位置中。

驗證 PSGallery 是否已註冊為存放褲。

注意

此步驟需要存取網際網路。

開啟已提升權限的 PowerShell 提示字元,然後執行下列 Cmdlet:

Install-module -Name PowerShellGet -Force
Import-Module -Name PackageManagement -ErrorAction Stop
Get-PSRepository -Name "PSGallery"

如果存放庫未註冊,請開啟提升權限的 PowerShell 工作階段,並執行下列命令:

Register-PSRepository -Default
Set-PSRepository -Name "PSGallery" -InstallationPolicy Trusted

3.解除安裝現有的 Azure Stack Hub PowerShell 模組版本

在安裝必要版本之前,請確定將任何先前安裝的 Azure Stack Hub Azure Resource Manager PowerShell 模組解除安裝。 使用下列兩種方法之一來解除安裝模組:

  1. 若要將現有的 Azure Resource Manager 和 Az PowerShell 模組解除安裝,請關閉所有作用中的 PowerShell 工作階段,然後執行下列 Cmdlet:

    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. C:\Program Files\WindowsPowerShell\ModulesC:\Users\{yourusername}\Documents\WindowsPowerShell\Modules 資料夾中,刪除開頭為 AzureAzAzs. 的所有資料夾。 刪除這些資料夾會移除任何現有的 PowerShell 模組。

4.已連線:在具備網際網路連線能力的情況下安裝適用於 Azure Stack Hub 的 PowerShell

您所需的 API 版本設定檔和 Azure Stack Hub PowerShell 模組,將取決於您正在執行的 Azure Stack Hub 版本。

安裝 Azure Stack Hub PowerShell

執行下列 PowerShell 指令碼,在開發工作站上安裝這些模組:

針對 Azure Stack Hub 2002 或更新版本:

您也可以使用 AzureRm 模組或 Az 預覽模組。 若要使用 Az 模組,就需要 Azure Stack Hub 2002 或更新版本。

若要使用 Az 預覽模組,請遵循安裝 PowerShell Az 模組中的指示來進行。

# Install the AzureRM.BootStrapper module. Select Yes when prompted to install NuGet
Install-Module -Name AzureRM.BootStrapper

# Install and import the API Version Profile required by Azure Stack Hub into the current PowerShell session.
Use-AzureRmProfile -Profile 2019-03-01-hybrid -Force
Install-Module -Name AzureStack -RequiredVersion 1.8.3 

針對 Azure Stack Hub 1910:

# Install the AzureRM.BootStrapper module. Select Yes when prompted to install NuGet
Install-Module -Name AzureRM.BootStrapper

# Install and import the API Version Profile required by Azure Stack Hub into the current PowerShell session.
Use-AzureRmProfile -Profile 2019-03-01-hybrid -Force
Install-Module -Name AzureStack -RequiredVersion 1.8.0

注意

  • Azure Stack Hub 模組 1.8.0 版是重大變更版本。 請參閱版本資訊以取得詳細資料。

針對 Azure Stack Hub 1908 或更早版本:

# Install the AzureRM.BootStrapper module. Select Yes when prompted to install NuGet
Install-Module -Name AzureRM.BootStrapper

# Install and import the API Version Profile required by Azure Stack Hub into the current PowerShell session.
Use-AzureRmProfile -Profile 2019-03-01-hybrid -Force
Install-Module -Name AzureStack -RequiredVersion 1.7.2

注意

Azure Stack Hub 模組 1.7.2 版是重大變更版本。 若要從 Azure Stack Hub 1.6.0 遷移,請參閱移轉指南

確認 PowerShell 的安裝

執行下列命令來確認安裝:

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

如果安裝成功,輸出中會顯示 AzureRmAzureStack 模組。

5.已中斷連線:在沒有網際網路連線的情況下安裝 PowerShell

在中斷連線的情況下,您必須先將 PowerShell 模組下載至具有網際網路連線能力的電腦。 然後,將它們傳輸至 Azure Stack 開發套件 (ASDK) 進行安裝。

登入具有網際網路連線能力的電腦,然後根據您的 Azure Stack Hub 版本,使用下列指令碼下載 Azure Resource Manager 和 Azure Stack Hub 套件。

安裝有五個步驟:

  1. 將 Azure Stack Hub PowerShell 安裝至已連線的電腦。
  2. 啟用其他儲存體功能。
  3. 將 PowerShell 套件傳輸到已中斷連線的工作站。
  4. 在中斷連線的工作站中,手動啟動 NuGet 提供者。
  5. 確認 PowerShell 的安裝。

安裝 Azure Stack Hub PowerShell

Azure Stack Hub 2002 或更新版本。

您可以使用 Azure Resource Manager 或 Az 預覽模組。 若為 Az 模組,請參閱安裝 PowerShell Az 模組中的指示。


Install-module -Name PowerShellGet -Force 
Import-Module -Name PackageManagement -ErrorAction Stop

$Path = "<Path that is used to save the packages>"
Save-Package -ProviderName NuGet -Source https://www.powershellgallery.com/api/v2 -Name AzureRM -Path $Path -Force -RequiredVersion 2.5.0
Save-Package -ProviderName NuGet -Source https://www.powershellgallery.com/api/v2 -Name AzureStack -Path $Path -Force -RequiredVersion 1.8.3

Azure Stack Hub 1910。

Install-module -Name PowerShellGet -Force 
Import-Module -Name PackageManagement -ErrorAction Stop

$Path = "<Path that is used to save the packages>"
Save-Package -ProviderName NuGet -Source https://www.powershellgallery.com/api/v2 -Name AzureRM -Path $Path -Force -RequiredVersion 2.5.0
Save-Package -ProviderName NuGet -Source https://www.powershellgallery.com/api/v2 -Name AzureStack -Path $Path -Force -RequiredVersion 1.8.0

注意

Azure Stack Hub 模組 1.8.0 版是重大變更版本。 請參閱版本資訊以取得詳細資料。

針對 Azure Stack Hub 1908 或更早版本:

Install-module -Name PowerShellGet -Force 
Import-Module -Name PackageManagement -ErrorAction Stop

$Path = "<Path that is used to save the packages>"
Save-Package -ProviderName NuGet -Source https://www.powershellgallery.com/api/v2 -Name AzureRM -Path $Path -Force -RequiredVersion 2.5.0
Save-Package -ProviderName NuGet -Source https://www.powershellgallery.com/api/v2 -Name AzureStack -Path $Path -Force -RequiredVersion 1.7.2

注意

Azure Stack Hub 模組版本 1.7.1 是一個重大變更。 若要從 Azure Stack Hub 1.6.0 移轉,請參閱移轉指南

注意

在沒有網際網路連線的電腦上,建議您執行下列 Cmdlet 以停用遙測資料收集。 若未停用遙測資料收集,可能會發生 Cmldet 效能降低的狀況。 不具網際網路連線的電腦才有可能發生此狀況

Disable-AzureRmDataCollection

將您的套件新增至您的工作站

  1. 將下載的套件複製到 USB 裝置。

  2. 登入已中斷連線的工作站,並將套件從 USB 裝置複製到工作站上的位置。

  3. 在中斷連線的工作站中,手動啟動 NuGet 提供者。 如需相關指示,請參閱在未連線至網際網路的電腦上手動啟動載入 NuGet 提供者

  4. 註冊此位置做為預設存放庫,並從此存放庫安裝 Azure Resource Manager 與 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"
    
    Register-PSRepository -Name $RepoName -SourceLocation $SourceLocation -InstallationPolicy Trusted
    
    Install-Module -Name AzureRM -Repository $RepoName
    
    Install-Module -Name AzureStack -Repository $RepoName
    

確認 PowerShell 的安裝

執行下列命令來確認安裝:

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

6.設定 PowerShell 使用 Proxy 伺服器

在需要 Proxy 伺服器才能存取網際網路的情況下,您要先將 PowerShell 設定成使用現有的 Proxy 伺服器:

  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
    

已知問題

Method get_SerializationSettings 錯誤

  • 原因:PowerShell Az 模組與 PowerShell Azure Resource Manager 模組不相容。

    下列錯誤指出已在相同的工作階段中載入 Azure Resource Manager 模組和 Az 模組:

    >  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.
    
  • 補救:解除安裝衝突的模組。

    如果您想要使用 Azure Resource Manager 模組,請將 Az 模組解除安裝。 或者,如果您想要使用 Az 模組,請將 Azure Resource Manager 解除安裝。 關閉您的 PowerShell 工作階段,並將 Az 或 Azure Resource Manager 模組解除安裝。

    您可以在解除安裝現有的 Azure Stack Hub PowerShell 模組版本中找到指示。

NewAzureRMADServicePrincipal 和 NewAzureRMAdApplication 擲回的錯誤

  • 適用:使用Microsoft Entra識別碼的 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

  • 補救:您可以透過兩種方式來解決這項限制。

    • 您必須使用屬於目錄租用戶子網域的服務主體名稱。 例如,如果目錄為 contoso.onmicrosoft.com,服務主體名稱的格式必須是 <foo>.contoso.onmicrosoft.com。 使用下列 Cmdlet:

      NewAzureRMADServicePrincipal -Role Owner -DisplayName <foo>.contoso.onmicrosoft.com
      

      如需有關身分識別以及搭配 Azure Stack Hub 使用服務主體的詳細資訊,請參閱 Azure Stack Hub 的識別提供者概觀

    • 建立提供有效 IdentifierUri Microsoft Entra應用程式,然後使用下列 Cmdlet 建立應用程式關聯的服務主體:

      $app=NewAzureRMAdApplication -DisplayName 'newapp' -IdentifierUris http://anything.contoso.onmicrosoft.com
      NewAzureRMADServicePrincipal -Role Owner -ApplicationId $app.ApplicationId
      
  • 發生次數:通用

後續步驟