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

0 ответов

Другие вопросы по тегам