[PowerShell] Getting File by File Version

จากบทความที่แล้ว ที่ได้เกริ่นสาเหตุของปัญหาไปแล้ว ว่ามี Program หลากหลายเวอร์ชั่นมากในการทดสอบ วันนี้ผมเลยได้ลองเขียน Code ในการหาไฟล์ .exe, ocx, dll ในโพลเดอร์ที่เก็บ Program ทั้งหมด ตาม Version ของลูกค้า และ ชื่อไฟล์ที่ต้องการทดสอบครับ โดย Code คร่าวออกมาเป็นประมาณนี้ครับ

Get-ChildItem 'C:\Users\Chatr_000\Desktop\SAD\KTCO(2.0)\Dlls'-recurse -Include *.exe, *.ocx, *.dll |
  Where-Object {(($_.VersionInfo).FileVersion -eq '6.00.0004') -and ($_.Name -like '*cal*')} |
  Select-Object -ExpandProperty VersionInfo |
  Select-Object -Property @{l='ParentPath';e={Split-Path $_.FileName}},FileName, FileVersion, Productversion, ProductName |
  Out-GridView
Get File Version By Filename

ผลลัพธ์ที่ได้ (ขอปิดชื่อไฟล์นิดนึง งานบริษัทและ)
และสุดท้าย คือ แก้พวกค่า Path หรือเงื่อนไขต่างๆ ให้รับข้อมูลจากผู้ใช้เองเลย จะได้ไม่ต้องมาแก้ Code บ่อยๆครับ ดังนี้

<# 
        "FindFilesbyVersion"     
             
        Author  : Chatri Ngambenchawong
        Website : https://naiwaen.debuggingsoft.com/ 
        Facebook: https://www.facebook.com/pingkunga
        Twitter : https://twitter.com/pingkunga

        Date    : 20-SEP-2014 
        File    : FindFilesbyVersion 
        Purpose : FInd Files by Version Using Powershell 
           
        Version : 1 
#> 
"`n" 
write-Host "---------------------------------------------" -ForegroundColor Yellow 
$filePath = Read-Host "Please Enter Base Path to Search" 
write-Host "---------------------------------------------" -ForegroundColor Yellow 
$fileName = Read-Host "Please Enter File Name to Search" 
write-Host "---------------------------------------------" -ForegroundColor Yellow 
$fileVersion = Read-Host "Please Enter version to Search (format x.xx.xxxx)" 
write-Host "---------------------------------------------" -ForegroundColor Yellow 
"`n" 

Get-ChildItem $filePath -recurse -Include *.exe, *.ocx, *.dll |
  Where-Object {(($_.VersionInfo).FileVersion -eq $fileVersion) -and ($_.Name -like '*'+$fileName+'*')} |
  Select-Object -ExpandProperty VersionInfo |
  Select-Object -Property @{l='ParentPath';e={Split-Path $_.FileName}},FileName, FileVersion, Productversion, ProductName |
  Out-GridView

ต่อไปจะเป็นการลองใช้ Code ชุดนี้ ไปประยุกต์กับ C# ทำ Application เล็กๆกันครับ


Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts to your email.