param( [Parameter(Mandatory=$false)][int]$CUSTOMER_ID=1, [Parameter(Mandatory=$false)][string]$INTEGRATOR_ID, [Parameter(Mandatory=$false)][string]$AGENT_FILENAME="AteraAgentSetup.msi", [Parameter(Mandatory=$false)][switch]$FORCE ) # Make sure $INTEGRATOR_ID exists, otherwise exit this script as an agent cannot be downloaded #If ( ($INTEGRATOR_ID -eq $null) -or ($INTEGRATOR_ID -eq '') ) { Exit } # Source the Tools.ps1 script Function SourceTools { . $([Scriptblock]::Create((New-Object Net.WebClient).DownloadString('https://dev.emberkom.com/emberkom/management-scripts/raw/branch/master/Tools.ps1'))) } . SourceTools # Build the path for $AGENT_INSTALLER $AGENT_INSTALLER = '{0}{1}' -f (Get-TempPath), $AGENT_FILENAME # Make sure we need to install the agent If ( (Test-Path "${Env:ProgramFiles}\ATERA Networks\AteraAgent\AteraAgent.exe") -or (Test-Path "${Env:ProgramFiles(x86)}\ATERA Networks\AteraAgent\AteraAgent.exe") ) { $INSTALL = $false ; $PreviousInstall = $true ; Write-Output "Atera agent is already installed on this endpoint" } Else { $INSTALL = $true ; $PreviousInstall = $false } If ( $FORCE ) { $INSTALL = $true } If ( $INSTALL ) { # Uninstall if $FORCE is true If ( $PreviousInstall ) { Write-Output "Getting information from existing installation" $ACCOUNT_ID = (Get-ItemPropertyValue -Path 'HKLM:SOFTWARE\ATERA Networks\AlphaAgent' -Name 'AccountId' -ErrorAction SilentlyContinue) $AGENT_ID = (Get-ItemPropertyValue -Path 'HKLM:SOFTWARE\ATERA Networks\AlphaAgent' -Name 'AgentId' -ErrorAction SilentlyContinue) $CUSTOMER_ID = (Get-ItemPropertyValue -Path 'HKLM:SOFTWARE\ATERA Networks\AlphaAgent' -Name 'CompanyId' -ErrorAction SilentlyContinue) $INTEGRATOR_ID = (Get-ItemPropertyValue -Path 'HKLM:SOFTWARE\ATERA Networks\AlphaAgent' -Name 'IntegratorLogin' -ErrorAction SilentlyContinue) Write-Output "AccountID : ${ACCOUNT_ID}" Write-Output "AgentID : ${AGENT_ID}" Write-Output "CustomerID : ${CUSTOMER_ID}" Write-Output "IntegratorID: ${INTEGRATOR_ID}" #Download and run the uninstall script $UninstallScript = Download-File -URL 'https://dev.emberkom.com/emberkom/management-scripts/raw/branch/master/Uninstall-AteraAgent.ps1' Try { Start-Process "powershell.exe" -ArgumentList "-ExecutionPolicy Bypass -Noninteractive -File ""${UninstallScript}""" -Wait } Catch { LogErr $_.Exception.Message } } # Replace the '@' with '%40' - not sure why this is necessary, but it is $INTEGRATOR_ID = $INTEGRATOR_ID.Replace('@','%40') # Download agent installer Download-File -URL "https://app.atera.com/GetAgent/Msi/?customerId=${CUSTOMER_ID}&integratorLogin=${INTEGRATOR_ID}" -File "${AGENT_INSTALLER}" # Install the agent Write-Output "Installing Atera agent from ""${AGENT_INSTALLER}""" Try { Start-Process "msiexec.exe" -ArgumentList "/i ""${AGENT_INSTALLER}"" /qn /norestart" -Wait } Catch { LogErr $_.Exception.Message } # Delete the agent installer Write-Output "Deleting ""${AGENT_INSTALLER}""" Try { Remove-Item $AGENT_INSTALLER -Force } Catch { LogErr $_.Exception.Message } If ( $PreviousInstall -and $ACCOUNT_ID -and $AGENT_ID -and $CUSTOMER_ID) { Write-Output "Restoring agent information from previous install" Write-Output " - Stopping AteraAgent service" Stop-Service -Name 'AteraAgent' -Force Write-Output " - Restoring AgentID and AccountID from previous install" Set-ItemProperty -Path 'HKLM:SOFTWARE\ATERA Networks\AlphaAgent' -Name 'AccountId' -Value $ACCOUNT_ID Set-ItemProperty -Path 'HKLM:SOFTWARE\ATERA Networks\AlphaAgent' -Name 'AgentId' -Value $AGENT_ID Write-Output " - Starting AteraAgent service" Start-Service -Name 'AteraAgent' } } # Delete this script Remove-Item $MyInvocation.MyCommand.Path -Force