共用方式為


Install-Module

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

語法

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

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

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

範例

範例 1:尋找並安裝模組

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

Find-Module -Name PowerShellGet | Install-Module

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

範例 2:依名稱安裝模組

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

Install-Module -Name PowerShellGet

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

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

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

Install-Module -Name PowerShellGet -MinimumVersion 2.0.1

會使用 Name 參數來指定 powerShellGet 模組 MinimumVersion 參數指定從存放庫下載並安裝版本 2.0.1。 因為版本 2.0.4 可用,因此會針對所有用戶下載並安裝該版本。

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

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

Install-Module -Name PowerShellGet -RequiredVersion 2.0.0

會使用 Name 參數來指定 powerShellGet 模組 RequiredVersion 參數會指定下載並安裝所有使用者 2.0.0 版本。

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

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

Install-Module -Name PowerShellGet -Scope CurrentUser

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

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

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

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

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

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

此範例示範如何安裝模組的特定發行前版本。 Find-Module Cmdlet 可用來在 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 會在安裝期間自動接受許可協定。 如需詳細資訊,請參閱 模組要求接受授權

類型:SwitchParameter
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-AllowClobber

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

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

類型:SwitchParameter
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-AllowPrerelease

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

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

類型:SwitchParameter
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-Confirm

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

類型:SwitchParameter
別名:cf
Position:Named
預設值:False
必要:False
接受管線輸入:False
接受萬用字元:False

-Credential

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

類型:PSCredential
Position:Named
預設值:None
必要:False
接受管線輸入:True
接受萬用字元:False

-Force

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

類型:SwitchParameter
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-InputObject

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

類型:PSObject[]
Position:0
預設值:None
必要:True
接受管線輸入:True
接受萬用字元:False

-MaximumVersion

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

類型:String
Position:Named
預設值:None
必要:False
接受管線輸入:True
接受萬用字元:False

-MinimumVersion

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

類型:String
Position:Named
預設值:None
必要:False
接受管線輸入:True
接受萬用字元:False

-Name

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

類型:String[]
Position:0
預設值:None
必要:True
接受管線輸入:True
接受萬用字元:False

-PassThru

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

類型:SwitchParameter
Position:Named
預設值:False
必要:False
接受管線輸入:False
接受萬用字元:False

-Proxy

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

類型:Uri
Position:Named
預設值:None
必要:False
接受管線輸入:True
接受萬用字元:False

-ProxyCredential

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

類型:PSCredential
Position:Named
預設值:None
必要:False
接受管線輸入:True
接受萬用字元:False

-Repository

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

類型:String[]
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-RequiredVersion

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

類型:String
Position:Named
預設值:None
必要:False
接受管線輸入:True
接受萬用字元: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
類型:String
接受的值:CurrentUser, AllUsers
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-SkipPublisherCheck

Proxy Cmdlet 會先將此參數轉換成 AuthenticodeCheck,再呼叫 Install-PSResource

類型:SwitchParameter
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-WhatIf

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

類型:SwitchParameter
別名:wi
Position:Named
預設值:False
必要:False
接受管線輸入:False
接受萬用字元:False

輸入

PSRepositoryItemInfo

Find-Module 會建立 PSRepositoryItemInfo 物件,以便將管線向下傳送至 Install-Module

String[]

PSObject[]

String

PSCredential

Uri

輸出

Microsoft.PowerShell.Commands.PSRepositoryItemInfo

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

備註

PowerShell 包含下列 Install-Module別名:

  • 所有平臺:
    • inmo

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

重要

自 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 會建立 PSRepositoryItemInfo 物件,以便將管線向下傳送至 Install-Module。 管線是指定要在單一命令中安裝的多個模組的另一種方式。

根據預設,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 也會安裝模組發行者所指定的任何相依模組。 發行者會在模組指令清單中列出所需的模組及其版本。