Почему Get-Module X показывает что-то, а Get-Module X -ListAvailable - нет? - PullRequest
1 голос
/ 18 апреля 2019

Пожалуйста, обратите внимание:

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:\>

1 Ответ

1 голос
/ 23 апреля 2019

Суммируя полезную информацию, предоставленную Lee_Dailey и Оуайн Исав в комментариях:

  • Get-Module -ListAvailable перечисляет все модули доступно в стандартных местоположениях - независимо от того, загружены ли эти модули в настоящее время или нет.

    • Эти стандартные местоположения являются каталогами, перечисленными в$env:PSModulePath переменная среды, которую PowerShell создает по требованию или добавляет отсутствующие записи;модули, расположенные в этих каталогах, загружаются автоматически по требованию при обращении к их командам, предполагая, что $PSModuleAutoLoadingPreference не установлен (по умолчанию);см. документы для подробностей.
  • Get-Module сам по себе перечисляет все загруженные в данный момент модули .

Из этого следует, что Get-Module -ListAvailable не является истинным расширенным набором Get-Module, поскольку в нем не перечислены те из загруженных в данный момент модулей, которые были загружены из нестандартных местоположений ;в кавычках Get-Module help :

ListAvailable не возвращает информацию о модулях, которые не найдены в переменной среды PSModulePath, даже если эти модули загруженыв текущем сеансе.

...