在PowerShell中获取文件版本
如何从PowerShell中的.dll
或.exe
文件获取版本信息?
我对File Version
特别感兴趣,但其他版本信息(即Company
, Language
, Product Name
等)也会有所帮助。
由于PowerShell可以调用.NET类,因此可以执行以下操作:
[System.Diagnostics.FileVersionInfo]::GetVersionInfo("somefilepath").FileVersion
或者如文件列表中所述:
get-childitem * -include *.dll,*.exe | foreach-object { "{0}`t{1}" -f $_.Name, [System.Diagnostics.FileVersionInfo]::GetVersionInfo($_).FileVersion }
或者更好的脚本:http://jtruher.spaces.live.com/blog/cns!7143DA6E51A2628D!125.entry
现在,您可以从Get-Item或Get-ChildItem中获取FileVersionInfo,但它将显示出货产品中的原始FileVersion,而不是更新后的版本。 例如:
(Get-Item C:WindowsSystem32Lsasrv.dll).VersionInfo.FileVersion
有趣的是,你可以通过使用这个获得更新(修补)的ProductVersion:
(Get-Command C:WindowsSystem32Lsasrv.dll).Version
请注意,对于像lsasrv这样的文件(由于2014年11月的SSL / TLS / RDS中的安全问题而被替换),这两个命令报告的版本不同, 第二个版本是正确的版本。
然而,虽然LSASrv中它是正确的,但是ProductVersion和FileVersion可能不同(事实上这很常见)。 所以获得更新的Fileversion的唯一方法是自己构建它,如下所示:
Get-Item C:WindowsSystem32Lsasrv.dll | ft FileName, File*Part
或者,像这样:
Update-TypeData -TypeName System.IO.FileInfo -MemberName FileVersion -MemberType ScriptProperty -Value {
[System.Diagnostics.FileVersionInfo]::GetVersionInfo($this.FullName) | % {
[Version](($_.FileMajorPart, $_.FileMinorPart, $_.FileBuildPart, $_.FilePrivatePart)-join".")
}
}
现在,每当您执行Get-ChildItem
或Get-Item
您都将拥有一个FileVersion
属性,该属性显示已更新的FileVersion ...
'dir'是Get-ChildItem的别名,它将在您将VersionInfo作为属性的文件系统调用时返回System.IO.FileInfo类。 所以......
要获取单个文件的版本信息,请执行以下操作:
PS C:Windows> (dir .write.exe).VersionInfo | fl
OriginalFilename : write
FileDescription : Windows Write
ProductName : Microsoft® Windows® Operating System
Comments :
CompanyName : Microsoft Corporation
FileName : C:Windowswrite.exe
FileVersion : 6.1.7600.16385 (win7_rtm.090713-1255)
ProductVersion : 6.1.7600.16385
IsDebug : False
IsPatched : False
IsPreRelease : False
IsPrivateBuild : False
IsSpecialBuild : False
Language : English (United States)
LegalCopyright : © Microsoft Corporation. All rights reserved.
LegalTrademarks :
PrivateBuild :
SpecialBuild :
对于多个文件:
PS C:Windows> dir *.exe | %{ $_.VersionInfo }
ProductVersion FileVersion FileName
-------------- ----------- --------
6.1.7600.16385 6.1.7600.1638... C:Windowsbfsvc.exe
6.1.7600.16385 6.1.7600.1638... C:Windowsexplorer.exe
6.1.7600.16385 6.1.7600.1638... C:Windowsfveupdate.exe
6.1.7600.16385 6.1.7600.1638... C:WindowsHelpPane.exe
6.1.7600.16385 6.1.7600.1638... C:Windowshh.exe
6.1.7600.16385 6.1.7600.1638... C:Windowsnotepad.exe
6.1.7600.16385 6.1.7600.1638... C:Windowsregedit.exe
6.1.7600.16385 6.1.7600.1638... C:Windowssplwow64.exe
1,7,0,0 1,7,0,0 C:Windowstwunk_16.exe
1,7,1,0 1,7,1,0 C:Windowstwunk_32.exe
6.1.7600.16385 6.1.7600.1638... C:Windowswinhlp32.exe
6.1.7600.16385 6.1.7600.1638... C:Windowswrite.exe
链接地址: http://www.djcxy.com/p/4937.html