283 lines
10 KiB
PowerShell
283 lines
10 KiB
PowerShell
# ####################################
|
|
# Author : Sam Nang SOK
|
|
# Version : 1.0
|
|
# Role : Desintaller logiciels HP
|
|
# Source : https://gist.github.com/mark05e/a79221b4245962a477a49eb281d97388#file-remove-hpbloatware-ps1
|
|
# Source : https://github.com/JoachimBerghmans/Powershell/blob/main/Autopilot/Remove-Bloatware.ps1
|
|
# ####################################
|
|
|
|
function Write-LogEntry {
|
|
param (
|
|
[parameter(Mandatory = $true, HelpMessage = "Ajout de la valeur du fichier log")]
|
|
[ValidateNotNullOrEmpty()]
|
|
[string]$Value,
|
|
|
|
[parameter(Mandatory = $true, HelpMessage = "Niveau de status du fichier log. 1 Pour information, 2 Pour avertissement et 3 Pour erreur.")]
|
|
[ValidateNotNullOrEmpty()]
|
|
[ValidateSet("1", "2", "3")]
|
|
[string]$Severity,
|
|
|
|
[parameter(Mandatory = $false, HelpMessage = "Nom du fichier log")]
|
|
[ValidateNotNullOrEmpty()]
|
|
[string]$FileName = "Remove-HP-Bloatware.log"
|
|
)
|
|
# Emplacment du fichier log
|
|
$LogFilePath = Join-Path -Path (Join-Path -Path $env:windir -ChildPath "Install") -ChildPath $FileName
|
|
|
|
# Construire HH:mm:ss horloge pour le fichier de log
|
|
$Time = -join @((Get-Date -Format "HH:mm:ss.fff"), "+", (Get-WmiObject -Class Win32_TimeZone | Select-Object -ExpandProperty Bias))
|
|
|
|
# Date de contruction du fichier log
|
|
$Date = (Get-Date -Format "MM-dd-yyyy")
|
|
|
|
# Construction contexte fichier log
|
|
$Context = $([System.Security.Principal.WindowsIdentity]::GetCurrent().Name)
|
|
|
|
# Construction final du fichier log
|
|
$LogText = "<![LOG[$($Value)]LOG]!><time=""$($Time)"" date=""$($Date)"" component=""RemoveHPBloatware"" context=""$($Context)"" type=""$($Severity)"" thread=""$($PID)"" file="""">"
|
|
|
|
# Ajout des valeurs dans les logs
|
|
try {
|
|
Out-File -InputObject $LogText -Append -NoClobber -Encoding Default -FilePath $LogFilePath -ErrorAction Stop
|
|
}
|
|
catch [System.Exception] {
|
|
Write-Warning -Message "Impossible d'ajouter le fichier log Remove-HP-Bloatware.log Message erreur sur la ligne $($_.InvocationInfo.ScriptLineNumber): $($_.Exception.Message)"
|
|
}
|
|
}
|
|
|
|
|
|
#Supprimer HP Documentation
|
|
if (Test-Path "C:\Program Files\HP\Documentation\Doc_uninstall.cmd" -PathType Leaf){
|
|
Try {
|
|
Invoke-Item "C:\Program Files\HP\Documentation\Doc_uninstall.cmd"
|
|
Write-LogEntry -Value "Package supprime avec succes: HP Documentation" -Severity 1
|
|
}
|
|
Catch {
|
|
Write-LogEntry -Value "Erreur de suppression HP Documentation $($_.Exception.Message)" -Severity 3
|
|
}
|
|
}
|
|
Else {
|
|
Write-LogEntry -Value "HP Documentation est pas installe" -Severity 1
|
|
}
|
|
|
|
#Supprimer HP Support Assistant en mode silencieux
|
|
$HPSAuninstall = "C:\Program Files (x86)\HP\HP Support Framework\UninstallHPSA.exe"
|
|
|
|
if (Test-Path -Path "HKLM:\Software\WOW6432Node\Hewlett-Packard\HPActiveSupport") {
|
|
Try {
|
|
Remove-Item -Path "HKLM:\Software\WOW6432Node\Hewlett-Packard\HPActiveSupport"
|
|
Write-LogEntry -Value "HP Support Assistant regkey supprime $($_.Exception.Message)" -Severity 1
|
|
}
|
|
Catch {
|
|
Write-LogEntry -Value "Erreur lors de la recuperation de la cle de registre pour HP Support Assistant: $($_.Exception.Message)" -Severity 3
|
|
}
|
|
}
|
|
Else {
|
|
Write-LogEntry -Value "HP Support Assistant regkey non trouve" -Severity 1
|
|
}
|
|
|
|
if (Test-Path $HPSAuninstall -PathType Leaf) {
|
|
Try {
|
|
& $HPSAuninstall /s /v/qn UninstallKeepPreferences=FALSE
|
|
Write-LogEntry -Value "Package supprime avec succes: HP Support Assistant en mode silencieux" -Severity 1
|
|
}
|
|
Catch {
|
|
Write-LogEntry -Value "Erreur lors de la desinstallation de HP Support Assistant: $($_.Exception.Message)" -Severity 3
|
|
}
|
|
}
|
|
Else {
|
|
Write-LogEntry -Value "Programme de desinstallation de HP Support Assistant introuvable" -Severity 1
|
|
}
|
|
|
|
|
|
#Suppression HP Connection Optimizer
|
|
$HPCOuninstall = "C:\Program Files (x86)\InstallShield Installation Information\{6468C4A5-E47E-405F-B675-A70A70983EA6}\setup.exe"
|
|
|
|
#Copie du fichier desinstallation
|
|
xcopy /y .\uninstallHPCO.iss C:\Windows\install\
|
|
Write-LogEntry -Value "Fichier copie avec succes uninstallHPCO.iss to C:\Windows\install " -Severity 1
|
|
|
|
if (Test-Path $HPCOuninstall -PathType Leaf){
|
|
Try {
|
|
& $HPCOuninstall -runfromtemp -l0x0413 -removeonly -s -f1C:\Windows\install\uninstallHPCO.iss
|
|
Write-LogEntry -Value "Suppression reussie pour HP Connection Optimizer" -Severity 1
|
|
}
|
|
Catch {
|
|
Write-LogEntry -Value "Erreur lors de la desinstallation pour HP Connection Optimizer: $($_.Exception.Message)" -Severity 3
|
|
}
|
|
}
|
|
Else {
|
|
Write-LogEntry -Value "HP Connection Optimizer non trouve" -Severity 1
|
|
}
|
|
|
|
#Liste des packages integres pour la suppression
|
|
#Commande : Get-AppxPackage -AllUsers | where-object {$_.Publisher -notlike "*Microsoft*"} | where-object {$_.Publisher -notlike "*Skype*"} | Format-Table
|
|
$UninstallPackages = @(
|
|
"AD2F1837.HPJumpStarts"
|
|
"AD2F1837.HPPCHardwareDiagnosticsWindows"
|
|
"AD2F1837.HPPowerManager"
|
|
"AD2F1837.HPPrivacySettings"
|
|
"AD2F1837.HPSupportAssistant"
|
|
"AD2F1837.HPSureShieldAI"
|
|
"AD2F1837.HPSystemInformation"
|
|
"AD2F1837.HPQuickDrop"
|
|
"AD2F1837.HPWorkWell"
|
|
"AD2F1837.myHP"
|
|
"AD2F1837.HPDesktopSupportUtilities"
|
|
"AD2F1837.HPEasyClean"
|
|
"AD2F1837.HPSystemInformation"
|
|
)
|
|
|
|
#Liste des programmes pour la desinstallation
|
|
#Commande : Get-WmiObject -Class Win32_Product | Where-Object{$_.Name -like "HP*"}
|
|
$UninstallPrograms = @(
|
|
"HP Connection Optimizer"
|
|
"HP Documentation"
|
|
"HP MAC Address Manager"
|
|
"HP Notifications"
|
|
"HP Security Update Service"
|
|
"HP System Default Settings"
|
|
"HP Sure Click"
|
|
"HP Sure Run"
|
|
"HP Sure Run Module"
|
|
"HP Sure Recover"
|
|
"HP Sure Sense"
|
|
"HP Sure Sense Installer"
|
|
"HP Wolf Security Application Support for Sure Sense"
|
|
"HP Wolf Security Application Support for Windows"
|
|
"HP Client Security Manager"
|
|
"HP Wolf Security"
|
|
)
|
|
|
|
#Obtenir une liste des packages installes correspondant a notre liste
|
|
$InstalledPackages = Get-AppxPackage -AllUsers | Where-Object {($UninstallPackages -contains $_.Name)}
|
|
|
|
#Obtenez une liste des packages provisionnes correspondant a notre liste
|
|
$ProvisionedPackages = Get-AppxProvisionedPackage -Online | Where-Object {($UninstallPackages -contains $_.DisplayName)}
|
|
|
|
#Obtenir une liste des programmes installes correspondant a notre liste
|
|
$InstalledPrograms = Get-Package | Where-Object {$UninstallPrograms -contains $_.Name}
|
|
|
|
|
|
#Supprimer d'abord les packages provisionnes
|
|
ForEach ($ProvPackage in $ProvisionedPackages) {
|
|
|
|
Write-LogEntry -Value "Tentative de suppression du package provisionne: [$($ProvPackage.DisplayName)]" -Severity 1
|
|
|
|
Try {
|
|
$Null = Remove-AppxProvisionedPackage -PackageName $ProvPackage.PackageName -Online -ErrorAction Stop
|
|
Write-LogEntry -Value "Package provisionne supprime avec succes: [$($ProvPackage.DisplayName)]" -Severity 1
|
|
}
|
|
Catch {
|
|
Write-LogEntry -Value "echec de la suppression du package provisionne: [$($ProvPackage.DisplayName)] Erreur message: $($_.Exception.Message)" -Severity 3
|
|
}
|
|
}
|
|
|
|
#Supression des appx packages
|
|
ForEach ($AppxPackage in $InstalledPackages) {
|
|
|
|
Write-LogEntry -Value "Tentative de suppression du package Appx: [$($AppxPackage.Name)] " -Severity 1
|
|
|
|
Try {
|
|
$Null = Remove-AppxPackage -Package $AppxPackage.PackageFullName -AllUsers -ErrorAction Stop
|
|
Write-LogEntry -Value "Package Appx supprime avec succes: [$($AppxPackage.Name)]" -Severity 1
|
|
}
|
|
Catch {
|
|
Write-LogEntry -Value "echec de la suppression du package Appx: [$($AppxPackage.Name)] Erreur message: $($_.Exception.Message)" -Severity 3
|
|
}
|
|
}
|
|
|
|
#Supprimer les programmes installes
|
|
$InstalledPrograms | ForEach-Object {
|
|
|
|
Write-LogEntry -Value "Tentative de desinstallation: [$($_.Name)]" -Severity 1
|
|
|
|
Try {
|
|
$Null = $_ | Uninstall-Package -AllVersions -Force -ErrorAction Stop
|
|
Write-LogEntry -Value "Desinstallation reussie: [$($_.Name)]" -Severity 1
|
|
}
|
|
Catch {
|
|
Write-LogEntry -Value "Erreur de desinstallation: [$($_.Name)] Erreur message: $($_.Exception.Message)" -Severity 3
|
|
}
|
|
}
|
|
|
|
#Tentative de secours 1 pour supprimer HP Wolf Security a l'aide de msiexec
|
|
Try {
|
|
MsiExec /x "{0E2E04B0-9EDD-11EB-B38C-10604B96B11E}" /qn /norestart
|
|
Write-LogEntry -Value "Lancement de la desinstallation de MSI pour HP Wolf Security" -Severity 1
|
|
}
|
|
Catch {
|
|
Write-LogEntry -Value "Erreur de desinstallation HP Wolf Security using MSI - Erreur message: $($_.Exception.Message)" -Severity 3
|
|
}
|
|
|
|
#Tentative de secours 2 pour supprimer HP Wolf Security a l'aide de msiexec
|
|
Try {
|
|
MsiExec /x "{4DA839F0-72CF-11EC-B247-3863BB3CB5A8}" /qn /norestart
|
|
Write-LogEntry -Value "Lancement de la desinstallation de MSI pour HP Wolf 2 Security" -Severity 1
|
|
}
|
|
Catch {
|
|
Write-LogEntry -Value "Erreur de desinstallation HP Wolf Security 2 using MSI - Error message: $($_.Exception.Message)" -Severity 3
|
|
}
|
|
|
|
|
|
#Supprimer les raccourcis
|
|
$pathTCO = "C:\ProgramData\HP\TCO"
|
|
$pathTCOc = "C:\Users\Public\Desktop\TCO Certified.lnk"
|
|
$pathOS = "C:\Program Files (x86)\Online Services"
|
|
$pathFT = "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Free Trials.lnk"
|
|
|
|
if (Test-Path $pathTCO) {
|
|
Try {
|
|
Remove-Item -LiteralPath $pathTCO -Force -Recurse
|
|
Write-LogEntry -Value "Raccourci pour $pathTCO supprime" -Severity 1
|
|
}
|
|
Catch {
|
|
Write-LogEntry -Value "Erreur lors de la suppression $pathTCO $($_.Exception.Message)" -Severity 3
|
|
}
|
|
}
|
|
Else {
|
|
Write-LogEntry -Value "Dossier $pathTCO pas trouve" -Severity 1
|
|
}
|
|
|
|
if (Test-Path $pathTCOc -PathType Leaf) {
|
|
Try {
|
|
Remove-Item -Path $pathTCOc -Force -Recurse
|
|
Write-LogEntry -Value "Raccourci pour $pathTCOc supprime" -Severity 1
|
|
}
|
|
Catch {
|
|
Write-LogEntry -Value "Erreur lors de la suppression $pathTCOc $($_.Exception.Message)" -Severity 3
|
|
}
|
|
}
|
|
Else {
|
|
Write-LogEntry -Value "Fichier $pathTCOc pas trouve" -Severity 1
|
|
}
|
|
|
|
if (Test-Path $pathOS) {
|
|
Try {
|
|
Remove-Item -LiteralPath $pathOS -Force -Recurse
|
|
Write-LogEntry -Value "Raccourci pour $pathOS supprime" -Severity 1
|
|
}
|
|
Catch {
|
|
Write-LogEntry -Value "Erreur lors de la suppression $pathOS $($_.Exception.Message)" -Severity 3
|
|
}
|
|
}
|
|
Else {
|
|
Write-LogEntry -Value "Dossier $pathOS pas trouve" -Severity 1
|
|
}
|
|
|
|
if (Test-Path $pathFT -PathType Leaf) {
|
|
Try {
|
|
Remove-Item -Path $pathFT -Force -Recurse
|
|
Write-LogEntry -Value "Raccourci pour $pathFT supprime" -Severity 1
|
|
}
|
|
Catch {
|
|
Write-LogEntry -Value "Erreur lors de la suppression $pathFT $($_.Exception.Message)" -Severity 3
|
|
}
|
|
}
|
|
Else {
|
|
Write-LogEntry -Value "Fichier $pathFT pas trouve" -Severity 1
|
|
}
|
|
|
|
#Nettoyer le fichier de desinstallation pour HP Connection Optimizer
|
|
Remove-Item -Path C:\Windows\install\uninstallHPCO.iss -Force
|
|
Write-LogEntry -Value "Fichier supprime avec succes C:\Windows\install\uninstallHPCO.iss " -Severity 1 |