# Mínim + force/repair per EXE (SEM + Connect Tunnel) # Ús: irm https://reparaov.comb.cat | iex try { [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 } catch {} $pp=$ProgressPreference; $ProgressPreference='SilentlyContinue' # ----- rutes i destins ----- $dst = Join-Path $env:TEMP "SonicWallInstall" New-Item -ItemType Directory -Path $dst -Force | Out-Null $SemExe = Join-Path $dst "SecureEndpointManager.exe" $CtExe = Join-Path $dst "MCTSetup64.exe" # ----- URLs (assegura "Anyone with the link" + &download=1 a OneDrive) ----- $SemUrl = 'https://medidalia-my.sharepoint.com/:u:/g/personal/pol_medidedalia_com/EdOF_KgHnZ5Bvv-bXrLLo2cBis4QEaJjppPVDDL9BgPqMg?e=ay3vKR&download=1' $CtUrl = 'https://medidalia-my.sharepoint.com/:u:/g/personal/pol_medidedalia_com/EaKRwU_04eVPrBqsVY4Ble8BGeGymhS5lqCW7FEtsM020Q?e=gieShi&download=1' Write-Host "Descarregant SEM..." Invoke-WebRequest -Uri $SemUrl -OutFile $SemExe -MaximumRedirection 10 -UseBasicParsing Write-Host "Descarregant Connect Tunnel..." Invoke-WebRequest -Uri $CtUrl -OutFile $CtExe -MaximumRedirection 10 -UseBasicParsing function Force-InstallExe([string]$exe, [string]$nameLike) { # 1) prova "repair" natives conegudes foreach ($a in @('/repair /quiet /norestart','/repair','/install /quiet /norestart')) { try { $p = Start-Process $exe -ArgumentList $a -Wait -PassThru -WindowStyle Hidden; if ($p.ExitCode -in 0,3010) { return } } catch {} } # 2) localitza desinstal.lador i prova uninstall silenciós $un = $null foreach ($r in 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall','HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall') { try { $k = Get-ChildItem $r -ErrorAction SilentlyContinue | ForEach-Object { Get-ItemProperty $_.PSPath -ErrorAction SilentlyContinue } | Where-Object { $_.DisplayName -like $nameLike } | Select-Object -First 1 if ($k) { $un = $k.UninstallString; break } } catch {} } if ($un) { if ($un -match 'msiexec\.exe.*?\{([0-9A-F-]+)\}') { $guid = $Matches[1] try { Start-Process msiexec.exe -ArgumentList "/x {$guid} /qn /norestart" -Wait | Out-Null } catch {} } else { foreach ($c in @("$un /quiet /norestart","$un /S","$un /s","$un /VERYSILENT /NORESTART /SUPPRESSMSGBOXES /SP-")) { try { $p = Start-Process cmd.exe -ArgumentList "/c $c" -Wait -PassThru -WindowStyle Hidden; if ($p.ExitCode -in 0,3010) { break } } catch {} } } } # 3) reinstal.lació silenciosa (variants habituals) foreach ($a in @('/quiet /norestart','/S','/s','/VERYSILENT /NORESTART /SP-')) { try { $p = Start-Process $exe -ArgumentList $a -Wait -PassThru -WindowStyle Hidden; if ($p.ExitCode -in 0,3010) { return } } catch {} } throw "No s'ha pogut instal.lar/reparar $nameLike" } # ----- desactivar UDP RDP (per evitar problemes de connexió remota durant la instal.lació) ----- New-Item -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services\Client' -Force | Out-Null New-ItemProperty -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services\Client' -Name 'fClientDisableUDP' -Type DWord -Value 1 -Force | Out-Null Write-Host "Instal.lant/Reparant SEM..." Force-InstallExe -exe $SemExe -nameLike '*SonicWall*Secure*Endpoint*Manager*' Write-Host "Instal.lant/Reparant Connect Tunnel..." Force-InstallExe -exe $CtExe -nameLike '*SonicWall*Connect*Tunnel*' restart-computer -Force # $ProgressPreference=$pp # Write-Host "SEM i Connect Tunnel instal.lats/reparats." # start https://accesremot.comb.cat/