Important Update - 29 December 2025
We are working with ESET on a fully automated solution that replaces the guidelines in this article. If you haven't started setup, we highly recommend reading the email we sent you on this subject.
If you experience issues onboarding or deploying ESET from the Atera console and may need to manually reactivate and reinstall the agent, the steps below provide a workaround to complete the deployment.
Note:
- Only admin users can activate ESET.
Access to ESET PROTECT Cloud
A valid email address for ESET activation
Activate ESET
Note:
- Only admin users can activate ESET.
- To deploy the ESET agent to your end-user devices, you’ll need to log in to your ESET account and retrieve the ESET Installer URL. Once you have the URL, copy it and paste it into the associated field. Don’t worry—full, step-by-step instructions are provided below.
To activate ESET:
1. From App Center (on the sidebar), select ESET.
The ESET page appears.
2. Click Get started. The Activate ESET window appears.
3. Enter your email. Then click Activate.
4. Open your email.
Note:
- You may need to check your spam folder.
- The activation link will expire after 48 hours.
5. Click Activate your account.
You are redirected to the ESET MSP Administrator screen.
6. Enter the profile information for the ESET MSP Administrator account and agree to the ESET terms of use.
Note: The email address auto-populates with the email used to activate ESET within Atera. It cannot be edited.
7. Click CONTINUE.
Account activated! Click CLICK HERE TO SIGN IN.
8. Enter your email and password. Then click LOG IN.
The ESET MSP Administrator console appears.
9. Sync Company Data in Atera
- In the Atera Console, go to Admin -> App Center Setting.
-
Select ESET and click the Sync Customer button.
The MSP Administrator console is where you can add your companies and technicians. Once that’s set up, you’ll be ready to activate ESET PROTECT Cloud. Step-by-step instructions are provided below.
Note: Make sure the company is synced in Atera before you continue to activate the ESET protection.
Configure ESET PROTECT Console
1. Log in to the ESET PROTECT Cloud portal.
2. Activate the service for your selected region.
3. To get and configure the ESET installer URL:
- Log in to the ESET PROTECT CLOUD console
- From Installers (on the sidebar), click CREATE INSTALLER.
- Click Customize installer. The Create Installer wizard appears.
- Enter the basic details:
- Ensure Security Product is enabled.
- Click Select (under Parent group) to apply the installer to a specific group.
-
Select the group.
-
- Click OK.
- Enter the product setup details:
- Select the product (under Security product).
- Accept the End User License Agreement
- Click Customize more settings to expand the settings.
Note: If you don't want to enable RDP, click Finish and go to the next step. - Click Create (under Configuration).
The New Policy wizard appears.
- Enter the policy name (e.g., "Allow for RDP"). Then click CONTINUE.
- Configure the policy settings:
- Ensure the correct product is selected.
- Go to NETWORK PROTECTION > Firewall > ADVANCED > Rules > Edit.
The Firewall rules window appears. - Click Add. The Add rule window appears.
- Fill out fields in the General tab:
- Name: Enter the rule name (e.g., "Atera - RDP").
- Direction: Select In.
- Action: Select Allow.
- Protocol: Select TCP.
- Fill out fields in the Local tab:
- Port: Enter the following port number: "3389". Then click OK.
The rule appears in the Firewall rules window.
- Click OK.
The New Policy wizard appears.
- Click FINISH.
The Create installer wizard appears.
- Review the product setup. Then click FINISH.
The Distribution tab appears.
- Copy the installer link. You will need it in next step.
- Click FINISH.
Deploy ESET Using a Script
Use the Atera PowerShell script along with the installer URL generated in ESET PROTECT Cloud to deploy the ESET Agent.
Note: Please close the Atera wizard and follow the steps below
Prepare the Installer URL
Access the ESET PROTECT Cloud console.
Create an installer as described in the previous section.
Copy the Installer Link from the Distribution tab.
Update the Script with the Installer URL
In the script below, replace the "INSERT YOUR INSTALLER URL HERE" with your installer URL:
# Run PowerShell as Administrator
# ============================================================
# ESET reinstall script:
# 1) If ESET exists -> uninstall (via msiexec suppress reboot), cleanup, install
# 2) If ESET not installed -> install
# Installer is downloaded from the provided URL.
# ============================================================
$ErrorActionPreference = "Stop"
$DownloadUrl = "INSERT YOUR INSTALLER URL HERE"
$WorkDir = "C:\Windows\Temp"
$LogPath = Join-Path $WorkDir "ESET_Reinstall_$(Get-Date -Format 'yyyyMMdd_HHmmss').log"
function Log($msg) {
$line = "[{0}] {1}" -f (Get-Date -Format "yyyy-MM-dd HH:mm:ss"), $msg
Write-Host $line
Add-Content -Path $LogPath -Value $line
}
function Test-IsAdmin {
$currentIdentity = [Security.Principal.WindowsIdentity]::GetCurrent()
$principal = New-Object Security.Principal.WindowsPrincipal($currentIdentity)
return $principal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
}
function Abort-PendingRestart {
try {
Log "Attempting to abort any scheduled restart (shutdown /a)..."
& shutdown.exe /a | Out-Null
} catch {
# shutdown /a errors if no restart is scheduled; that's fine
Log "No scheduled restart to abort (or abort not applicable)."
}
}
function Stop-EsetServices {
$serviceNames = @("ekrn","ESETService","ESET Protect Agent","ERAAgent","ESET Management Agent")
foreach ($name in $serviceNames) {
$svc = Get-Service -Name $name -ErrorAction SilentlyContinue
if ($null -ne $svc -and $svc.Status -ne "Stopped") {
try {
Log "Stopping service: $name"
Stop-Service -Name $name -Force -ErrorAction SilentlyContinue
} catch {
Log "Failed stopping service $name (continuing): $($_.Exception.Message)"
}
}
}
}
function Cleanup-EsetLeftovers {
Log "Cleaning ESET leftovers (folders/services)..."
Stop-EsetServices
$pathsToRemove = @(
"$env:ProgramFiles\ESET",
"${env:ProgramFiles(x86)}\ESET",
"$env:ProgramData\ESET",
"$env:ProgramData\ESET\ESET Security",
"$env:ProgramData\ESET\ESET Endpoint Antivirus",
"$env:ProgramData\ESET\ESET Endpoint Security"
) | Where-Object { $_ -and $_.Trim() -ne "" } | Select-Object -Unique
foreach ($p in $pathsToRemove) {
if (Test-Path $p) {
try {
Log "Removing folder: $p"
Remove-Item -Path $p -Recurse -Force -ErrorAction SilentlyContinue
} catch {
Log "Failed removing $p (continuing): $($_.Exception.Message)"
}
}
}
Log "Cleanup completed."
}
function Download-EsetInstaller {
if (-not (Test-Path $WorkDir)) { New-Item -Path $WorkDir -ItemType Directory -Force | Out-Null }
# Some environments need TLS1.2 explicitly
try { [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 } catch {}
$tempPath = Join-Path $WorkDir ("ESET_Download_{0}.bin" -f (Get-Date -Format 'yyyyMMdd_HHmmss'))
Log "Downloading installer from: $DownloadUrl"
Log "Saving to temp file: $tempPath"
$resp = Invoke-WebRequest -Uri $DownloadUrl -OutFile $tempPath -MaximumRedirection 10 -UseBasicParsing -PassThru
# Determine filename from headers or final URI
$fileName = $null
$cd = $resp.Headers["Content-Disposition"]
if ($cd -and $cd -match 'filename="?([^";]+)"?') { $fileName = $Matches[1] }
if (-not $fileName) {
try {
$finalUri = $resp.BaseResponse.ResponseUri.AbsoluteUri
$leaf = Split-Path $finalUri -Leaf
if ($leaf -and $leaf.Contains(".")) { $fileName = $leaf }
} catch {}
}
if (-not $fileName) { $fileName = "ESETInstaller.exe" }
$finalPath = Join-Path $WorkDir $fileName
Move-Item -Path $tempPath -Destination $finalPath -Force
Log "Downloaded installer path: $finalPath"
return $finalPath
}
function Uninstall-EsetSuppressReboot {
Log "Searching for ESET products (Win32_Product)..."
$EsetProducts = Get-WmiObject -Class Win32_Product | Where-Object { $_.Name -match "ESET" }
if ($null -eq $EsetProducts -or $EsetProducts.Count -eq 0) {
Log "No ESET products found."
return $false
}
foreach ($product in $EsetProducts) {
Log "Preparing to uninstall: $($product.Name)"
# Use MSI GUID and msiexec so we can suppress reboot
$guid = $product.IdentifyingNumber
if (-not $guid) {
Log "No IdentifyingNumber (GUID) found for $($product.Name). Skipping."
continue
}
$args = "/x $guid /qn REBOOT=ReallySuppress /norestart"
Log "Running: msiexec.exe $args"
try {
$p = Start-Process -FilePath "msiexec.exe" -ArgumentList $args -Wait -PassThru
Log "msiexec exit code: $($p.ExitCode) (3010 = reboot required but suppressed)"
} catch {
Log "Uninstall failed for $($product.Name) (continuing): $($_.Exception.Message)"
}
# Abort any scheduled restart some uninstallers trigger
Abort-PendingRestart
}
Log "ESET uninstall process completed (reboot suppression attempted)."
return $true
}
function Install-Eset($InstallerPath) {
if (-not (Test-Path $InstallerPath)) { throw "Installer not found at: $InstallerPath" }
$ext = [IO.Path]::GetExtension($InstallerPath).ToLowerInvariant()
Log "Starting ESET install: $InstallerPath"
if ($ext -eq ".msi") {
$args = "/i `"$InstallerPath`" /qn /norestart"
Log "Running: msiexec.exe $args"
$p = Start-Process -FilePath "msiexec.exe" -ArgumentList $args -Wait -PassThru
Log "msiexec exit code: $($p.ExitCode)"
return $p.ExitCode
}
# EXE: try a few common silent arg sets (varies by ESET package)
$argCandidates = @(
"--silent --accepteula",
"/silent /accepteula",
"/quiet /norestart",
"/S"
)
foreach ($args in $argCandidates) {
try {
Log "Trying EXE install with args: $args"
$p = Start-Process -FilePath $InstallerPath -ArgumentList $args -Wait -PassThru
Log "Installer exit code with args [$args]: $($p.ExitCode)"
if ($p.ExitCode -eq 0 -or $p.ExitCode -eq 3010) {
return $p.ExitCode
}
} catch {
Log "Install attempt failed with args [$args] (continuing): $($_.Exception.Message)"
}
}
throw "All silent install argument attempts failed. This installer may require different silent switches."
}
# ----------------- MAIN -----------------
if (-not (Test-IsAdmin)) {
Write-Host "ERROR: Please run PowerShell as Administrator."
exit 1
}
if (-not (Test-Path $WorkDir)) { New-Item -Path $WorkDir -ItemType Directory -Force | Out-Null }
Log "===== ESET reinstall started ====="
# 1) Uninstall if present (suppress reboot)
$hadEset = Uninstall-EsetSuppressReboot
# 2) Cleanup if we removed something
if ($hadEset) {
Log "Starting cleanup..."
Cleanup-EsetLeftovers
}
# 3) Download + install
$installer = Download-EsetInstaller
Log "Installing ESET..."
$exitCode = Install-Eset -InstallerPath $installer
Log "===== Done. Install exit code: $exitCode ====="
exit $exitCode
Create the Script in Atera
In the Atera console, go to Admin > Scripts.
Click Create Script.
Select PowerShell as the script type (.ps1).
Paste the script below into the editor.
Save the script.
For detailed steps, refer to Create, upload, and generate scripts.
Run the Script on all you relevant devices
From Devices or Customers, select the target device(s).
Run the ESET deployment script.
Allow the script to complete, this process may take a little while.
After the script finishes:
-
In Atera:
Check the Software Inventory for the device
-
In ESET PROTECT Cloud:
Confirm the device appears in the console
You can also refer to this video guide: https://www.youtube.com/watch?v=aNLkbb11OXw.
How to move devices in ESET from one customer to another
After installation, all devices may initially appear under the same company in the ESET console.
For example, you may see all devices listed under a single company (e.g., esetTest2).
If you’d like to move a device to a different company, follow the steps below.
Note: The Atera customers are called "companies" in the ESET console.
In the ESET console, select the devices you want to move.
2. At the bottom of the window, click Actions.
3. Select Manage Device, then click Move to Group.
4. Choose the destination group where you want the devices to be moved then click OK to confirm.
5. Refresh the page to verify that the devices have been moved to the selected group.