Install-Module

從存放庫下載一或多個模組,並將其安裝在本機電腦上。

Syntax

Install-Module
       [-Name] <String[]>
       [-MinimumVersion <String>]
       [-MaximumVersion <String>]
       [-RequiredVersion <String>]
       [-Repository <String[]>]
       [-Credential <PSCredential>]
       [-Scope <String>]
       [-Proxy <Uri>]
       [-ProxyCredential <PSCredential>]
       [-AllowClobber]
       [-SkipPublisherCheck]
       [-Force]
       [-AllowPrerelease]
       [-AcceptLicense]
       [-PassThru]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Install-Module
       [-InputObject] <PSObject[]>
       [-Credential <PSCredential>]
       [-Scope <String>]
       [-Proxy <Uri>]
       [-ProxyCredential <PSCredential>]
       [-AllowClobber]
       [-SkipPublisherCheck]
       [-Force]
       [-AcceptLicense]
       [-PassThru]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]

Description

Cmdlet Install-Module 會從線上存放庫取得符合指定準則的一或多個模組。 Cmdlet 會確認搜尋結果是有效的模組,並將模組資料夾複製到安裝位置。 安裝後的模組不會自動匯入。 您可以根據指定模組的最小、最大值和確切版本來篩選已安裝的模組。

這是Microsoft.PowerShell.PSResourceGet中 Cmdlet 的 Proxy Cmdlet Get-InstalledPSResource 。 如需詳細資訊,請參閱 Install-PSResource

範例

範例 1:尋找並安裝模組

此範例會在存放庫中尋找模組,並安裝模組。

Find-Module -Name PowerShellGet | Install-Module

Find-Module 使用 Name 參數來指定 PowerShellGet 模組。 根據預設,系統會從存放庫下載最新版的模組。 物件會從管線向下傳送至 Install-Module Cmdlet。 Install-Module 會在 中安裝所有使用者的 $env:ProgramFiles\PowerShell\Modules 模組。

範例 2:依名稱安裝模組

在此範例中,已安裝最新版的 PowerShellGet 模組。

Install-Module -Name PowerShellGet

Install-Module 使用 Name 參數來指定 PowerShellGet 模組。 根據預設,模組的最新版本會從存放庫下載並安裝。

範例 3:使用模組的最低版本安裝模組

在此範例中,會安裝 最低版本的 PowerShellGet 模組。 MinimumVersion參數會指定應該安裝的模組最低版本。 如果模組的較新版本可供使用,則會針對所有使用者下載並安裝該版本。

Install-Module -Name PowerShellGet -MinimumVersion 2.0.1

Install-Module 使用 Name 參數來指定 PowerShellGet 模組。 MinimumVersion參數會指定從存放庫下載2.0.1版並安裝。 因為 2.0.4 版可供使用,所以所有使用者都會下載並安裝該版本。

範例 4:安裝特定版本的模組

在此範例中,會安裝特定版本的 PowerShellGet 模組。

Install-Module -Name PowerShellGet -RequiredVersion 2.0.0

Install-Module 使用 Name 參數來指定 PowerShellGet 模組。 RequiredVersion參數會指定所有使用者下載並安裝2.0.0版。

範例 5:僅針對目前使用者安裝模組

此範例只會下載並安裝最新版的模組,僅適用于目前的使用者。

Install-Module -Name PowerShellGet -Scope CurrentUser

Install-Module 使用 Name 參數來指定 PowerShellGet 模組。 Install-Module會將最新版本的PowerShellGet下載並安裝到目前使用者的目錄中。 $HOME\Documents\PowerShell\Modules

範例 6:安裝模組的最新發行前版本

此範例示範當該版本是發行前版本時,如何安裝最新版的模組。 安裝發行前版本需要 AllowPrerelease 參數。

Install-Module -Name Microsoft.PowerShell.Crescendo -AllowPrerelease

您可以使用此方法取得可用的最新版本。 如果最新版本不是發行前版本,您會收到模組的最新穩定版本。

