[CmdletBinding()] param( [string]$TOKEN, [int]$CUSTOMER_ID, [int]$SOFTWARE_ID=101, [string]$SERVER='manage.emberkom.com', [string]$AGENT_FILENAME='EmberkomAgentSetup.exe' ) ## Get temporary path $TEMP = [System.IO.Path]::GetTempPath() ## Setup log file and function to write to it $LOGFILE = "{0}EmberkomAgentSetup_{1}.log" -f $TEMP, $(Get-Date -Format "yyyyMMddHHmmss") If (! (Test-Path $LOGFILE) ) { New-Item -Path $LOGFILE -ItemType File | Out-Null; Write-Output "Log file: ${LOGFILE}" } Function Write-Log([string]$message) { $entry = "{0} : {1}" -f $(Get-Date -Format "yyyyMMddHHmmss"), $Message Add-Content -Path $LOGFILE -Value $entry } Write-Log "Agent installation script has started" ## Immediately delete this script from disk $THIS_SCRIPT = $MyInvocation.InvocationName Write-Log "Deleting this script: ${THIS_SCRIPT}" Try { Remove-Item $MyInvocation.InvocationName -Force } Catch { Write-Log "This script tried to delete itself but failed!" } Write-Log "CUSTOMER_ID: ${CUSTOMER_ID}" Write-Log "SOFTWARE_ID: ${SOFTWARE_ID}" ## Build the path for $AGENT_INSTALLER $AGENT_INSTALLER = "${TEMP}${AGENT_FILENAME}" Write-Log "Agent installer will be saved to: ${AGENT_INSTALLER}" ## Make sure the CUSTOMER_ID is specified If ( $CUSTOMER_ID -and $TOKEN ) { ## Make sure we need to install the agent If ( !(Test-Path 'HKLM:SOFTWARE\N-able Technologies\NcentralAsset') -and !(Test-Path 'SOFTWARE\Wow6432Node\N-able Technologies\NcentralAsset')) { ## Build the AGENT_URL #$AGENT_URL = 'https://manage.emberkom.com/downloadAgentOrProbeSoftwareDownloadAction.action?customerId={0}&softwareId={1}' -f $CUSTOMER_ID.ToString(),$SOFTWARE_ID.ToString() $AGENT_URL = 'https://manage.emberkom.com/download/2020.1.0.202/winnt/N-central/WindowsAgentSetup.exe' ## Delete $AGENT_INSTALLER if it already exists If ( Test-Path $AGENT_INSTALLER ) { Write-Log "Deleting previous agent installer: ${AGENT_INSTALLER}" Try { Remove-Item $AGENT_INSTALLER -Force } Catch { Write-Log $_.Exception.Message } } ## Download the agent installer Write-Log "Downloading agent installer from: ${AGENT_URL}" Try { (New-Object System.Net.WebClient).DownloadFile($AGENT_URL, $AGENT_INSTALLER) } Catch { Write-Log $_.Exception.Message ; Exit } ## Install the agent Write-Log "Begin installing agent" Try { Start-Process $AGENT_INSTALLER -ArgumentList "/s /v /qn CUSTOMERID=${CUSTOMER_ID} CUSTOMERSPECIFIC=1 REGISTRATION_TOKEN=${TOKEN} SERVERPROTOCOL=HTTPS SERVERADDRESS=${SERVER} SERVERPORT=443" -Wait } Catch { Write-Log $_.Exception.Message } ## Remove the agent installer If ( Test-Path $AGENT_INSTALLER ) { Write-Log "Deleting agent installer: ${AGENT_INSTALLER}" Try { Remove-Item -Path $AGENT_INSTALLER -Force } Catch { Write-Log $_.Exception.Message } } Write-Log "Agent installation script has finished" } Else { Write-Log "The agent is already installed on this endpoint." } } Else { Write-Log "No CUSTOMER_ID or TOKEN was specified!" }