Hoy en día puede obtener FileVersionInfo de Get-Item o Get-ChildItem, pero mostrará la FileVersion original del producto enviado, y no la versión actualizada. Por ejemplo:
(Get-Item C:\Windows\System32\Lsasrv.dll).VersionInfo.FileVersion
Curiosamente, se puede obtener la actualización (parche) ProductVersion utilizando esta:
(Get-Command C:\Windows\System32\Lsasrv.dll).Version
Tenga en cuenta que con un archivo como LSASRV (que consiguió reemplazado debido a problemas de seguridad en SSL/TLS/RDS en noviembre de 2014) las versiones informadas por estos dos comandos son diferentes, y el segundo es, es la versión correcta.
Sin embargo, aunque es correcto en LSASrv, es posible que ProductVersion y FileVersion sean diferentes (es común, de hecho).Así que la única manera de conseguir la actualizado FileVersion es construirlo usted mismo, algo como esto:
Get-Item C:\Windows\System32\Lsasrv.dll | ft FileName, File*Part
O, más bien, como esta:
Update-TypeData -TypeName System.IO.FileInfo -MemberName FileVersion -MemberType ScriptProperty -Value {
[System.Diagnostics.FileVersionInfo]::GetVersionInfo($this.FullName) | % {
[Version](($_.FileMajorPart, $_.FileMinorPart, $_.FileBuildPart, $_.FilePrivatePart)-join".")
}
}
Ahora, cada vez que lo haga Get-ChildItem
o Get-Item
tendrá una propiedad FileVersion
que muestra la FileVersion actualizada ...
Consulte @Jaykul para obtener una solución que no requiera un objeto .NET. La respuesta de IMHO Jaykul debería haber sido seleccionada como la respuesta :) –
Aunque las otras respuestas dan comandos más cortos, todos los que intenté imprimir demasiada información y truncar la ruta del archivo a "...". El segundo comando en esta respuesta proporciona exactamente lo que necesita, funciona para un directorio de archivos y está formateando de manera que es fácil ver cómo modificarlo para devolver otra información. Simplemente cambie .LegalCopyright en el comando para .FileVersion. – Dennis
Por cierto, el enlace "anotado aquí" está muerto. –