当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] PowerShell 检查模块是否已安装 [3 种方法]

作者:精品下载站 日期:2024-12-14 05:29:26 浏览:18 分类:玩电脑

PowerShell 检查模块是否已安装 [3 种方法]


[玩转系统] PowerShell 检查模块是否已安装 [3 种方法]

使用 Get-Module Cmdlet

使用 Get-Module-Name 参数来检查 PowerShell 中是否安装了模块。

使用获取模块 Cmdlet:

Get-Module -ListAvailable -Name ImportExcel

输出 :

Directory: C:\Users\user\Documents\WindowsPowerShell\Modules
ModuleType Version    Name                              ExportedCommands
---------- -------    ----                              ----------------
Script     7.8.4      ImportExcel                       {Add-ConditionalFormatting,                                                             Add-ExcelChart, Add-ExcelDataV...

Get-Module 检索有关已加载模块和可导入的可用模块的信息。

-ListAvailable 参数过滤结果,仅显示可以导入但当前未加载的可用模块。此参数将仅显示默认 PowerShell 模块目录中可用的模块,而不一定显示任何其他自定义目录。

-Name 参数过滤结果,仅显示与给定名称匹配的模块。在本例中,使用的名称是 ImportExcel。在尝试使用 Import-Module cmdlet 导入模块之前,确定模块是否已安装且可用于导入会很有帮助。

使用 Test-ModuleManifest Cmdlet

使用 Test-ModuleManifest 检查模块清单文件在 PowerShell 中是否有效。

使用测试模块清单 Cmdlet:

Test-ModuleManifest -Path C:\Users\user\Documents\WindowsPowerShell\Modules\ImportExcel.8.4\ImportExcel.psd1

输出 :

Directory: C:\Users\user\Documents\WindowsPowerShell\Modules
ModuleType Version    Name                              ExportedCommands
---------- -------    ----                              ----------------
Script     7.8.4      ImportExcel                       {Add-ConditionalFormatting,                                                             Add-ExcelChart, Add-ExcelDataV...

Test-ModuleManifest cmdlet 用于验证模块清单文件并验证它是否包含所需的字段和值。

-Path 参数指定需要测试的模块清单文件的路径。在本例中,路径为 C:\Users\user\Documents\WindowsPowerShell\Modules\ImportExcel.8.4\ImportExcel.psd1,这是 的清单文件的路径ImportExcel 模块。运行 cmdlet 时,它将读取清单文件并执行验证测试。

使用 Load-Module() 函数

使用Load-Module()函数检查PowerShell中是否安装了模块。

使用 Load-Module() 函数:

function Load-Module ($n) 
{
    if (Get-Module | Where-Object {$_.name -eq $n}) {
        Write-Host "Module $n is already imported."
    }
    else {
        if (Get-Module -ListAvailable | Where-Object {$_.name -eq $n}) {
            Import-Module $n -Verbose
        }
        else {
            if (Find-Module -Name $n | Where-Object {$_.name -eq $n}) {
                Install-Module -Name $n -Force -Verbose -Scope CurrentUser
                Import-Module $n -Verbose
            }
            else {
                Write-Host "Module $n not imported, not available and not in an online gallery, exiting."
                Exit 1
            }
        }
    }
}
Load-Module "ImportExcel"

输出 :

VERBOSE: Loading module from path
'C:\Users\user\Documents\WindowsPowerShell\Modules\ImportExcel.8.4\ImportExcel.psd1'.
VERBOSE: Loading 'Assembly' from path 'C:\Users\user\Documents\WindowsPowerShell\Modules\ImportExcel.8.4\EPPlus.dll'.
VERBOSE: Loading 'Assembly' from path 'C:\Users\user\Documents\WindowsPowerShell\Modules\ImportExcel.8.4\EPPlus.dll'.
VERBOSE: Populating RepositorySourceLocation property for module ImportExcel.
VERBOSE: Loading module from path
'C:\Users\user\Documents\WindowsPowerShell\Modules\ImportExcel.8.4\ImportExcel.psm1'.
VERBOSE: Exporting function 'ColorCompletion'.
VERBOSE: Exporting function 'ListFonts'.
VERBOSE: Exporting function 'NumberFormatCompletion'.
VERBOSE: Exporting function 'WorksheetArgumentCompleter'.
VERBOSE: Exporting function 'Invoke-ExcelReZipFile'.
....

在上面的代码中,Load-Module 采用单个参数 $n,它指定要加载的模块的名称。接下来,该函数检查模块是否已导入,如果是,则仅输出一条消息来指示该事实。最后,如果仍需要导入该模块,该函数将尝试导入它。

要导入模块,该函数首先使用 Get-Module cmdlet 和 -ListAvailable 参数检查该模块在磁盘上是否可用。然后,如果可用,该函数将使用 Import-Module cmdlet 导入它,并使用 -Verbose 参数输出有关导入过程的详细信息。

如果该模块在磁盘上不可用,该函数将使用 Find-Module cmdlet 检查它是否在在线图库中可用。如果可用,该函数将使用 Install-Module cmdlet 进行安装,并使用 -Force 参数强制安装而不提示,-Verbose > 参数输出有关安装过程的详细信息,-Scope CurrentUser 参数仅为当前用户安装模块。

然后该函数像以前一样导入模块。如果该模块在磁盘上不可用且不在在线图库中,则该函数会输出一条消息来指示该事实,并以错误代码 1 退出。

最后,使用参数“ImportExcel”调用该函数,该参数是要加载的模块的名称。这可以替换为脚本需要使用的任何其他模块的名称。

PowerShell 用户可以使用 Get-ModuleTest-ModuleManifest cmdlet 以及 Load-Module() 函数来确保安装他们需要的模块并准备好在他们的脚本和交互式会话中使用。

这就是关于 PowerShell 检查模块是否已安装的全部内容。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