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 la siguiente:
(Get-Command C:\Windows\System32\Lsasrv.dll).Version
La distinción que estoy haciendo entre "original" y "parcheado" se debe básicamente a la forma en que se calcula la FileVersion ( ver los documentos aquí ). Básicamente desde Vista, la API de Windows GetFileVersionInfo está consultando parte de la información de la versión del archivo de idioma neutral (exe / dll) y la parte no fija de un archivo mui específico del idioma (que no se actualiza cada vez que cambian los archivos )
Entonces, con un archivo como lsasrv (que fue reemplazado debido a problemas de seguridad en SSL / TLS / RDS en noviembre de 2014), las versiones informadas por estos dos comandos (al menos durante un tiempo después de esa fecha) fueron diferentes, y el segundo es el versión más "correcta".
Sin embargo, aunque es correcto en LSASrv, es posible que ProductVersion y FileVersion sean diferentes (de hecho, es común). Entonces, la única forma de obtener la Fileversion actualizada directamente desde el archivo de ensamblaje es construirla usted mismo a partir de las partes, algo como esto:
Get-Item C:\Windows\System32\Lsasrv.dll | ft FileName, File*Part
O extrayendo los datos de esto:
[System.Diagnostics.FileVersionInfo]::GetVersionInfo($this.FullName)
Puede agregar esto fácilmente a todos los objetos FileInfo actualizando TypeData en PowerShell:
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 FileVersion
propiedad que muestra la FileVersion actualizada ...