PowerShell 库入门

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

注意

可以直接从 PowerShell 库下载包,但不建议使用此方法。 有关详细信息,请参阅 手动包下载

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

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

  • 名字
  • AllVersions
  • MinimumVersion
  • RequiredVersion
  • 标记
  • 包括
  • DscResource
  • RoleCapability
  • 命令
  • 滤波器

如果只想在库中发现特定的 DSC 资源,则可以运行 Find-DscResource cmdlet。 Find-DscResource 返回库中包含的 DSC 资源的数据。 由于 DSC 资源始终作为模块的一部分交付,因此仍需运行 Install-Module 来安装这些 DSC 资源。

确定感兴趣的包后,可能需要了解有关它的详细信息。 可以通过检查该包在库中的特定页面来执行此操作。 在该页面上,你将能够看到随包一起上传的所有元数据。 此元数据由包的作者提供,Microsoft不进行验证。 包的所有者与用于发布包的库帐户紧密关联,并且比“作者”字段更可信。

如果你发现一个你觉得没有善意发布的包,请单击该程序包页面上的“报告滥用”

如果运行的是 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-Module 将模块安装到 $env:ProgramFiles\WindowsPowerShell\Modules。 这需要管理员帐户。 如果添加 -Scope CurrentUser 参数,则模块将安装到 $HOME\Documents\WindowsPowerShell\Modules

默认情况下,Install-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-Script cmdlet。 在没有任何其他参数的情况下运行时,Update-Module 尝试通过运行 Install-Module来更新安装的所有模块。 若要有选择地更新模块,请添加 -Name 参数。

同样,在没有任何其他参数的情况下运行时,Update-Script 还会尝试通过运行 Install-Script来更新安装的所有脚本。 若要有选择地更新脚本,请添加 -Name 参数。

若要了解从 PowerShell 库安装的模块,请运行 Get-InstalledModule cmdlet。 此命令会列出系统上已安装的所有模块,这些模块直接从 PowerShell 库安装。

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

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

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

  • onegetcdn.azureedge.net
  • powershellgallery.azureedge.net
  • psg-prod-eastus.azureedge.net

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

  • *.powershellgallery.com - 网站
  • go.microsoft.comaka.ms - 重定向服务

重要

截至 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 博客中的 公告