Install software using a custom client field (Cove)
Written By Mikel from Gorelo
Custom client fields can be used in scripts to install software with client specific info (keys, tokens etc.).
In this example, we'll use Cove Backup by N-Able.
Step 1: Create the client custom field
Navigate to Settings -> CRM-> Custom Fields
Add custom field with the following details
Name: Cove Customer UID
Variable: CoverCustomerUID
Step 2: Populate the 'Cover Customer UID' for each client
Navigate to a specific Client
Click on Custom Fields
Edit 'Cove Customer UID'
Enter the Customer UID retrieved from Cove
Step 3: Create the script
Navigate to Scripts
Create a script with the following details:
Name: βInstall-Cove
Content:
Example# ===== Configuration Variables =====
$CUSTOMERUID = $gorelo:client.CoveCustomerUID
$PROFILEID = "All-in" # Default retention policy
$PRODUCT = "0" # Profile ID (use "0" for no profile or a specific profile ID)
$DOWNLOADPATH = "C:\Windows\Temp"
# ===================================
$startTime = Get-Date
$INSTALL = "$DOWNLOADPATH\bm#$CUSTOMERUID#$PROFILEID#.exe"
# Download installer
try {
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
(New-Object System.Net.WebClient).DownloadFile("https://cdn.cloudbackup.management/maxdownloads/mxb-windows-x86_x64.exe", "$INSTALL")
} catch {
Write-Output "ERROR: Failed to download installer - $_"
exit 1
}
# Run installer
try {
Start-Process -FilePath $INSTALL -ArgumentList "-product-name `"$PRODUCT`"" -Wait -NoNewWindow
Start-Sleep -Seconds 5
} catch {
Write-Output "ERROR: Installation failed - $_"
exit 1
}
# Verify installation
$service = Get-Service -Name "Backup Service Controller" -ErrorAction SilentlyContinue
$process = Get-Process -Name "BackupFP" -ErrorAction SilentlyContinue
if ($service.Status -eq 'Running' -and $process) {
Write-Output "SUCCESS: Backup Service Controller is running and BackupFP process is active."
Write-Output "Installed for Customer UID: $CUSTOMERUID"
$exitCode = 0
} else {
Write-Output "WARNING: Backup Service Controller or BackupFP process is not running as expected."
Write-Output "Customer UID: $CUSTOMERUID"
# Check log for errors
$logDirectory = "C:\ProgramData\mxb\Backup Manager\logs\ClientTool"
if (Test-Path $logDirectory) {
$latestLog = Get-ChildItem -Path $logDirectory -Filter "*.log" | Sort-Object LastWriteTime -Descending | Select-Object -First 1
if ($latestLog) {
$errorLines = Get-Content -Path $latestLog.FullName | Where-Object { $_ -match '\[E\]' } | Select-Object -Last 3
if ($errorLines) {
Write-Output "Recent errors from log:"
$errorLines | ForEach-Object { Write-Output $_ }
}
}
}
$exitCode = 1
}
$endTime = Get-Date
Write-Output "Installation completed in $([math]::Round(($endTime - $startTime).TotalSeconds, 2)) seconds."
exit $exitCode