Install-Module
从存储库下载一个或多个模块,并将其安装在本地计算机上。
语法
NameParameterSet (默认值)
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>]
InputObject
Install-Module
[-InputObject] <PSObject[]>
[-Credential <PSCredential>]
[-Scope <String>]
[-Proxy <Uri>]
[-ProxyCredential <PSCredential>]
[-AllowClobber]
[-SkipPublisherCheck]
[-Force]
[-AcceptLicense]
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
说明
该 Install-Module cmdlet 从联机存储库获取一个或多个满足指定条件的模块。 该 cmdlet 验证搜索结果是否为有效的模块,并将模块文件夹复制到安装位置。 安装后不会自动导入已安装的模块。
可以根据指定模块的最低版本、最大版本和确切版本筛选已安装的模块。
如果安装的模块具有相同的名称或版本,或包含现有模块中的命令,则会显示警告消息。 确认要安装模块并重写警告后,请使用 -Force 和 -AllowClobber 参数。 根据存储库设置,可能需要回答模块安装提示才能继续。
这些示例使用 PowerShell 库 作为唯一注册的存储库。
Get-PSRepository 显示已注册的存储库。 如果有多个已注册的存储库,请使用 -Repository 参数指定存储库的名称。
示例
示例 1:查找并安装模块
本示例在存储库中查找模块并安装该模块。
Find-Module -Name PowerShellGet | Install-Module
使用 Find-ModuleName 参数指定 PowerShellGet 模块。 默认情况下,从存储库下载模块的最新版本。 该对象将管道向下发送到 Install-Module cmdlet。
Install-Module 为所有用户 $env:ProgramFiles\PowerShell\Modules安装该模块。
示例 2:按名称安装模块
在此示例中,安装了最新版本的 PowerShellGet 模块。
Install-Module -Name PowerShellGet
使用 Install-ModuleName 参数指定 PowerShellGet 模块。 默认情况下,从存储库下载并安装模块的最新版本。
示例 3:使用其最低版本安装模块
在此示例中,已安装 PowerShellGet 模块的最低版本。 MinimumVersion 参数指定应安装的模块的最低版本。 如果模块的较新版本可用,则会为所有用户下载并安装该版本。
Install-Module -Name PowerShellGet -MinimumVersion 2.0.1
使用 Install-ModuleName 参数指定 PowerShellGet 模块。
MinimumVersion 参数指定从存储库下载并安装版本 2.0.1。 由于版本 2.0.4 可用,因此为所有用户下载并安装该版本。
示例 4:安装模块的特定版本
在此示例中,安装了 PowerShellGet 模块的特定版本。
Install-Module -Name PowerShellGet -RequiredVersion 2.0.0
使用 Install-ModuleName 参数指定 PowerShellGet 模块。
RequiredVersion 参数指定为所有用户下载并安装版本 2.0.0。
示例 5:仅为当前用户安装模块
此示例仅下载并安装最新版本的模块,仅适用于当前用户。
Install-Module -Name PowerShellGet -Scope CurrentUser
使用 Install-ModuleName 参数指定 PowerShellGet 模块。
Install-Module 将最新版本的 PowerShellGet 下载并安装到当前用户的目录中 $home\Documents\PowerShell\Modules。
参数
-AcceptLicense
对于需要许可证的模块, AcceptLicense 会在安装过程中自动接受许可协议。 有关详细信息,请参阅 需要接受许可证的模块。
参数属性
| 类型: | SwitchParameter |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
(All)
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-AllowClobber
重写有关计算机上现有命令的安装冲突的警告消息。
覆盖与模块安装的命令同名的现有命令。
AllowClobber 和 Force 可以在命令中 Install-Module 一起使用。
参数属性
| 类型: | SwitchParameter |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
(All)
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-AllowPrerelease
允许安装标记为预发行的模块。
参数属性
| 类型: | SwitchParameter |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
NameParameterSet
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-Confirm
在运行 Install-Module cmdlet 之前,提示你进行确认。
参数属性
| 类型: | SwitchParameter |
| 默认值: | False |
| 支持通配符: | False |
| 不显示: | False |
| 别名: | cf |
参数集
(All)
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-Credential
指定有权为指定的包提供程序或源安装模块的用户帐户。
参数属性
| 类型: | PSCredential |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
(All)
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | True |
| 来自剩余参数的值: | False |
-Force
安装模块并替代有关模块安装冲突的警告消息。 如果计算机上已存在同名的模块, Force 允许安装多个版本。 如果有具有相同名称和版本的现有模块, 则强制 覆盖该版本。
Force 和 AllowClobber 可以在命令中 Install-Module 一起使用。
参数属性
| 类型: | SwitchParameter |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
(All)
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-InputObject
用于管道输入。 如果直接提供给 InputObject 的值,则会引发错误。 使用管道通过 InputObject 参数传递对象。
参数属性
| 类型: | PSObject[] |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
InputObject
| Position: | 0 |
| 必需: | True |
| 来自管道的值: | True |
| 来自管道的值(按属性名称): | True |
| 来自剩余参数的值: | False |
-MaximumVersion
指定要安装的单个模块的最大版本。 安装的版本必须小于或等于 MaximumVersion。 如果要安装多个模块,则不能使用 MaximumVersion。
MaximumVersion 和 RequiredVersion 不能在同一 Install-Module 命令中使用。
参数属性
| 类型: | String |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
NameParameterSet
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | True |
| 来自剩余参数的值: | False |
-MinimumVersion
指定要安装的单个模块的最低版本。 安装的版本必须大于或等于 MinimumVersion。 如果有较新版本的模块可用,则安装较新版本。 如果要安装多个模块,则不能使用 MinimumVersion。
MinimumVersion 和 RequiredVersion 不能在同一 Install-Module 命令中使用。
参数属性
| 类型: | String |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
NameParameterSet
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | True |
| 来自剩余参数的值: | False |
-Name
指定要从联机库安装的模块的确切名称。 接受以逗号分隔的模块名称列表。 模块名称必须与存储库中的模块名称匹配。 用于 Find-Module 获取模块名称的列表。
参数属性
| 类型: | String[] |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
NameParameterSet
| Position: | 0 |
| 必需: | True |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | True |
| 来自剩余参数的值: | False |
-PassThru
该 Install-Module cmdlet 从联机存储库获取一个或多个满足指定条件的模块。 该 cmdlet 验证搜索结果是否为有效的模块,并将模块文件夹复制到安装位置。 安装后不会自动导入已安装的模块。
可以根据指定模块的最低版本、最大版本和确切版本筛选已安装的模块。
如果安装的模块具有相同的名称或版本,或包含现有模块中的命令,则会显示警告消息。 确认要安装模块并重写警告后,请使用 -Force 和 -AllowClobber 参数。 根据存储库设置,可能需要回答模块安装提示才能继续。
这些示例使用 PowerShell 库 作为唯一注册的存储库。
Get-PSRepository 显示已注册的存储库。 如果有多个已注册的存储库,请使用 -Repository 参数指定存储库的名称。
参数属性
| 类型: | SwitchParameter |
| 默认值: | False |
| 支持通配符: | False |
| 不显示: | False |
参数集
(All)
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-Proxy
指定请求的代理服务器,而不是直接连接到 Internet 资源。
参数属性
| 类型: | Uri |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
(All)
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | True |
| 来自剩余参数的值: | False |
-ProxyCredential
指定有权使用 Proxy 参数指定的代理服务器的用户帐户。
参数属性
| 类型: | PSCredential |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
(All)
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | True |
| 来自剩余参数的值: | False |
-Repository
使用 Repository 参数指定用于下载和安装模块的存储库。 注册多个存储库时使用。 指定命令中 Install-Module 已注册的存储库的名称。 若要注册存储库,请使用 Register-PSRepository。
若要显示已注册的存储库,请使用 Get-PSRepository。
参数属性
| 类型: | String[] |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
NameParameterSet
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-RequiredVersion
指定要安装的单个模块的确切版本。 如果指定版本的存储库中没有匹配项,则会显示错误。 如果要安装多个模块,则不能使用 RequiredVersion。
RequiredVersion 不能与 Install-Module 或 MaximumVersion 在同一命令中使用。
参数属性
| 类型: | String |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
NameParameterSet
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | True |
| 来自剩余参数的值: | False |
-Scope
指定模块的安装范围。 此参数的可接受值为 AllUsers 和 CurrentUser。
AllUsers 范围将模块安装在计算机的所有用户都可以访问的位置:
$env:ProgramFiles\PowerShell\Modules
CurrentUser 将模块安装在只有计算机的当前用户才能访问的位置。 例如:
$home\Documents\PowerShell\Modules
如果未定义 作用域 ,则会根据 PowerShellGet 版本设置默认值。
- 在 PowerShellGet 版本 2.0.0 及更高版本中,默认值为 CurrentUser,不需要提升进行安装。
- 在 PowerShellGet 1.x 版本中,默认值为 AllUsers,这需要提升进行安装。
参数属性
| 类型: | String |
| 默认值: | None |
| 接受的值: | CurrentUser, AllUsers |
| 支持通配符: | False |
| 不显示: | False |
参数集
(All)
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-SkipPublisherCheck
允许安装计算机上已存在的较新版本的模块。 例如,当现有模块由受信任的发布者进行数字签名,但新版本未由受信任的发布者进行数字签名时。
参数属性
| 类型: | SwitchParameter |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
(All)
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-WhatIf
显示运行命令时 Install-Module 会发生什么情况。 命令脚本未运行。
参数属性
| 类型: | SwitchParameter |
| 默认值: | False |
| 支持通配符: | False |
| 不显示: | False |
| 别名: | 无线 |
参数集
(All)
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
CommonParameters
此 cmdlet 支持通用参数:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 有关详细信息,请参阅 about_CommonParameters。
输入
PSRepositoryItemInfo
Find-Module创建可将管道发送到的 Install-Module 对象。
String
PSObject
String
PSCredential
Uri
输出
Microsoft.PowerShell.Commands.PSRepositoryItemInfo
使用 PassThru 参数时, Install-Module 输出模块的 PSRepositoryItemInfo 对象。 这是从 cmdlet 获取 Find-Module 的相同信息。
备注
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创建可将管道发送到的 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 值。
模块安装还将安装模块发布者根据需要指定的任何依赖模块。 发布者将在模块清单中指定所需的模块及其版本。