Powershell 模块可用,但未报告为已安装

Powershell 模块可用,但未报告为已安装,powershell,powershell-module,Powershell,Powershell Module,使用PowerShell(版本5.1.17134.228),发现Get Module和Get installed Module之间存在一些意想不到的差异,因为我希望Get installed Module返回的一些模块不是 例如: Get-Module -ListAvailable -Name 'Hyper-V' Get-InstalledModule -Name 'Hyper-V' 输出: PS C:\> Get-Module -ListAvailable -Name 'Hyper-V'

使用PowerShell(版本5.1.17134.228),发现
Get Module
Get installed Module
之间存在一些意想不到的差异,因为我希望
Get installed Module
返回的一些模块不是

例如:

Get-Module -ListAvailable -Name 'Hyper-V'

Get-InstalledModule -Name 'Hyper-V'
输出:

PS C:\> Get-Module -ListAvailable -Name 'Hyper-V' Directory: C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules ModuleType Version Name ExportedCommands ---------- ------- ---- ---------------- Binary 2.0.0.0 Hyper-V {Add-VMAssignableDevice, Add-VMDvdDrive, Add-VMFibreChannelHba, Add-VMGpuPartitionAdapter...} Binary 1.1 Hyper-V {Add-VMDvdDrive, Add-VMFibreChannelHba, Add-VMHardDiskDrive, Add-VMMigrationNetwork...} PS C:\> Get-InstalledModule -Name 'Hyper-V' PackageManagement\Get-Package : No match was found for the specified search criteria and module names 'Hyper-V'. At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.6.5\PSModule.psm1:9125 char:9 + PackageManagement\Get-Package @PSBoundParameters | Microsoft. ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (Microsoft.Power...lets.GetPackage:GetPackage) [Get-Package], Exception + FullyQualifiedErrorId : NoMatchFound,Microsoft.PowerShell.PackageManagement.Cmdlets.GetPackage PS C:\>获取模块-列表可用-名称“Hyper-V” 目录:C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules ModuleType版本名称ExportedCommands ---------- ------- ---- ---------------- 二进制2.0.0.0 Hyper-V{添加VMAssignableDevice,添加VMDVD驱动器,添加VMFibreChannelHba,添加VMGPupPartitionAdapter…} 二进制1.1 Hyper-V{添加VMDVD驱动器,添加VMFibreChannelHba,添加VMHardDiskDrive,添加VMMigrationNetwork…} PS C:\>获取安装模块-名称“Hyper-V” PackageManagement\Get Package:找不到指定搜索的匹配项 条件和模块名称“Hyper-V”。 位于C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.6.5\PSModule.psm1:9125字符:9 +PackageManager\Get Package@PSBoundParameters | Microsoft。。。 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +CategoryInfo:ObjectNotFound:(Microsoft.Power…let.GetPackage:GetPackage)[Get Package],异常 +FullyQualifiedErrorId:NoMatchFound,Microsoft.PowerShell.PackageManager.cmdlet.GetPackage
如您所见,
Get Module
命令返回Hyper-V模块的本地路径,因此它肯定是本地安装的,但是
Get InstalledModule
找不到该模块


这是一个bug还是我误解了
Get installed模块
的功能?

Get installed模块
只能返回安装模块所安装的内容。Hyper-V cmdlet不是以这种方式安装的,而是使用
Install WindowsFeature
。基本上,您不会期望
getinstalledModule
返回任何“标准”模块。感谢Jeroen的建议。不理想(从用户的角度来看,我怀疑模块的安装方式是否重要),但至少电流输出背后的原因更清楚。