Skip to content
Snippets Groups Projects
Commit 2cc7012b authored by Andreas Lindemark's avatar Andreas Lindemark
Browse files

Moved this script to an other folder dedicated to ZabbixAgent

parent 770b2174
No related branches found
No related tags found
No related merge requests found
<#=======================================================
Remove Zabbix Agent and Zabbix Agent 2 and clean up
=======================================================#>
# Start the Script
Write-Host "Starting script execution..."
# Determine the name of the currently executing script without the extension
$scriptName = [System.IO.Path]::GetFileNameWithoutExtension($MyInvocation.MyCommand.Name)
# Set the log file path based on the script name
$transcriptPath = "C:\Install Logs\$scriptName.log"
# Start Transcript
Start-Transcript -Path $transcriptPath
# Initialize a flag to track if any uninstallation or removal has occurred
$changesMade = $false
# Function to check if a Chocolatey package is installed
function Test-PackageInstalled {
param (
[string]$PackageName
)
$installedPackages = choco list --exact $PackageName
return $installedPackages -match "^$PackageName"
}
# Function to check if a service exists
function Test-Service {
param (
[string]$ServiceName
)
return $null -ne (Get-Service -Name $ServiceName -ErrorAction SilentlyContinue)
}
# Function to stop a service if it exists
function Stop-ServiceIfExists {
param (
[string]$ServiceName,
[ref]$changesMade
)
if (Test-Service -ServiceName $ServiceName) {
Write-Output "Stopping service: $ServiceName"
Stop-Service -Name $ServiceName -Force -ErrorAction SilentlyContinue
$changesMade.Value = $true
} else {
Write-Output "Service $ServiceName not found. No action taken."
}
}
# Function to uninstall a Chocolatey package if it exists
function Uninstall-ChocoPackageIfExists {
param (
[string]$PackageName,
[ref]$changesMade
)
if (Test-PackageInstalled -PackageName $PackageName) {
Write-Output "Uninstalling package: $PackageName"
choco uninstall -y $PackageName
$changesMade.Value = $true
} else {
Write-Output "Package $PackageName not found. No action taken."
}
}
# Function to remove remaining files and registry entries
function Remove-ZabbixAgentRemnants {
param (
[string]$AgentName,
[string]$InstallPath,
[string]$ServiceName,
[ref]$changesMade
)
# Stop and remove the service
Stop-ServiceIfExists -ServiceName $ServiceName -changesMade ([ref]$changesMade)
if (Test-Service -ServiceName $ServiceName) {
Write-Output "Removing service: $ServiceName"
sc.exe delete $ServiceName
$changesMade.Value = $true
}
# Remove installation directory
if (Test-Path -Path $InstallPath) {
Write-Output "Removing directory: $InstallPath"
Remove-Item -Path $InstallPath -Recurse -Force
$changesMade.Value = $true
}
# Remove registry entries
$registryPaths = @(
"HKLM:\SOFTWARE\$AgentName",
"HKLM:\SYSTEM\CurrentControlSet\Services\$ServiceName",
"HKLM:\SYSTEM\CurrentControlSet\Services\EventLog\Application\$AgentName"
)
foreach ($path in $registryPaths) {
if (Test-Path -Path $path) {
Write-Output "Removing registry path: $path"
Remove-Item -Path $path -Recurse -Force
$changesMade.Value = $true
}
}
}
# Function to search for Zabbix files in specified paths
function Search-ZabbixFiles {
param (
[string]$searchPath,
[string]$searchPattern
)
Write-Output "Searching for Zabbix files in $searchPath..."
$files = Get-ChildItem -Path $searchPath -Recurse -Filter $searchPattern -ErrorAction SilentlyContinue
foreach ($file in $files) {
Write-Output "Found file: $($file.FullName)"
}
}
# Remove Zabbix Agent
Write-Output "Stop Zabbix Agent service and uninstall."
Stop-ServiceIfExists -ServiceName "Zabbix Agent" -changesMade ([ref]$changesMade)
Uninstall-ChocoPackageIfExists -PackageName "zabbix-agent" -changesMade ([ref]$changesMade)
Remove-ZabbixAgentRemnants -AgentName "Zabbix Agent" -InstallPath "C:\Program Files\Zabbix Agent" -ServiceName "Zabbix Agent" -changesMade ([ref]$changesMade)
# Remove Zabbix Agent 2
Write-Output "Stop Zabbix Agent 2 service and uninstall."
Stop-ServiceIfExists -ServiceName "Zabbix Agent 2" -changesMade ([ref]$changesMade)
Uninstall-ChocoPackageIfExists -PackageName "zabbix-agent2" -changesMade ([ref]$changesMade)
Remove-ZabbixAgentRemnants -AgentName "Zabbix Agent 2" -InstallPath "C:\Program Files\Zabbix Agent 2" -ServiceName "Zabbix Agent 2" -changesMade ([ref]$changesMade)
# Search for Zabbix files in specified paths
Search-ZabbixFiles -searchPath "C:\ProgramData\chocolatey\.chocolatey" -searchPattern "*zabbix*"
Search-ZabbixFiles -searchPath "C:\ProgramData\chocolatey" -searchPattern "*zabbix*"
Search-ZabbixFiles -searchPath "C:\ProgramData\ChocolateyHttpCache" -searchPattern "*zabbix*"
# Inform that a reboot should be done if any changes were made
if ($changesMade) {
Write-Host ""
Write-Host "A reboot should be done before reinstalling any of the Zabbix agents." -ForegroundColor Yellow
Write-Host ""
# Windows GUI popup to remind about reboot
Add-Type -AssemblyName System.Windows.Forms
$popup = New-Object System.Windows.Forms.Form
$popup.Text = "Reboot Reminder"
$popup.Size = New-Object System.Drawing.Size(300,150)
$popup.StartPosition = "CenterScreen"
$label = New-Object System.Windows.Forms.Label
$label.Text = "A reboot should be done before reinstalling any of the Zabbix agents."
$label.AutoSize = $true
$label.Location = New-Object System.Drawing.Point(10,20)
$popup.Controls.Add($label)
$rebootButton = New-Object System.Windows.Forms.Button
$rebootButton.Text = "Reboot"
$rebootButton.Location = New-Object System.Drawing.Point(50,70)
$rebootButton.Add_Click({
Restart-Computer -Force
})
$popup.Controls.Add($rebootButton)
$cancelButton = New-Object System.Windows.Forms.Button
$cancelButton.Text = "Cancel"
$cancelButton.Location = New-Object System.Drawing.Point(150,70)
$cancelButton.Add_Click({
$popup.Close()
})
$popup.Controls.Add($cancelButton)
$popup.ShowDialog()
}
# Stop Transcript
Write-Host "Stopping transcript..."
Stop-Transcript
Write-Host "Script execution completed."
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment