# author: https://github.com/bradhawkins85 $innosetup = 'winagent-v2.0.4.exe' $api = '"https://api.cowetacomputers.com"' $clientid = '1' $siteid = '1' $agenttype = '"workstation"' $power = 1 $rdp = 1 $ping = 1 $auth = '"edf67a6cdd23b4164e2a6160f12bf9aac9294b01eca2d68ece7f269e130c7308"' $downloadlink = 'https://agents.tacticalrmm.com/api/v1/winagents/?version=2.0.4&arch=64&token=eae35df1-413a-4608-b2c1-549448d2002c' $apilink = $downloadlink.split('/') [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 $serviceName = 'tacticalagent' If (Get-Service $serviceName -ErrorAction SilentlyContinue) { write-host ('Tactical RMM Is Already Installed') } Else { $OutPath = $env:TMP $output = $innosetup $installArgs = @('-m install --api ', "$api", '--client-id', $clientid, '--site-id', $siteid, '--agent-type', "$agenttype", '--auth', "$auth") if ($power) { $installArgs += "--power" } if ($rdp) { $installArgs += "--rdp" } if ($ping) { $installArgs += "--ping" } Try { $DefenderStatus = Get-MpComputerStatus | select AntivirusEnabled if ($DefenderStatus -match "True") { Add-MpPreference -ExclusionPath 'C:\Program Files\TacticalAgent\*' Add-MpPreference -ExclusionPath 'C:\Windows\Temp\winagent-v*.exe' Add-MpPreference -ExclusionPath 'C:\Program Files\Mesh Agent\*' Add-MpPreference -ExclusionPath 'C:\Windows\Temp\trmm*\*' } } Catch { # pass } $X = 0 do { Write-Output "Waiting for network" Start-Sleep -s 5 $X += 1 } until(($connectresult = Test-NetConnection $apilink[2] -Port 443 | ? { $_.TcpTestSucceeded }) -or $X -eq 3) if ($connectresult.TcpTestSucceeded -eq $true){ Try { Invoke-WebRequest -Uri $downloadlink -OutFile $OutPath\$output Start-Process -FilePath $OutPath\$output -ArgumentList ('/VERYSILENT /SUPPRESSMSGBOXES') -Wait write-host ('Extracting...') Start-Sleep -s 5 Start-Process -FilePath "C:\Program Files\TacticalAgent\tacticalrmm.exe" -ArgumentList $installArgs -Wait exit 0 } Catch { $ErrorMessage = $_.Exception.Message $FailedItem = $_.Exception.ItemName Write-Error -Message "$ErrorMessage $FailedItem" exit 1 } Finally { Remove-Item -Path $OutPath\$output } } else { Write-Output "Unable to connect to server" } }