开始使用PowerShell Gallery

PowerShell Gallery 是满足您所有 PowerShell 需求的终极目的地,无论您是初学者还是经验丰富的用户。好消息是,PowerShell 社区创建了大量文档、脚本、模块和其他资源的广泛集合。

在本教程中,您将学会如何从 PowerShell Gallery 中查找、下载和安装资源。

请继续关注,提升您的脚本编写水平!

先决条件

本教程将进行实际演示。要跟上步伐,请确保您的系统安装了 PowerShell 5.1 或更高版本。本教程使用安装了 PowerShell 5.3 的 Windows 10,但其他版本的 Windows 和 PowerShell 也应该可以工作。

安装 .NET Framework

在深入研究 PowerShell Gallery 之前,您首先需要一种与 PowerShell Gallery 交互的方法,而 .NET Framework 是主要方法。

您必须首先安装 .NET Framework,这对于 PowerShellGet 模块至关重要。PowerShellGet 模块至少需要 .NET Framework v4.5+。PowerShellGet 模块使您能够发现、安装、更新和发布 PowerShell 工件。

但在本教程中,您将安装 .NET Framework v4.8。

? 请注意,.NET Framework v4.8 可能已经安装在您的系统上。如果是这样,您可以跳过这一步。但如果您安装了较旧版本的 .NET Framework,请卸载它并升级到更新的版本

要安装.NET Framework,请按照以下步骤操作:

1. 打开您喜欢的网络浏览器,并转到官方.NET Framework下载页面

2. 接下来,点击下载.NET Framework 4.8开发人员包链接,下载类似ndp48-devpack-enu的文件。此文件是.NET Framework版本4.8的安装程序包。

Downloading .NET Framework 4.8

3. 等待下载完成,双击下载的文件启动.NET Framework安装程序。

Launching the .NET Framework installer

? 如果在安装.NET Framework时遇到问题,请尝试以[兼容模式]运行安装文件。

4. 在底部选中复选框以接受许可条款,然后点击安装按钮安装.NET Framework 4.8。

Accepting the license terms and conditions

下面,您可以看到安装进度,这可能需要几分钟,具体取决于您系统的配置。

Viewing the installation progress

5. 现在,点击关闭按钮,一旦安装完成,关闭安装程序。

Finishing the .NET Framework installation

6. 最后,以管理员身份打开PowerShell,并运行以下[Start-Process]命令以打开添加或删除程序应用程序(appwiz.cpl)。该应用程序允许您查看系统上已安装程序的列表。

Start-Process "appwiz.cpl”

您将在已安装程序列表中看到.NET Framework 4.8的条目,如下所示。

Verifying the .NET Framework 4.8 installation

安装PowerShellGet模块

安装并运行.NET Framework后,您现在可以安装PowerShell Gallery的核心组件PowerShellGet模块。

PowerShellGet版本(1.0.0.1)预装在Windows PowerShell 5.1中,功能有限。如果您正在使用Windows PowerShell 5.1或更早版本,请考虑使用PowerShell Gallery的更新功能。此时的最新版本为3.0.17-beta17。

要安装PowerShellGet模块,请按照以下步骤操作:

1. 运行以下命令,它不会产生输出,但会在您的PowerShell会话中启用传输层安全性(TLS)1.2。 TLS是一种安全协议,用于加密在互联网上传输的数据。

启用TLS 1.2至关重要,因为PowerShell默认未配置为使用TLS 1.2。此命令将SecurityProtocol设置为System.Net.ServicePointManager对象的TLS 1.2(Tls12)。这样,您就可以使用TLS 1.2或更高版本访问PowerShell Gallery。

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

?请注意,此更改仅适用于当前的PowerShell会话。但是,您可以通过将以上命令添加到您的PowerShell配置文件中,使PowerShell始终使用TLS 1.2。

下面,运行下面的Install-PackageProvider命令来安装NuGet包提供程序。 NuGet包提供程序允许您从NuGet包存储库安装和管理包。 这个存储库是.NET平台的一个中央开源包存储库。

在使用[Install-Module] cmdlet从PowerShell Gallery安装模块之前,必须安装NuGet包提供程序。为什么?PowerShell Gallery中的许多模块都是作为NuGet包分发的。

Install-PackageProvider -Name NuGet -Force
Installing the NuGet package provider

安装完成后,您现在可以利用NuGet API。 NuGet API允许您访问NuGet包存储库,以创建可以与NuGet包存储库交互的工具和应用程序。 以何种方式交互? 执行各种任务,例如搜索,安装和更新包。

一般来说,有两个版本的NuGet API,您可以根据您的要求和客户端和服务器的功能使用其中之一。

Version Description Usage
v2 Uses XML as the data format for communication between the client and server.

This version is based on the original NuGet API introduced in 2011 and is the legacy version of the API.

The v2 API is recommended if you use an older version of NuGet or a client or server that does not support the v3 API.

This version is supported by all versions of NuGet and is compatible with older clients and servers.

v3 Uses JSON as the data format for communication between the client and server. This version was introduced in 2013 as an improvement over the v2 API and included many new features and improvements.

Many new features included are support for side-by-side package installation, improved search capabilities, and large package support.

The v3 API is recommended if you use a newer NuGet version. The v3 API is faster and more efficient than the v2 API.

This version is not supported by older versions of NuGet and may not be compatible with older clients and servers.

