安装或更新PowerShellGet

如何安装 PowerShellGet 和 PSResourceGet

先决条件

确保安装了高于 1.0.0.1 的 PowerShellGetPackageManagement 版本。

最新的PowerShellGet稳定版本是 2.2.5

1
2
3
4
5
6
7
8
PS>Find-Module -Name PowerShellGet -AllVersions    

Version Name Repository Description
------- ---- ---------- -----------
2.2.5 PowerShellGet PSGallery PowerShell module with commands for discovering, installing, upda...
2.2.4.1 PowerShellGet PSGallery PowerShell module with commands for discovering, installing, upda...
2.2.4 PowerShellGet PSGallery PowerShell module with commands for discovering, installing, upda...
2.2.3 PowerShellGet PSGallery PowerShell module with commands for discovering, installing, upda...

最新的PackageManagement稳定版本是 1.4.8.1

1
2
3
4
5
PS>Find-Module -Name packagemanagement         

Version Name Repository Description
------- ---- ---------- -----------
1.4.8.1 PackageManagement PSGallery PackageManagement (a.k.a. OneGet) is a new way to discover and in...

如果运行 Windows PowerShell 5.1PowerShellGet 1.0.0.1,则参考[update PowerShellGet for WindowsPowerShell5.1](#update PowerShellGet for WindowsPowerShell5.1)

若要访问 PowerShell 库,必须使用传输层安全性 (TLS) 1.2 或更高版本。 使用以下命令在 PowerShell 会话中启用 TLS 1.2。

1
2
3
4
[Net.ServicePointManager]::SecurityProtocol =
[Net.ServicePointManager]::SecurityProtocol -bor
[Net.SecurityProtocolType]::Tls12
# 将此命令添加到 PowerShell 配置文件脚本,以确保为每个 PowerShell 会话配置 TLS 1.2。

如果运行的是 PowerShell 6.0 或更高版本,则已安装较新版本的 PowerShellGetPackageManagement 。 如有必要,可以升级到较新版本,也可以安装预览版。 应始终安装最新的稳定版本。

==使用以下命令查看已安装的版本==

1
2
3
4
5
6
7
8
9
10
PS>Get-Module PowerShellGet, PackageManagement -ListAvailable


目录: C:\Program Files\WindowsPowerShell\Modules


ModuleType Version Name ExportedCommands
---------- ------- ---- ----------------
Binary 1.0.0.1 PackageManagement {Find-Package, Get-Package, Get-PackageProvider, Get-PackageSource...}
Script 1.0.0.1 PowerShellGet {Install-Module, Find-Module, Save-Module, Update-Module...}

安装最新的稳定版本

1
Install-Module PowerShellGet -Force -AllowClobber

安装 Microsoft.PowerShell.PSResourceGet

Microsoft.PowerShell.PSResourceGet 是 PowerShell 的新包管理解决方案。 使用此模块,不再需要使用 PowerShellGetPackageManagement。 但是,它可以与现有的 PowerShellGet 模块并行安装。 若要与现有 PowerShellGet 版本并行安装 Microsoft.PowerShell.PSResourceGet,请打开任何 PowerShell 控制台并运行:

1
Install-Module Microsoft.PowerShell.PSResourceGet -Repository PSGallery

Microsoft.PowerShell.PSResourceGet 已预装 PowerShell 7.4 及更高版本。

update PowerShellGet for WindowsPowerShell5.1

Windows PowerShell 5.1 预安装了 1.0.0.1 版 PowerShellGetPackageManagement。 此版本的 PowerShellGet 功能有限,必须更新才能使用 PowerShell 库。 若要获得支持,必须更新到最新版本。

先决条件

  • PowerShellGet 需要 .NET Framework 4.5 或更高版本。

  • 若要访问 PowerShell 库,必须使用传输层安全性 (TLS) 1.2 或更高版本。 使用以下命令在 PowerShell 会话中启用 TLS 1.2。

    1
    2
    3
    [Net.ServicePointManager]::SecurityProtocol =
    [Net.ServicePointManager]::SecurityProtocol -bor
    [Net.SecurityProtocolType]::Tls12

    将此命令添加到 PowerShell 配置文件脚本,以确保为每个 PowerShell 会话配置 TLS 1.2。

安装最新版本的 PowerShellGet

PowerShellGet 模块包含用于安装和更新模块的 cmdlet:

  • Install-Module 安装最新版(非预发行版)模块。
  • Update-Module 如果模块版本比当前安装的模块更新,则安装最新的 (非预发行版) 版本。 但是,==仅当以前的版本是使用 Install-Module 安装的,此 cmdlet 才有效==。

若要更新Windows预装的PowerShellGet,必须使用 Install-Module。 从 PowerShell 库安装新版本后,可使用 Update-Module 安装较新版本。

Windows PowerShell 5.1 附带了 PowerShellGet 版本 1.0.0.1,其中不包括 NuGet 提供程序。 使用 PowerShell 库时,PowerShellGet 需要该提供程序。

注意:必须以管理员身份运行安装过程

可通过以下两种方式:

  • 使用 Install-PackageProvider 在安装其他模块之前安装 NuGet

    运行以下命令以安装 NuGet 提供程序。

    1
    Install-PackageProvider -Name NuGet -Force

    安装提供程序后,应能够在 PowerShell 库中使用任何 PowerShellGet cmdlet。

  • Install-Module 提示你安装 NuGet 提供程序

    以下命令尝试在没有 NuGet 提供程序的情况下安装更新的 PowerShellGet 模块。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    Install-Module PowerShellGet -AllowClobber -Force

    # 示例
    PS>Install-Module PowerShellGet -AllowClobber -Force
    PS>Get-Module PowerShellGet, PackageManagement -ListAvailable


    目录: C:\Program Files\WindowsPowerShell\Modules

    ModuleType Version Name ExportedCommands
    ---------- ------- ---- ----------------
    Script 1.4.8.1 PackageManagement {Find-Package, Get-Package, Get-PackageProvider, Get-Packa...
    Binary 1.0.0.1 PackageManagement {Find-Package, Get-Package, Get-PackageProvider, Get-Packa...
    Script 2.2.5 PowerShellGet {Find-Command, Find-DSCResource, Find-Module, Find-RoleCap...
    Script 1.0.0.1 PowerShellGet {Install-Module, Find-Module, Save-Module, Update-Module...}
    PS>Get-PackageProvider

    Name Version DynamicOptions
    ---- ------- --------------
    msi 3.0.0.0 AdditionalArguments
    msu 3.0.0.0
    NuGet 3.0.0.1 Destination, ExcludeVersion, Scope, SkipDependencies, Headers, FilterOnTag, Contains, AllowPrerelea...
    PowerShellGet 2.2.5.0 PackageManagementProvider, Type, Scope, AllowClobber, SkipPublisherCheck, InstallUpdate, NoPathUpda...
    Programs 3.0.0.0 IncludeWindowsInstaller, IncludeSystemComponent

    Install-Module 提示你安装 NuGet 提供程序。 键入 Y 以安装该提供程序。

安装 PowerShellGet 后

安装新版本的 PowerShellGet 后,应打开新的 PowerShell 会话。 使用 PowerShellGet cmdlet 时,PowerShell 会自动加载最新版本的模块。

我们还建议将 PowerShell 库注册为受信任的存储库。 请使用以下命令:

1
Set-PSRepository -Name PSGallery -InstallationPolicy Trusted