HP Bloatware mit Intune automatisiert enternen
Wir zeigen wie durch den Einsatz von Intune neue und alte Computer von HPs Bloatware bereinigt werden können.
Wir zeigen wie durch den Einsatz von Intune neue und alte Computer von HPs Bloatware bereinigt werden können.
Hallo zum allerersten Artikel über Intune und das Entfernen von HP Bloatware. Hier ein kurzer Überblick wer wir sind und wie wir auf das Thema gekommen sind: Wir sind ein IT-Dienstleister und zu unseren vielen Kunden aus Industrie, Handwerk und vielen anderen zählt auch eine Privatschule in Sachsen-Anhalt. Im Rahmen der Förderung "Digitalpakt Schule" gab es Gelder für die Anschaffung neuer IT-Ausstattung, unter anderem wurden HP Notebooks für alle Lehrer vom Land zur Verfügung gestellt.
Leider mussten die Lehrer die Geräte selbst einrichten, so dass wichtige Einstellungen nicht vorgenommen wurden. Da Privatschulen bekanntlich über ein gewisses Budget verfügen und Office 365 A1 bereits im Einsatz war, entschieden wir uns, die Geräte über Windows Autopilot in das zentrale Intune Management zu integrieren.
Im Folgenden wird nicht auf die Einrichtung von Intune und Autopilot eingegangen, sondern nur beschrieben, wie die HP Bloatware Apps automatisch entfernt werden können.
Was sind die Voraussetzungen?
Nach einigen Recherchen im Internet haben wir von Jeroen Burgerhout ein Skript zum Entfernen von HP Bloatware gefunden. Leider ist dieses nicht mehr ganz aktuell und es wurden nicht alle Programme entfernt.
Wir haben das Skript von ihm um 4 Programme erweitert. Es ist in unserem GitHub Repo zu finden. Am Ende der Seite finden Sie eine Beschreibung, wie das Skript funktioniert.
Damit das Script nun auf allen Computern und Notebooks die HP Bloatware entfernt muss es in Intune veröffentlicht werden und den Geräten zugewiesen werden.
Jetzt müssen Sie nur noch das Programm den Geräten zuweisen, dies kann für eine Handvoll Geräte manuell erfolgen, oder Sie erstellen eine Dynamische Gruppe mit der Zuweisung HP Geräte und wählen dann diese Gruppe bei Erforderlich aus.
Das script erstellt zuerst eine TAG-Datei. Anhand dieser kann Intune feststellen ob das Script erfolgreich installiert worden ist.
# Create a tag file just so Intune knows this was installed
if (-not (Test-Path "$($env:ProgramData)\HP\RemoveHPBloatware"))
{
Mkdir "$($env:ProgramData)\HP\RemoveHPBloatware"
}
Set-Content -Path "$($env:ProgramData)\HP\RemoveHPBloatware\RemoveHPBloatware.ps1.tag" -Value "Installed"
Im zweiten Teil des Scripts werden die Appx Packages von HP definiert. Natürlich können auch andere Programme hinzugefügt und Programme ausgeschlossen werden.
# Start logging
Start-Transcript "$($env:ProgramData)\HP\RemoveHPBloatware\RemoveHPBloatware.log"
# List of built-in apps to remove
$UninstallPackages = @(
"AD2F1837.HPEasyClean"
"AD2F1837.HPPCHardwareDiagnosticsWindows"
"AD2F1837.HPPowerManager"
"AD2F1837.HPPrivacySettings"
"AD2F1837.HPProgrammableKey"
"AD2F1837.HPQuickDrop"
"AD2F1837.HPSupportAssistant"
"AD2F1837.HPSystemInformation"
"AD2F1837.HPWorkWell"
"AD2F1837.myHP"
"Tile.TileWindowsApplication"
)
Teil drei des Scripts, hier werden die HP Programme definiert die entfernt werden sollen. Wie in teil zwei auch können Programme hinzugefügt werden.
# List of programs to uninstall
$UninstallPrograms = @(
"HP Client Security Manager"
"HP Notifications"
"HP Security Update Service"
"HP System Default Settings"
"HP Wolf Security"
"HP Wolf Security Application Support for Sure Sense"
"HP Wolf Security Application Support for Windows"
"HP Connection Optimizer"
"HP Documentation"
"HP Security Update Service"
"HP Sure Click"
"HP Sure Sense Installer"
"HP System Default Settings"
)
Im letzten Teil werden nun die Programme und Appx-Packages entfernt.
$HPidentifier = "AD2F1837"
$InstalledPackages = Get-AppxPackage -AllUsers | Where {($UninstallPackages -contains $_.Name)} #-or ($_.Name -match "^$HPidentifier")}
$ProvisionedPackages = Get-AppxProvisionedPackage -Online | Where {($UninstallPackages -contains $_.DisplayName)} #-or ($_.DisplayName -match "^$HPidentifier")}
$InstalledPrograms = Get-Package | Where {$UninstallPrograms -contains $_.Name}
# Remove provisioned packages first
ForEach ($ProvPackage in $ProvisionedPackages) {
Write-Host -Object "Attempting to remove provisioned package: [$($ProvPackage.DisplayName)]..."
Try {
$Null = Remove-AppxProvisionedPackage -PackageName $ProvPackage.PackageName -Online -ErrorAction Stop
Write-Host -Object "Successfully removed provisioned package: [$($ProvPackage.DisplayName)]"
}
Catch {Write-Warning -Message "Failed to remove provisioned package: [$($ProvPackage.DisplayName)]"}
}
# Remove appx packages
ForEach ($AppxPackage in $InstalledPackages) {
Write-Host -Object "Attempting to remove Appx package: [$($AppxPackage.Name)]..."
Try {
$Null = Remove-AppxPackage -Package $AppxPackage.PackageFullName -AllUsers -ErrorAction Stop
Write-Host -Object "Successfully removed Appx package: [$($AppxPackage.Name)]"
}
Catch {Write-Warning -Message "Failed to remove Appx package: [$($AppxPackage.Name)]"}
}
# Remove installed programs
$InstalledPrograms | ForEach {
Write-Host -Object "Attempting to uninstall: [$($_.Name)]..."
Try {
$Null = $_ | Uninstall-Package -AllVersions -Force -ErrorAction Stop
Write-Host -Object "Successfully uninstalled: [$($_.Name)]"
}
Catch {Write-Warning -Message "Failed to uninstall: [$($_.Name)]"}
}
Stop-Transcript