? 一般而言,推荐使用NuGet API v3,因为它提供了最新的功能和功能。

3. 运行下面的Set-PSRepository命令,该命令不会提供输出,但会将您的PowerShell Gallery (PSGallery)存储库设置为可信的软件包源。这样做可以让您从PowerShell Gallery安装模块。

Set-PSRepository -Name PSGallery -InstallationPolicy Trusted -ErrorAction Stop

4. 现在,运行下面的Install-Module命令来安装PowerShellGet模块的最新版本(-AllowPrerelease)。

Install-Module -Name PowerShellGet -AllowPrerelease -Force
Installing the latest version of PowerShellGet

5. 最后,运行下面的Get-InstalledModule命令,验证PowerShellGet模块是否已成功安装。

Get-InstalledModule PowerShellGet

如果成功安装,您将看到如下所示的PowerShellGet模块列出,其中PSGallery作为存储库。

Verifying the PowerShellGet module installation

从PowerShell Gallery发现模块

现在您已经安装了PowerShellGet模块,您可以从PowerShell Gallery搜索并安装模块。这样做可以扩展您的PowerShell环境的功能,并更有效地自动化复杂任务。

要在PowerShell Gallery中搜索模块,您可以使用Find-Module cmdlet。该cmdlet会在PowerShell Gallery中搜索与指定搜索条件匹配的模块,例如模块名称、版本或标签。

1. 运行下面的Find-Module命令,以搜索具有匹配AzureRM名称的模块。

Find-Module -Name AzureRM

下面的输出仅指示在PowerShell Gallery中有一个匹配名称AzureRM的模块。您还可以查看每个模块的基本信息,如名称、版本、存储库等。

Discovering modules from the PowerShell Gallery

2. 接下来,运行以下命令之一,使用-Tag和关键字Azure搜索模块。 -Tag参数不区分大小写,因此您可以使用azureAzure作为标签关键字。

为什么要使用模块标签?标签是与模块相关联的关键字或标签,描述了在PowerShell Gallery中的内容和功能。

例如,如果模块与Azure云平台相关,则可以标记Azure关键字。这样做可以让对Azure相关资源感兴趣的用户通过搜索Azure标签轻松找到和发现该模块。

Find-Module -Tag 'Azure'
Find-Module -Tag 'azure'

PowerShell Gallery是一个由许多作者贡献的资源广泛仓库,其中有许多与热门关键词Azure相关的模块。

因此,您将看到与您的关键词或标签匹配的模块的长列表,如下面的屏幕截图所示。

Searching for modules in the PowerShell Gallery using a tag

? 您还可以使用标签来分组相关的模块,以便更快地找到相关资源。例如,使用标签Virtualization来分组与虚拟化技术相关的模块,如Hyper-V或VMware。

3. 现在,运行以下命令以缩小搜索范围,并通过组合Find-Module命令中的参数来查找特定模块。

下面的命令根据以下参数从PowerShell Gallery中查找模块:

  • -Name – 搜索特定名称为Az.Compute的模块。

  • -Tag – 搜索带有标签AzureMicrosoft的模块。
Find-Module -Name 'Az.Compute' -Tag 'Azure', 'Microsoft’
Filtering module search results

安装和更新模块

一旦找到您感兴趣的模块,安装该模块只需几个按键即可完成。您可以使用Install-Module命令从PowerShell Gallery下载模块并安装到本地系统。

1. 运行以下命令从PowerShell Gallery下载并安装Az.Compute模块。

如果成功,此命令不会产生输出,但您将在以下步骤中验证安装情况。

Install-Module -Name 'Az.Compute'

2. 接下来,运行以下Get-InstalledModule命令,验证Az.Compute模块是否已安装在您的系统中。

Get-InstalledModule -Name 'Az.Compute'
Verifying a module installation

? 或者,运行不带参数的Get-InstalledModule cmdlet,以显示系统中所有已安装模块的列表。但请注意,如果安装了太多模块,您在滚动列表时可能会感到眼花缭乱。

Listing all installed modules

3. 现在,运行下面的Update-Module命令,该命令不会提供输出,但会搜索特定模块(即Az.Compute)的最新版本并进行更新。

更新已安装的模块可能包括错误修复、新功能或其他改进。

Update-Module -Name Az.Compute

卸载 PowerShell 模块

有时您可能想要从系统中删除一个模块。例如,如果您不再需要某个模块或者它存在问题。

要从系统中卸载模块,可以使用Uninstall-Module cmdlet。此 cmdlet 会从系统中删除模块及其所有文件,从而有效地卸载它。

? 在继续之前,请仔细考虑卸载模块的影响。卸载模块可能会产生意想不到的后果,例如导致依赖该模块的其他程序或脚本出现问题。

运行以下Uninstall-Module命令,从您的系统中卸载特定模块(Az.Compute)。如果卸载成功,该命令不会产生输出。

Uninstall-Module -Name Az.Compute

? 如果其他程序或脚本正在使用该模块,Uninstall-Module命令将抛出错误,卸载失败。

结论

PowerShell模块是强大的工具,可以快速为PowerShell环境添加功能。在本教程中,结合PowerShell Gallery,您可以通过几个命令发现和安装模块。

充分利用PowerShell Gallery,寻找适合自己的PowerShell模块,定制并增强您的PowerShell脚本和工作流程!

Source:
https://adamtheautomator.com/powershell-gallery/