我试图理解为什么PowerShell的还是会回到一个不同的版本号比什么都从Windows资源管理器的文件属性页面中的DLL文件,一个WMI查询显示。 (我提前道歉,如果这不正确限定的编码问题。)
场景:
运行以下PowerShell命令:
(get-item C:\windows\system32\rdpcorekmts.dll).VersionInfo.ProductVersion
这将返回以下内容:
6.1.7600.16385
但是,此版本号不正确。 当检查从Windows资源管理器的版本信息,您将看到以下版本(对不起,我试图张贴的一小截屏,但我没有足够的代表,我是新来的):
6.1.7601.17767
另外,WMIC查询显示的结果相同Windows资源管理器:
WMIC path CIM_DataFile WHERE (name="c:\\windows\\system32\\rdpcorekmts.dll") get Version
WMIC结果:
版
6.1.7601.17767
我真的不明白为什么他们会有所不同。 我真的想回到使用PowerShell此值,但现在我不知道如果我只是忽视的东西,或者如果我碰到某种奇怪的bug跑,但是这两种方法之间的版本不匹配是混乱的。 作为一个说明,我已经在运行方式变化,以获得此回在PowerShell中(如GET-ItemChild和Get-ItemProperty),我也得到相同的版本不正确的结果。
为什么任何想法?
问题是,你正在使用ProductVersion
propertie这似乎某处被硬编码,IE和WMI只是从buildind产品版本:
ProductMajorPart : 6
ProductMinorPart : 1
ProductBuildPart : 7601
ProductPrivatePart : 17767
同样的FileVersion
有:FileMajorPart,FileMinorPart,FileBuildPart,FilePrivatePart
试一试 :
(get-item C:\windows\system32\rdpcorekmts.dll).VersionInfo | fl *
您可以测试:
(get-item C:\windows\system32\rdpcorekmts.dll).VersionInfo | % {("{0}.{1}.{2}.{3}" -f $_.ProductMajorPart,$_.ProductMinorPart,$_.ProductBuildPart,$_.ProductPrivatePart)}
从CMD.EXE你可以试试:
C:\>powershell -command "&{(get-item C:\windows\system32\rdpcorekmts.dll).VersionInfo | % {write-host ('{0}.{1}.{2}.{3}' -f $_.ProductMajorPart,$_.ProductMinorPart,$_.ProductBuildPart,$_.ProductPrivatePart)}}"
文章来源: Powershell get-item VersionInfo.ProductVersion incorrect / different than WMI