Powershell 模块可用,但未报告为已安装
使用PowerShell(版本5.1.17134.228),发现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'
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的建议。不理想(从用户的角度来看,我怀疑模块的安装方式是否重要),但至少电流输出背后的原因更清楚。