为什么Get-Module X会显示某些东西,但Get-Module X -ListAvailable不会?

问题描述 投票:1回答:1

请观察:

C:\xyz\DevOps\DFDeploymentSmokeTests [master ≡]> get-module xyz.PS.Dev -ListAvailable | ft -AutoSize
C:\xyz\DevOps\DFDeploymentSmokeTests [master ≡]> get-module xyz.PS.Dev | ft -AutoSize

ModuleType Version     Name            ExportedCommands
---------- -------     ----            ----------------
Manifest   1.0.19107.2 xyz.PS.Dev {Add-OctopusChannelsToProjectSteps, Add-OctopusEnvironmentsToProjectSteps, Add-VisualStudioToPath, Copy-OctopusVariables...}


C:\xyz\DevOps\DFDeploymentSmokeTests [master ≡]>

任何人?

编辑1

C:\> Get-Help Get-Module -Parameter ListAvailable

-ListAvailable

    Required?                    true
    Position?                    Named
    Accept pipeline input?       false
    Parameter set name           Available, PsSession, CimSession
    Aliases                      None
    Dynamic?                     false    

C:\>
powershell module powershell-module
1个回答
1
投票

总结Lee_DaileyOwain Esau在评论中提供的有用信息:

  • Get-Module -ListAvailable列出了标准位置中可用的所有模块 - 无论这些模块当前是否已加载。 这些standard locations$env:PSModulePath环境变量中列出的目录,PowerShell可以根据需要创建或添加缺少的条目;假设未设置$PSModuleAutoLoadingPreference(默认值),位于这些目录中的模块会在访问其命令时根据需要自动加载。请参阅the docs了解详情。
  • Get-Module本身列出了所有当前加载的模块。

因此,Get-Module -ListAvailable不是Get-Module的真正超集,因为它没有列出从非标准位置加载的当前加载的模块中的那些;引用Get-Module help

ListAvailable不会返回有关PSModulePath环境变量中找不到的模块的信息,即使这些模块是在当前会话中加载的。

© www.soinside.com 2019 - 2024. All rights reserved.