Benzer işlemi OLE DB Driver upgrade süreçlerinde ele almıştık.
Powershell ile Microsoft OLE DB Driver for SQL Server Upgrade Süreçleri
Aynı işlem olarak ele alabilirsiniz. OLEDB güncel sürümlerini ortak bir alana atıp, scriptteki msi path yolunu güncelleyelim. Birde indirmiş olduğumuz makinede yüklenmesi gereken versiyonları RequiredVersions altında ilgili sürümün yanına yazalım.
Script çalıştığında makinede kurulu olan OleDb leri sorgulayacak ve sürümlerine bakacak eğer requiredversiyon da ki sürümden düşükse ortak alana atmış olduğunuz güncel sürümü kurma sürecini başlatıyor olacak.
# Gereken versiyonlar $requiredVersions = @{ "Microsoft ODBC Driver 16 for SQL Server" = [version]"16.10.6.1" "Microsoft ODBC Driver 17 for SQL Server" = [version]"17.10.6.1" "Microsoft ODBC Driver 18 for SQL Server" = [version]"18.3.3.1" "Microsoft ODBC Driver 19 for SQL Server" = [version]"19.10.6.1" } # MSI dosyalarının yolları $msiPaths = @{ "Microsoft ODBC Driver 16 for SQL Server" = "\\XXX\ODBCSQL\msodbcsql16.10.6.msi" "Microsoft ODBC Driver 17 for SQL Server" = "\\XXX\ODBCSQL\msodbcsql17.10.6.msi" "Microsoft ODBC Driver 18 for SQL Server" = "\\XXX\ODBCSQL\msodbcsql18.3.3.1.msi" "Microsoft ODBC Driver 19 for SQL Server" = "\\XXX\ODBCSQL\msodbcsql19.10.6.msi" } # Geçici dizin $tempDir = "C:\Windows\Temp" # Her bir driver sürümü için kontrol et foreach ($driverName in $requiredVersions.Keys) { $odbcDriver = Get-WmiObject -Query "SELECT * FROM Win32_Product WHERE Name = '$driverName'" if ($odbcDriver) { $currentVersion = [version]$odbcDriver.Version Write-Host "$driverName is installed." Write-Host "Current Version: $currentVersion" if ($currentVersion -lt $requiredVersions[$driverName]) { Write-Host "Updating $driverName to version $($requiredVersions[$driverName])..." # Kaynak ve hedef yolları $sourcePath = $msiPaths[$driverName] $destinationPath = Join-Path -Path $tempDir -ChildPath (Split-Path -Leaf $sourcePath) # MSI dosyasını kopyala Copy-Item -Path $sourcePath -Destination $destinationPath -Force # Kurulumu başlat Start-Process msiexec.exe -ArgumentList "/i `"$destinationPath`" /quiet /norestart" -Wait Write-Host "Update completed." } else { Write-Host "$driverName is up-to-date." } } else { Write-Host "$driverName is not installed." } }