Si vous devez supprimer l’Agent Atera de vos appareils après l’expiration de votre période d’essai (ou après la désactivation de votre compte), utilisez ce script proposé par un utilisateur. Un grand merci à David Yoder pour sa contribution !
Cet article fournit le script de suppression et propose une brève description des fonctions qu’il contient.
Supprimer l’Agent (Windows)
Exécutez ce script PowerShell pour supprimer l’Agent Atera de vos appareils.
Remarque :
- Ce script ne fonctionne que sur les appareils Windows avec une version de PowerShell à jour (il ne fonctionne pas sous Windows 7).
- Pour l’exécuter à distance, vous aurez besoin d’un contrôleur de domaine pour chaque réseau, de PSExec ou d’un autre outil RMM.
- Des droits administrateur sont nécessaires pour que le script fonctionne. Vous devez l’exécuter en tant qu’administrateur.
Function Get-UninstallCodes ([string]$DisplayName) {
'HKLM:SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall', 'HKLM:SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall' | ForEach-Object {
Get-ChildItem -Path $_ -ErrorAction SilentlyContinue | ForEach-Object {
If ( $(Get-ItemProperty -Path $_.PSPath -Name 'DisplayName' -ErrorAction SilentlyContinue) -and ($(Get-ItemPropertyValue -Path $_.PSPath -Name 'DisplayName' -ErrorAction SilentlyContinue) -eq $DisplayName) ) {
$str = (Get-ItemPropertyValue -Path $_.PSPath -Name 'UninstallString')
$UninstallCodes.Add($str.Substring(($str.Length - 37),36)) | Out-Null
}
}
}
}
Function Get-ProductKeys ([string]$ProductName) {
Get-ChildItem -Path 'HKCR:Installer\Products' | ForEach-Object {
If ( $(Get-ItemProperty -Path $_.PSPath -Name 'ProductName' -ErrorAction SilentlyContinue) -and ($(Get-ItemPropertyValue -Path $_.PSPath -Name 'ProductName' -ErrorAction SilentlyContinue) -eq $ProductName) ) {
$ProductKeys.Add($_.PSPath.Substring(($_.PSPath.Length - 32))) | Out-Null
}
}
}
Function Get-ServiceStatus ([string]$Name) { (Get-Service -Name $Name -ErrorAction SilentlyContinue).Status }
Function Stop-RunningService ([string]$Name) {
If ( $(Get-ServiceStatus -Name $Name) -eq "Running" ) { Write-Output "Stopping : ${Name} service" ; Stop-Service -Name $Name -Force }
}
Function Remove-StoppedService ([string]$Name) {
$s = (Get-ServiceStatus -Name $Name)
If ( $s ) {
If ( $s -eq "Stopped" ) {
Write-Output "Deleting : ${Name} service"
Start-Process "sc.exe" -ArgumentList "delete ${Name}" -Wait
}
} Else { Write-Output "Not Found: ${Name} service" }
}
Function Stop-RunningProcess ([string]$Name) {
$p = (Get-Process -Name $_ -ErrorAction SilentlyContinue)
If ( $p ) { Write-Output "Stopping : ${Name}.exe" ; $p | Stop-Process -Force }
Else { Write-Output "Not Found: ${Name}.exe is not running"}
}
Function Remove-Path ([string]$Path) {
If ( Test-Path $Path ) {
Write-Output "Deleting : ${Path}"
Remove-Item $Path -Recurse -Force
} Else { Write-Output "Not Found: ${Path}" }
}
Function Get-AllExeFiles ([string]$Path) {
If ( Test-Path $Path ) {
Get-ChildItem -Path $Path -Filter *.exe -Recurse | ForEach-Object { $ExeFiles.Add($_.BaseName) | Out-Null }
}
}
# Mount HKEY_CLASSES_ROOT registry hive
New-PSDrive -Name HKCR -PSProvider Registry -Root HKEY_CLASSES_ROOT | Out-Null
#######
# START: Information gathering
#######
# Get MSI package codes from the uninstall key
$UninstallCodes = New-Object System.Collections.ArrayList
'AteraAgent', 'Splashtop for RMM', 'Splashtop Streamer' | ForEach-Object { Get-UninstallCodes -DisplayName $_ }
# Get product keys from the list of installed products
$ProductKeys = New-Object System.Collections.ArrayList
'AteraAgent', 'Splashtop for RMM', 'Splashtop Streamer' | ForEach-Object { Get-ProductKeys -ProductName $_ }
# Define all the directories we'll need to cleanup at the end of this script
$Directories = @(
"${Env:ProgramFiles}\ATERA Networks",
"${Env:ProgramFiles(x86)}\ATERA Networks",
"${Env:ProgramFiles}\Splashtop\Splashtop Remote\Server",
"${Env:ProgramFiles(x86)}\Splashtop\Splashtop Remote\Server",
"${Env:ProgramFiles}\Splashtop\Splashtop Software Updater",
"${Env:ProgramFiles(x86)}\Splashtop\Splashtop Software Updater",
"${Env:ProgramData}\Splashtop\Splashtop Software Updater"
)
# Get all possible relevant exe files so we can make sure they're closed later on
$ExeFiles = New-Object System.Collections.ArrayList
"${Env:ProgramFiles}\ATERA Networks" | ForEach-Object { Get-AllExeFiles -Path $_ }
# Define a list of services we need to stop and delete (if necessary)
$ServiceList = @(
'AteraAgent',
'SplashtopRemoteService',
'SSUService'
)
# Define a list of registry keys we'll delete
$RegistryKeys = @(
'HKLM:SOFTWARE\ATERA Networks',
'HKLM:SOFTWARE\Splashtop Inc.',
'HKLM:SOFTWARE\WOW6432Node\Splashtop Inc.'
)
#######
# END: Information gathering
#######
# Uninstall each MSI package code in $UninstallCodes
$UninstallCodes | ForEach-Object { Write-Output "Uninstall: ${_}" ; Start-Process "msiexec.exe" -ArgumentList "/X{${_}} /qn" -Wait }
# Stop services if they're still running
$ServiceList | ForEach-Object { Stop-RunningService -Name $_ }
# Terminate all relevant processes that may still be running
$ExeFiles.Add('reg') | Out-Null
$ExeFiles | ForEach-Object { Stop-RunningProcess $_ }
# Delete services if they're still present
$ServiceList | ForEach-Object { Remove-StoppedService -Name $_ }
# Delete products from MSI installer registry
$ProductKeys | ForEach-Object { Remove-Path -Path "HKCR:Installer\Products\${_}" }
# Unmount HKEY_CLASSES_ROOT registry hive
Remove-PSDrive -Name HKCR
# Delete registry keys
$RegistryKeys | ForEach-Object { Remove-Path -Path $_ }
# Delete remaining directories
#Write-Host "Waiting for file locks to be freed" ; Start-Sleep -Seconds 4
$Directories | ForEach-Object { Remove-Path -Path $_ }
Explication du script PowerShell (en bref)
Le script de suppression de l’agent est composé de plusieurs fonctions, expliquées ci-dessous :
-
Get-UninstallCodes : Récupère les codes de package MSI à partir de la clé de désinstallation pour :
- Atera Agent
- Splashtop for RMM
- Splashtop Streamer
-
Get-ProductKeys : Récupère les clés produit des produits suivants :
- Atera Agent
- Splashtop for RMM
- Splashtop Streamer
- Get-ServiceStatus : Récupère tous les services en cours d’exécution.
- Stop-RunningService : Arrête les services récupérés par la fonction ‘Get-ServiceStatus’.
- Remove-StoppedService : Supprime les services arrêtés par la fonction ‘Stop-RunningService’.
- Stop-RunningProcess : Arrête les processus (Atera Agent et Splashtop Streamer) en cours d’exécution.
-
Remove-Path : Supprime tous les fichiers des dossiers suivants.
- {Env:ProgramFiles}\ATERA Networks
- {Env:ProgramFiles(x86)}\ATERA Networks
- {Env:ProgramFiles}\Splashtop\Splashtop Remote\Server
- {Env:ProgramFiles(x86)}\Splashtop\Splashtop Remote\Server
- {Env:ProgramFiles}\Splashtop\Splashtop Software Updater
- {Env:ProgramFiles(x86)}\Splashtop\Splashtop Software Updater
- {Env:ProgramData}\Splashtop\Splashtop Software Updater
- Get-AllExeFiles : Recherche les fichiers .exe concernés sous Atera Networks et Splashtop Streamer — y compris leurs processus enfants — pour s’assurer qu’ils ont bien été supprimés.
Supprimer l’Agent (Mac)
Exécutez les commandes suivantes pour effectuer un nettoyage complet sur les appareils Mac :
V1
cd "/Library/Application Support"
sudo rm -rf com.atera*
sudo rm -rf /Library/LaunchDaemons/com.atera.ateraagent.plist
sudo rm -rf /Applications/AteraAgent.appV2
sudo launchctl unload /Library/LaunchDaemons/com.atera.agent.plist 2>/dev/null
sudo launchctl stop com.atera.agent
sudo rm -rf /Library/Application\ Support/com.atera*
sudo rm -f /Library/LaunchDaemons/com.atera*
sudo rm -rf /Applications/AteraAgent.app
sudo pkgutil --forget com.atera.ateraagent
sudo pkgutil --forget com.atera.agent
Supprimer l’Agent (Linux)
Vous devez exécuter cette commande dans le Terminal pour supprimer l’agent Atera de votre appareil Linux.
/usr/lib/atera-agent/uninstall.sh