Ngày nay bạn có thể lấy FileVersionInfo từ Get-Item hoặc Get-ChildItem, nhưng nó sẽ hiển thị FileVersion gốc từ sản phẩm được vận chuyển chứ không phải phiên bản cập nhật. Ví dụ:
(Get-Item C:\Windows\System32\Lsasrv.dll).VersionInfo.FileVersion
Điều thú vị là bạn có thể nhận được cập nhật (vá) ProductVersion bằng cách sử dụng này:
(Get-Command C:\Windows\System32\Lsasrv.dll).Version
Lưu ý rằng với một tập tin như LSASRV (mà bị thay thế do các vấn đề an ninh trong SSL/TLS/RDS vào tháng 11 năm 2014) các phiên bản được báo cáo bởi hai lệnh này khác nhau và phiên bản thứ hai là phiên bản chính xác.
Tuy nhiên, mặc dù nó chính xác trong LSASrv, nhưng ProductVersion và FileVersion có thể khác nhau (thông thường, trên thực tế).Vì vậy, cách duy nhất để có được những cập nhật FileVersion là xây dựng nó lên chính mình, một cái gì đó như thế này:
Get-Item C:\Windows\System32\Lsasrv.dll | ft FileName, File*Part
Hay đúng hơn, như thế này:
Update-TypeData -TypeName System.IO.FileInfo -MemberName FileVersion -MemberType ScriptProperty -Value {
[System.Diagnostics.FileVersionInfo]::GetVersionInfo($this.FullName) | % {
[Version](($_.FileMajorPart, $_.FileMinorPart, $_.FileBuildPart, $_.FilePrivatePart)-join".")
}
}
Bây giờ mỗi khi bạn làm Get-ChildItem
hay Get-Item
bạn sẽ có một thuộc tính FileVersion
hiển thị FileVersion được cập nhật ...
Xem @Jaykul cho giải pháp không yêu cầu đối tượng .NET. Câu trả lời của IMHO Jaykul nên được chọn làm câu trả lời :) –
Mặc dù các câu trả lời khác cung cấp các lệnh ngắn hơn, tất cả những câu trả lời tôi đã thử in ra quá nhiều thông tin và cắt bớt đường dẫn tệp thành "...". Lệnh thứ 2 trong câu trả lời này chỉ cung cấp những gì bạn cần, làm việc cho một thư mục các tệp và định dạng theo cách dễ dàng để xem cách sửa đổi nó để trả về thông tin khác. Chỉ cần thay đổi .LegalCopyright trong lệnh thành .FileVersion. – Dennis
Ngẫu nhiên, liên kết "ghi chú ở đây" đã chết. –