PowerShell 库入门

PowerShell 库是一个包存储库,包含脚本、模块以及可供下载和使用的 DSC 资源。 可以使用 PowerShellGet 模块中的 cmdlet 从 PowerShell 库安装包。 从 PowerShell 库下载项时无需登录。

备注

可直接从 PowerShell 库下载包,但不推荐此方法。 有关详细信息,请参阅手动包下载

可使用 PowerShell 库主页上的“搜索”控件或通过浏览程序包页中的“模块和脚本”来查找 PowerShell 库中的包。 还可以使用 -Repository PSGallery 运行 Find-ModuleFind-DscResourceFind-Script cmdlet(具体视包类型而定),来查找 PowerShell 库中的包。

可使用以下参数筛选库中的结果:

  • 名称
  • AllVersions
  • MinimumVersion
  • RequiredVersion
  • 标记
  • 包括
  • DscResource
  • RoleCapability
  • Command
  • 筛选器

如果只想发现库中的特定 DSC 资源,可运行 Find-DscResource cmdlet。 Find-DscResource 会返回库中 DSC 资源的相关数据。 由于 DSC 资源始终作为模块的一部分进行传递,因此仍需要运行 Install-ModuleInstall-Module 来安装这些 DSC 资源。

找到感兴趣的包后,你可能想要了解更多有关信息。 可检查库中该包的特定页来了解详细信息。 在该页上可查看该包中上载的所有元数据。 此元数据由包作者提供,Microsoft 不会对其进行验证。 包的所有者紧密关联到用于发布该包的 PowerShell 库帐户,比“作者”字段更可信。

如果发现发布的包不可信,请单击该包页面上的“报告滥用行为”。

如果运行的是 Find-ModuleFind-Script,可在返回的 PSGetModuleInfo 对象中查看此数据。 以下示例返回库中 PSReadLine 模块的相关数据。

Find-Module -Name PSReadLine -Repository PSGallery | Get-Member

从 PowerShell 库下载包时,建议执行下列过程:

检查

若要下载库中的包以供检查,请运行 Save-ModuleSave-Script cmdlet,具体视包类型而定。 此操作可本地保存包而不进行安装,并且可以检查包内容。 请记得手动删除已保存的包。

其中一些包由 Microsoft 编写,另一些包由 PowerShell 社区编写。 Microsoft 建议安装前检查库中包的内容和代码。

如果发现发布的包不可信,请单击该包页面上的“报告滥用行为”。

安装

若要安装库中的包以供使用,请运行 Install-ModuleInstall-Script cmdlet,具体视包类型而定。

默认情况下,Install-ModuleInstall-Module 将模块安装到 $env:ProgramFiles\WindowsPowerShell\Modules。 此操作需要管理员帐户。 如果添加 -Scope CurrentUser 参数,模块将安装到 $HOME\Documents\WindowsPowerShell\Modules

默认情况下,Install-ScriptInstall-Script 将脚本安装到 $env:ProgramFiles\WindowsPowerShell\Scripts。 此操作需要管理员帐户。 如果添加 -Scope CurrentUser 参数,脚本将安装到 $HOME\Documents\WindowsPowerShell\Scripts

默认情况下,Install-ModuleInstall-Script 安装最新版包。 若要安装旧版包,请添加 -RequiredVersion 参数。

部署

若要将包从 PowerShell 库部署到 Azure 自动化,请单击“Azure 自动化”,然后单击包详细信息页上的“部署到 Azure 自动化”。 这会将你重定向到 Azure 管理门户,可使用 Azure 帐户凭据登录该门户。 请注意,部署具有依赖关系的包会将所有依赖关系部署到 Azure 自动化。 通过将 AzureAutomationNotSupported 标记添加到包元数据可禁用“部署到 Azure 自动化”按钮。

若要了解有关 Azure 自动化的详细信息,请参阅 Azure 自动化文档。

若要更新从 PowerShell 库安装的包,请运行 Update-ModuleUpdate-Module 或 Update-ScriptUpdate-Script cmdlet。 如果不使用其他任何参数运行,Update-ModuleUpdate-Module 会尝试更新所有通过运行 Install-ModuleInstall-Module 来安装的模块。 若要选择性地更新模块,请添加 -Name 参数。

同样,如果不使用其他任何参数运行,Update-ScriptUpdate-Script 也会尝试更新所有通过运行 Install-ScriptInstall-Script 来安装的脚本。 若要选择性地更新脚本,请添加 -Name 参数。

若要查找从 PowerShell 库中安装的模块,请运行 Get-InstalledModule cmdlet。 该命令会列出系统上所有已直接从 PowerShell 库安装的模块。

同样,若要查找从 PowerShell 库已安装的脚本,请运行 Get-InstalledScript cmdlet。 此命令会列出系统上所有已直接从 PowerShell 库安装的脚本。

应将这些主机名添加到控制网络访问权限的允许列表中。

包发现和下载所需的主机:

  • onegetcdn.azureedge.net - CDN 主机名

使用 PowerShell 库网站时所需的主机:

  • devopsgallerystorage.blob.core.windows.net - 存储帐户主机名
  • *.powershellgallery.com - 网站
  • go.microsoft.com - 重定向服务

重要

自 2020 年 4 月起,PowerShell 库已不再支持传输层安全性 (TLS) 版本 1.0 和 1.1。 如果你使用的不是 TLS 1.2 或更高版本,那么,在尝试访问 PowerShell 库时,将会收到错误。 使用以下命令可以确定使用的是 TLS 1.2:

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

有关详细信息,请参阅 PowerShell 博客中的公告