範例 7:安裝模組的特定發行前版本

此範例示範如何安裝模組的特定發行前版本。 Cmdlet Find-Module 可用來在PowerShell 資源庫中尋找模組的發行前版本。

發行前版本的格式 <version_number>-<prerelease_label> 為 。

Find-Module PSReadLine -AllVersions -AllowPrerelease | Select-Object -First 5

Version        Name             Repository       Description
-------        ----             ----------       -----------
2.2.6          PSReadLine       PSGallery        Great command line editing in the PowerS…
2.2.5          PSReadLine       PSGallery        Great command line editing in the PowerS…
2.2.4-beta1    PSReadLine       PSGallery        Great command line editing in the PowerS…
2.2.3          PSReadLine       PSGallery        Great command line editing in the PowerS…
2.2.2          PSReadLine       PSGallery        Great command line editing in the PowerS…

Install-Module -Name PSReadLine -RequiredVersion 2.2.4-beta1 -AllowPrerelease

針對RequiredVersion參數的值,請使用 PowerShell 資源庫 中顯示的版本。

參數

-AcceptLicense

對於需要授權的模組, AcceptLicense 會在安裝期間自動接受授權合約。 如需詳細資訊,請參閱 需要接受授權的模組

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-AllowClobber

覆寫有關電腦上現有命令之安裝衝突的警告訊息。 覆寫與模組所安裝命令同名的現有命令。 AllowClobberForce 可以在命令中 Install-Module 一起使用。

Proxy Cmdlet 會將此參數的值轉換為 Cmdlet 的 Install-PSResourceNoClobber參數。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-AllowPrerelease

可讓您安裝標示為發行前版本的模組。

Proxy Cmdlet 會將此參數對應至 的 Install-PSResource發行前版本參數。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Confirm

在執行 Cmdlet 之前 Install-Module ,會提示您確認。

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Credential

指定有權安裝指定套件提供者或來源之模組的使用者帳戶。

Type:PSCredential
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Force

Proxy Cmdlet 會忽略此參數,因為它不受 支援 Install-PSResource

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

用於管線輸入。 如果直接提供給 InputObject的值,就會擲回錯誤。 使用管線傳遞具有 InputObject 參數的物件。

