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 参数。 根据存储库设置,可能需要回答模块安装继续的提示。

这些示例使用 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 会在安装期间自动接受许可协议。 有关详细信息,请参阅 需要接受许可证的模块

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

-AllowClobber

替代有关计算机上现有命令的安装冲突的警告消息。 覆盖与模块安装的命令同名的现有命令。 AllowClobberForce 可以在命令中 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 将覆盖该版本。 ForceAllowClobber 可以在命令中 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。 如果有较新版本的模块可用,则会安装较新版本。 如果要安装多个模块,则不能使用 MinimumVersionMinimumVersionRequiredVersion 不能在同一 Install-Module 命令中使用。

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

指定要安装的单个模块的确切版本。 如果存储库中没有指定版本的匹配项,则显示错误。 如果要安装多个模块,则不能使用 RequiredVersionRequiredVersion 不能在与 MinimumVersionMaximumVersion 相同的Install-Module命令中使用。

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 2.0.0 及更高版本中,默认值为 CurrentUser,它不需要提升安装权限。
  • 在 PowerShellGet 1.x 版本中,默认值为 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[]

String

PSCredential

Uri

输出

Microsoft.PowerShell.Commands.PSRepositoryItemInfo

使用 PassThru 参数时, Install-Module 输出模块的 PSRepositoryItemInfo 对象。 此信息与从 Find-Module cmdlet 获取的信息相同。

备注

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 值。

模块安装还将安装模块发布者所需的任何依赖模块。 发布者将在模块清单中指定所需的模块及其版本。