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>]
说明
cmdlet Install-Module
从联机存储库获取符合指定条件的一个或多个模块。 cmdlet 验证搜索结果是否为有效模块,并将模块文件夹复制到安装位置。 安装后不会自动导入已安装的模块。
可以根据指定模块的最低版本、最大版本和确切版本来筛选安装的模块。
如果安装的模块具有相同的名称或版本,或者包含现有模块中的命令,则会显示警告消息。 确认要安装模块并重写警告后,请使用 -Force
和 -AllowClobber
参数。 根据存储库设置,可能需要回答模块安装继续的提示。
采用模块版本号的参数需要格式为版本号的字符串。
- 标准版本号的格式
x.y.z
为,其中 x、y 和 z 为数字 - 预发行版的格式
x.y.z-<prerelease_label>
为 ,<prerelease_label>
其中 是分配给该版本的任意字符串。
这些示例使用 PowerShell 库 作为唯一已注册的存储库。 Get-PSRepository
显示已注册的存储库。 如果有多个已注册的存储库,请使用 -Repository
参数指定存储库的名称。
示例
示例 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
将 PowerShell 库 中显示的版本用于 RequiredVersion 参数的值。
参数
-AcceptLicense
对于需要许可证的模块, AcceptLicense 会在安装期间自动接受许可协议。 有关详细信息,请参阅 需要接受许可证的模块。
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-AllowClobber
替代有关计算机上现有命令的安装冲突的警告消息。
覆盖与模块安装的命令同名的现有命令。
AllowClobber 和 Force 可以在命令中 Install-Module
一起使用。
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-AllowPrerelease
允许安装标记为预发布的模块。
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Confirm
在运行 Install-Module
cmdlet 之前,会提示你进行确认。
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
安装一个模块并覆盖有关模块安装冲突的警告消息。 如果计算机上已存在同名的模块, 则 Force 允许安装多个版本。 如果存在具有相同名称和版本的现有模块, 则 Force 将覆盖该版本。 Force 和 AllowClobber 可以在命令中 Install-Module
一起使用。
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
指定要安装的单个模块的最大版本。 安装的版本必须小于或等于 MaximumVersion。 如果要安装多个模块,则不能使用 MaximumVersion。 不能在同一Install-Module
命令中使用 MaximumVersion 和 RequiredVersion。
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-MinimumVersion
指定要安装的单个模块的最低版本。 安装的版本必须大于或等于 MinimumVersion。 如果有较新版本的模块可用,则会安装较新版本。 如果要安装多个模块,则不能使用 MinimumVersion。
不能在同一Install-Module
命令中使用 MinimumVersion 和 RequiredVersion。
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
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Proxy
为请求指定代理服务器,而不是直接连接到 Internet 资源。
Type: | Uri |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-ProxyCredential
指定有权使用 Proxy 参数指定的代理服务器的用户帐户。
Type: | PSCredential |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Repository
使用 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
指定要安装的单个模块的确切版本。 如果存储库中没有指定版本的匹配项,则显示错误。 如果要安装多个模块,则无法使用 RequiredVersion。 RequiredVersion 不能与 MinimumVersion 或 MaximumVersion 在同一Install-Module
命令中使用。
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Scope
指定模块的安装范围。 此参数的可接受值为 AllUsers 和 CurrentUser。
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
允许安装计算机上已存在的较新版本的模块。 例如,当现有模块由受信任的发布者进行数字签名,但新版本未由受信任的发布者进行数字签名时。
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
创建 PSRepositoryItemInfo 对象,这些对象可通过管道 Install-Module
向下发送到 。
String[]
PSObject[]
输出
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 参数并指定以逗号分隔的模块名称数组。 如果指定多个模块名称,则无法使用 MinimumVersion、 MaximumVersion 或 RequiredVersion。 Find-Module
创建 PSRepositoryItemInfo 对象,这些对象可通过管道 Install-Module
向下发送到 。 管道是指定要在单个命令中安装的多个模块的另一种方法。
默认情况下, AllUsers 作用域的模块安装在 中 $env:ProgramFiles\PowerShell\Modules
。 在安装 PowerShell Desired State Configuration (DSC) 资源时,默认值可防止混淆。
模块安装失败,如果文件夹中没有 .psm1
.psd1
、 或 .dll
同名,则无法导入该模块。 使用 Force 参数安装模块。
如果现有模块的版本与 Name 参数指定的名称匹配,并且不使用 MinimumVersion 或 RequiredVersion 参数, Install-Module
则以无提示方式继续,但不安装该模块。
如果现有模块的版本大于 MinimumVersion 参数的值或等于 RequiredVersion 参数的值, Install-Module
则以无提示方式继续,但不安装该模块。
如果现有模块与 MinimumVersion 或 RequiredVersion 参数指定的值不匹配,则 Install-Module
命令中将发生错误。 例如,如果现有已安装模块的版本低于 MinimumVersion 值或不等于 RequiredVersion 值。
Install-Module
还安装模块发布者所需的任何依赖模块。
发布者在模块清单中列出所需的模块及其版本。