Type:PSObject[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-MaximumVersion

Proxy Cmdlet 會使用此參數的值來建立 NuGet 版本搜尋字串,以搭配 的 Install-PSResourceVersion參數使用。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-MinimumVersion

Proxy Cmdlet 會使用此參數的值來建立 NuGet 版本搜尋字串,以搭配 的 Install-PSResourceVersion參數使用。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Name

指定要從線上資源庫安裝的模組確切名稱。 接受以逗號分隔的模組名稱清單。 模組名稱必須符合存放庫中的模組名稱。 用來 Find-Module 取得模組名稱的清單。

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-PassThru

使用 PassThru 參數時, Install-Module 輸出模組的 PSRepositoryItemInfo 物件。 這是您從 Find-Module Cmdlet 取得的相同資訊。

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Proxy

Proxy Cmdlet 會忽略此參數,因為它不受 支援 Install-PSResource

Type:Uri
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-ProxyCredential

Proxy Cmdlet 會忽略此參數,因為它不受 支援 Install-PSResource

Type:PSCredential
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Repository

使用 存放庫 參數來指定要從中下載並安裝模組的存放庫名稱。 註冊多個存放庫時使用。 在 命令中 Install-Module 指定已註冊存放庫的名稱。 若要註冊存放庫,請使用 Register-PSRepository 。 若要顯示已註冊的存放庫,請使用 Get-PSRepository

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-RequiredVersion

Proxy Cmdlet 會使用此參數的值來建立 NuGet 版本搜尋字串,以搭配 的 Install-PSResourceVersion參數使用。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Scope

指定模組的安裝範圍。 此參數可接受的值為 AllUsersCurrentUser

AllUsers範圍會將模組安裝在電腦所有使用者可存取的位置:

$env:ProgramFiles\PowerShell\Modules

CurrentUser會將模組安裝在只有電腦目前使用者可存取的位置。 例如:

$HOME\Documents\PowerShell\Modules

未定義 範圍 時,會根據 PowerShellGet 版本設定預設值。

  • 在 PowerShellGet 1.x 版本中,預設值為 AllUsers,需要提高安裝許可權。
  • 針對 PowerShell 6 或更高版本中的 PowerShellGet 2.0.0 版和更新版本:
    • 預設值為 CurrentUser,不需要提高許可權進行安裝。
    • 如果您在提升許可權的會話中執行,預設值為 AllUsers
Type:String
Accepted values:CurrentUser, AllUsers
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SkipPublisherCheck

Proxy Cmdlet 會在呼叫 Install-PSResource 之前,將此參數轉換成AthenticodeCheck

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

顯示執行命令時 Install-Module 會發生什麼情況。 不會執行此 Cmdlet。

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

輸入

PSRepositoryItemInfo

Find-Module會建立可將管線向下傳送至 Install-ModulePSRepositoryItemInfo物件。

String[]

PSObject[]

String

PSCredential

Uri

輸出

Microsoft.PowerShell.Commands.PSRepositoryItemInfo

使用 PassThru 參數時, Install-Module 會輸出模組的 PSRepositoryItemInfo 物件。 這是您從 Cmdlet 取得的 Find-Module 相同資訊。

備註

PowerShell 包含下列的 Install-Module 別名:

  • 所有平台:
    • inmo

Install-Module 會在 Windows 7 或 Windows 2008 R2 和更新版本的 Windows 5.0 或更新版本上執行。

重要

從 2020 年 4 月起,PowerShell 資源庫已不再支援傳輸層安全性 (TLS) 1.0 和 1.1 版。 如果您未使用 TLS 1.2 或更高版本,當您嘗試存取PowerShell 資源庫時,將會收到錯誤。 使用下列命令來確保您使用的是 TLS 1.2:

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

如需詳細資訊,請參閱 PowerShell 部落格中的公告 \(英文\)。

作為安全性最佳做法,請先評估模組的程式碼,再第一次執行任何 Cmdlet 或函式。 為了避免執行包含惡意程式碼的模組,安裝後的模組不會自動匯入。

如果 Name 參數指定的模組名稱不存在於存放庫中,則 Install-Module 傳回錯誤。

若要安裝多個模組,請使用 Name 參數,並指定以逗號分隔的模組名稱陣列。 如果您指定多個模組名稱,則無法使用 MinimumVersionMaximumVersionRequiredVersionFind-Module會建立可將管線向下傳送至 Install-ModulePSRepositoryItemInfo物件。 管線是指定要在單一命令中安裝多個模組的另一種方式。

根據預設, AllUsers 範圍的模組會安裝在 中 $env:ProgramFiles\PowerShell\Modules 。 當您安裝 PowerShell Desired State Configuration (DSC) 資源時,預設值會避免混淆。

模組安裝失敗,如果模組安裝沒有 .psm1.psd1.dll 資料夾中的相同名稱,則無法匯入。 使用 Force 參數來安裝模組。

如果現有的模組版本符合 Name 參數所指定的名稱,且未使用 MinimumVersionRequiredVersion 參數, Install-Module 則以無訊息方式繼續,但不會安裝模組。

如果現有的模組版本大於 MinimumVersion 參數的值,或等於 RequiredVersion 參數的值, Install-Module 則以無訊息方式繼續,但不會安裝模組。

如果現有的模組不符合 MinimumVersionRequiredVersion 參數所指定的值,命令中 Install-Module 就會發生錯誤。 例如,如果現有已安裝模組的版本低於 MinimumVersion 值,或不等於 RequiredVersion 值。

Install-Module 也會安裝模組發行者所需的任何相依模組。 發行者會列出模組資訊清單中所需的模組及其版本。