Files
Intune/intune/Proactive Remediations/DellInc-DellSupportAssistforPCs/Remediate-DellSupportAssistforPCs.ps1

87 lines
2.8 KiB
PowerShell

<#
.SYNOPSIS
This script is used to detect and remediate built-in apps in Windows 11.
.DESCRIPTION
The script provides two main functionalities: detection and remediation of built-in apps. By default, the script runs in detection mode, but it can also be configured to perform remediation.
The list of built-in apps to be detected and remediated can be customized by modifying the $appxPackageList array in the script.
.NOTES
File Name : Detect-Remediate-DellSupportAssistforPCs.ps1
Author : Martin Bengtsson
Blog : https://www.imab.dk
#>
param (
[bool]$runDetection = $true,
[bool]$runRemediation = $true
)
begin {
$appxPackageList = @(
"DellInc.DellSupportAssistforPCs"
)
function Test-InstalledAppxPackages() {
foreach ($app in $appxPackageList) {
try {
$isAppInstalled = Get-AppxPackage -Name $app -ErrorAction SilentlyContinue
if (-NOT[string]::IsNullOrEmpty($isAppInstalled)) {
Write-Output $app
}
}
catch {
Write-Output "[ERROR] Failed to retrieve the installed app: $_"
}
}
}
function Remove-InstalledAppxPackages() {
param (
[string]$appxPackage
)
try {
Get-AppxPackage -Name $appxPackage | Remove-AppxPackage
$global:remediationSuccess += $true
}
catch {
Write-Output "[ERROR] Failed to remove the app: $_"
}
}
if ($runDetection -eq $false) {
Write-Output "[ERROR] runDetection cannot be set to false. As a minimum runDetection must be set to true."
exit 1
}
}
process {
$global:needsRemediation = @()
$global:remediationSuccess = @()
$installedAppxPackages = Test-InstalledAppxPackages
if ($runDetection -eq $true) {
if (-NOT[string]::IsNullOrEmpty($installedAppxPackages)) {
foreach ($app in $installedAppxPackages) {
$global:needsRemediation += $true
if ($runRemediation -eq $true) {
Remove-InstalledAppxPackages -appxPackage $app
}
}
}
}
}
end {
if ($runDetection -eq $true) {
if ($global:needsRemediation -contains $true -AND $global:remediationSuccess -notcontains $true) {
Write-Output "[WARNING] Built-in apps found installed. Remediation is needed."
exit 1
}
elseif ($global:remediationSuccess -contains $true -AND $global:remediationSuccess -notcontains $false) {
Write-Output "[OK] Remediation was run successfully. Built-in apps were removed."
exit 0
}
else {
Write-Output "[OK] No built-in apps found. Doing nothing."
exit 0
}
}
}