Powershell или VBS для удаления клиента IBM Data Server, установленного в 2 разных папках
Я пытаюсь разобраться с деинсталляцией этого продукта Data Server Client от IBM, чтобы установить новую версию, чтобы все использовали эту новую версию в качестве стандартной версии приложения.
Задача состоит в том, чтобы удалить любую более старую версию, которая будет найдена на компьютере с Windows 7, на котором установлены только 64-битные компьютеры, и затем установить новую версию. Проблема здесь в том, что некоторые версии установлены в ProgramFiles, а другие - в ProgramFiles(x86) или могут иметь 2 экземпляра одного и того же приложения. Таким образом, вы найдете 2 различных продукта в разделе "Программы и функции". И именно поэтому мне нужно искать папку и программу: IBM\SQLLIB\bin\db2unins
Вот что я получил на данный момент в "PowerShell", но по некоторым причинам у меня, похоже, нет хорошего результата. Деинсталляция не запускается или MSI не устанавливается, и я не вижу решения этой ошибки.
Кто-нибудь знает, что я здесь делаю неправильно?
#*********************************
#Function
Function writetolog ($nTxt){
$date = Get-Date
$sapce = ' '
$log_path = 'C:\logs\'
$log_name = $log_path + 'DataServerClientUnins.log'
if(!(Test-Path -Path $log_path )){New-Item -ItemType directory -Path $log_path}
Add-content $log_name -value $date$sapce$nTxt
}
Function code_retour ($rc){
$date = Get-Date
$rc_ok = 0,3010
$CodeDeRetour = "Code de retour : ",$rc
if($rc_ok -contains $rc){
writetolog $CodeDeRetour
return $rc
}Else{
writetolog $CodeDeRetour
writetolog 'le script a échoué'
writetolog ''
writetolog "**************************"
writetoreg ('Echec',$rc)
exit $rc}
}
#Function fin
# Uninstalling Old Versions of IBM DataServerClient DB2Copy
# Variable definitions
if($env:Processor_Architecture -eq "x86"){
$programfiles = ${env:ProgramFiles}
}else{
$programfiles = ${env:ProgramFiles(x86)}
}
$exe_name = '\IBM\SQLLIB\bin\db2unins"'
$parametre = '-f -y -l '
$log_path = '"C:\logs\'
$log_name = $log_path + 'DataServerClientUnins.log"'
$Script_returnCode = 0
writetolog "**************************"
writetolog "Uninstallation has started for the old versions of IBM DataServerClient"
writetolog ""
$WorkingDirectory = Split-Path -Path $MyInvocation.MyCommand.Definition -Parent -ErrorAction Stop #Me donne le chemin ou ce trouve le script
$IBM_dest = "C:\Program Files (x86)\IBM\SQLLIB\bin\"
$IBM_X86_dest = "C:\Program Files\IBM\SQLLIB\bin\"
$Raccourci_dest = "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\IBM DB2 DB2COPY1\Check For DB2 Updates.lnk"
$Msiexec = 'Msiexec.exe'
$MsiSources = 'IBM Data Server Client.msi'
$InstallMode = '/i'
$ParametreMode = 'RSP_FILE_PATH="PROD_CLIENT.rsp" REBOOT=ReallySuppress'
$SilentMode = '/qn'
$MsiArgument = "/l*v C:\Logs\DataServerClient-DB2COPY1_11.1_IBM.log"
$MsiCommandLine = $InstallMode + ' ' + '"' + $WorkingDirectory + "\" + $MsiSources + '"' + ' ' + $ParametreMode + ' ' + $SilentMode + ' ' + $MsiArgument
Write-Host """$programfiles$exe_name $parametre$log_name"
#Read-Host "Press Enter"
if ((Test-Path $IBM_dest -ErrorAction Stop) -eq $True)
{
Start-Process """$programfiles$exe_name $parametre$log_name" -Wait
Start-sleep -Seconds 60
$Action = (Start-Process $Msiexec $MsiCommandLine -Wait -PassThru)
$Action.WaitForExit()
#Remove-item $Raccourci_dest -Force -ErrorAction Continue
}
if ((Test-Path $IBM_X86_dest -ErrorAction Stop) -eq $True)
{
Start-Process """$programfiles$exe_name $parametre$log_name" -Wait
Start-sleep -Seconds 60
$Action = (Start-Process $Msiexec $MsiCommandLine -Wait -PassThru)
$Action.WaitForExit()
#Remove-item $Raccourci_dest -Force -ErrorAction Continue
}
else
{
if ((Test-Path $IBM_X86_dest -ErrorAction Stop) -eq $True)
{
Start-Process """$programfiles$exe_name $parametre$log_name" -Wait
Start-sleep -Seconds 60
$Action = (Start-Process $Msiexec $MsiCommandLine -Wait -PassThru)
$Action.WaitForExit()
#Remove-item $Raccourci_dest -Force -ErrorAction Continue
}
else
{
Write-Host "IBM DataServer Client DB2Copy n'existe pas dans ProgramFiles(x86)"
}
}
writetolog ""
writetolog "Script has been completed IBM DataServer Client 11.1 IBM is now installed"
writetolog "**************************"
exit $Script_returnCode