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>]
说明
Install-Module
cmdlet 从联机存储库获取满足指定条件的一个或多个模块。 该 cmdlet 验证搜索结果是否为有效的模块,并将模块文件夹复制到安装位置。 安装后不会自动导入已安装的模块。
可以根据指定模块的最低版本、最大版本和确切版本筛选已安装的模块。
这是 Microsoft.PowerShell.PSResourceGet中 Get-InstalledPSResource
cmdlet 的代理 cmdlet。 有关详细信息,请参阅 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:安装模块的特定预发行版
此示例演示如何安装模块的特定预发行版。
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
使用 PowerShell 库中显示的版本获取 RequiredVersion 参数的值。
参数
-AcceptLicense
对于需要许可证的模块,AcceptLicense 安装过程中自动接受许可协议。 有关详细信息,请参阅 模块,要求接受许可证。
类型: | SwitchParameter |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-AllowClobber
重写有关计算机上现有命令的安装冲突的警告消息。
覆盖与模块安装的命令同名的现有命令。
AllowClobber 和 Force 可以在 Install-Module
命令中一起使用。
代理 cmdlet 将此参数的值转换为 Install-PSResource
cmdlet 的 NoClobber 参数。
类型: | SwitchParameter |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-AllowPrerelease
允许安装标记为预发行的模块。
代理 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
代理 cmdlet 忽略此参数,因为 Install-PSResource
不支持此参数。
类型: | SwitchParameter |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-InputObject
用于管道输入。 如果直接向 InputObject 提供的值,则会引发错误。 使用管道传递具有 InputObject 参数的对象。
类型: | PSObject[] |
Position: | 0 |
默认值: | None |
必需: | True |
接受管道输入: | True |
接受通配符: | False |
-MaximumVersion
代理 cmdlet 使用此参数的值来创建 NuGet 版本搜索字符串,以与 Install-PSResource
Version 参数一起使用。
类型: | String |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | True |
接受通配符: | False |
-MinimumVersion
代理 cmdlet 使用此参数的值来创建 NuGet 版本搜索字符串,以与 Install-PSResource
Version 参数一起使用。
类型: | 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
代理 cmdlet 忽略此参数,因为 Install-PSResource
不支持此参数。
类型: | Uri |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | True |
接受通配符: | False |
-ProxyCredential
代理 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
代理 cmdlet 使用此参数的值来创建 NuGet 版本搜索字符串,以与 Install-PSResource
Version 参数一起使用。
类型: | String |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | True |
接受通配符: | 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
。
类型: | String |
接受的值: | CurrentUser, AllUsers |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-SkipPublisherCheck
代理 cmdlet 在调用 Install-PSResource
之前将此参数转换为 AuthenticodeCheck。
类型: | 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[]
输出
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、Find-Module
创建 PSRepositoryItemInfo 可将管道发送到 Install-Module
的对象。 管道是指定要在单个命令中安装的多个模块的另一种方法。
默认情况下,
如果模块安装没有 .psm1
、.psd1
或文件夹中同名 .dll
,则无法导入它。 使用 Force 参数安装模块。
如果现有模块的版本与 Name 参数指定的名称匹配,并且不使用 MinimumVersion 或 RequiredVersion 参数,则 Install-Module
静默继续,但不安装该模块。
如果现有模块的版本大于 MinimumVersion 参数的值,或等于 RequiredVersion 参数的值,则 Install-Module
静默继续,但不安装该模块。
如果现有模块与 MinimumVersion 或 RequiredVersion 参数指定的值不匹配,Install-Module
命令中会出现错误。 例如,如果现有已安装模块的版本低于 MinimumVersion 值,或者不等于 RequiredVersion 值。
Install-Module
还会安装模块发布者指定的任何依赖模块。
发布者在模块清单中列出了所需的模块及其版本。