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的安装程序包。

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

? 如果在安装.NET Framework时遇到问题,请尝试以[兼容模式]运行安装文件。
4. 在底部选中复选框以接受许可条款,然后点击安装按钮安装.NET Framework 4.8。

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

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

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

安装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。
?请注意,此更改仅适用于当前的PowerShell会话。但是,您可以通过将以上命令添加到您的PowerShell配置文件中,使PowerShell始终使用TLS 1.2。
下面,运行下面的Install-PackageProvider
命令来安装NuGet包提供程序。 NuGet包提供程序允许您从NuGet包存储库安装和管理包。 这个存储库是.NET平台的一个中央开源包存储库。
在使用[Install-Module]
cmdlet从PowerShell Gallery安装模块之前,必须安装NuGet包提供程序。为什么?PowerShell Gallery中的许多模块都是作为NuGet包分发的。

安装完成后,您现在可以利用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安装模块。
4. 现在,运行下面的Install-Module
命令来安装PowerShellGet
模块的最新版本(-AllowPrerelease
)。

5. 最后,运行下面的Get-InstalledModule
命令,验证PowerShellGet
模块是否已成功安装。
如果成功安装,您将看到如下所示的PowerShellGet模块列出,其中PSGallery作为存储库。

从PowerShell Gallery发现模块
现在您已经安装了PowerShellGet模块,您可以从PowerShell Gallery搜索并安装模块。这样做可以扩展您的PowerShell环境的功能,并更有效地自动化复杂任务。
要在PowerShell Gallery中搜索模块,您可以使用Find-Module
cmdlet。该cmdlet会在PowerShell Gallery中搜索与指定搜索条件匹配的模块,例如模块名称、版本或标签。
1. 运行下面的Find-Module
命令,以搜索具有匹配AzureRM
名称的模块。
下面的输出仅指示在PowerShell Gallery中有一个匹配名称AzureRM的模块。您还可以查看每个模块的基本信息,如名称、版本、存储库等。

2. 接下来,运行以下命令之一,使用-Tag
和关键字Azure
搜索模块。 -Tag
参数不区分大小写,因此您可以使用azure
或Azure
作为标签关键字。
为什么要使用模块标签?标签是与模块相关联的关键字或标签,描述了在PowerShell Gallery中的内容和功能。
例如,如果模块与Azure云平台相关,则可以标记Azure
关键字。这样做可以让对Azure相关资源感兴趣的用户通过搜索Azure
标签轻松找到和发现该模块。
PowerShell Gallery是一个由许多作者贡献的资源广泛仓库,其中有许多与热门关键词Azure
相关的模块。
因此,您将看到与您的关键词或标签匹配的模块的长列表,如下面的屏幕截图所示。

? 您还可以使用标签来分组相关的模块,以便更快地找到相关资源。例如,使用标签
Virtualization
来分组与虚拟化技术相关的模块,如Hyper-V或VMware。
3. 现在,运行以下命令以缩小搜索范围,并通过组合Find-Module
命令中的参数来查找特定模块。
下面的命令根据以下参数从PowerShell Gallery中查找模块:
-Name
– 搜索特定名称为Az.Compute
的模块。
-Tag
– 搜索带有标签Azure
和Microsoft
的模块。

安装和更新模块
一旦找到您感兴趣的模块,安装该模块只需几个按键即可完成。您可以使用Install-Module
命令从PowerShell Gallery下载模块并安装到本地系统。
1. 运行以下命令从PowerShell Gallery下载并安装Az.Compute
模块。
如果成功,此命令不会产生输出,但您将在以下步骤中验证安装情况。
2. 接下来,运行以下Get-InstalledModule
命令,验证Az.Compute
模块是否已安装在您的系统中。

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

3. 现在,运行下面的Update-Module
命令,该命令不会提供输出,但会搜索特定模块(即Az.Compute
)的最新版本并进行更新。
更新已安装的模块可能包括错误修复、新功能或其他改进。
卸载 PowerShell 模块
有时您可能想要从系统中删除一个模块。例如,如果您不再需要某个模块或者它存在问题。
要从系统中卸载模块,可以使用Uninstall-Module
cmdlet。此 cmdlet 会从系统中删除模块及其所有文件,从而有效地卸载它。
? 在继续之前,请仔细考虑卸载模块的影响。卸载模块可能会产生意想不到的后果,例如导致依赖该模块的其他程序或脚本出现问题。
运行以下Uninstall-Module
命令,从您的系统中卸载特定模块(Az.Compute
)。如果卸载成功,该命令不会产生输出。
? 如果其他程序或脚本正在使用该模块,
Uninstall-Module
命令将抛出错误,卸载失败。
结论
PowerShell模块是强大的工具,可以快速为PowerShell环境添加功能。在本教程中,结合PowerShell Gallery,您可以通过几个命令发现和安装模块。
充分利用PowerShell Gallery,寻找适合自己的PowerShell模块,定制并增强您的PowerShell脚本和工作流程!