Session 2026-03-30: SOPS vault, SC-Syncro sync, Syncro scripts
- SOPS+age credential vault created (59 encrypted files, separate repo) - Updated CLAUDE.md credential access to reference SOPS vault - Updated memory for ACG-5070 (Windows 11, replaces CachyOS) - SC-Syncro sync script: enriched 410 SC sessions with company/device data - Syncro scripts: SC property updater, SC deployer, rogue SC killer - Session log with full details Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
60
scripts/syncro-deploy-sc.ps1
Normal file
60
scripts/syncro-deploy-sc.ps1
Normal file
@@ -0,0 +1,60 @@
|
||||
# Syncro Script: Install ScreenConnect with Company Properties
|
||||
#
|
||||
# Syncro Platform Variables (set in script editor):
|
||||
# $MachineName - platform - {{asset_name}}
|
||||
# $OrgName - platform - {{customer_business_name_or_customer_name}}
|
||||
#
|
||||
# Required File:
|
||||
# ScreenConnect.ClientSetup.msi -> c:\screenconnectinstaller.msi
|
||||
# (Download from SC Admin > Build Installer > Access > Windows MSI)
|
||||
#
|
||||
# File Type: PowerShell | Run as: System | Max Run Time: 10 minutes
|
||||
|
||||
Import-Module $env:SyncroModule
|
||||
|
||||
$InstallerLocation = 'C:\screenconnectinstaller.msi'
|
||||
|
||||
# URL-encode spaces in names for SERVICE_ARGUMENTS
|
||||
$MachineName = $MachineName -replace '\s','%20'
|
||||
$OrgName = $OrgName -replace '\s','%20'
|
||||
|
||||
# Detect device type from chassis
|
||||
$DeviceType = "Desktop"
|
||||
try {
|
||||
$chassis = (Get-CimInstance -ClassName Win32_SystemEnclosure).ChassisTypes
|
||||
if ($chassis | Where-Object { $_ -in @(8,9,10,11,12,14,18,21,31,32) }) { $DeviceType = "Laptop" }
|
||||
if ($chassis | Where-Object { $_ -in @(17,23) }) { $DeviceType = "Server" }
|
||||
$model = (Get-CimInstance -ClassName Win32_ComputerSystem).Model
|
||||
if ($model -match "Virtual|VMware|VirtualBox|Hyper-V|KVM|Xen") { $DeviceType = "Virtual%20$DeviceType" }
|
||||
} catch {}
|
||||
|
||||
# Check if already installed
|
||||
$SCService = Get-Service -Name "ScreenConnect Client*" -ErrorAction SilentlyContinue
|
||||
if ($SCService) {
|
||||
Write-Host "ScreenConnect already installed: $($SCService.Name)"
|
||||
Log-Activity -Message "SC Deploy: Already installed ($($SCService.Name))" -EventName "ScreenConnect"
|
||||
exit 0
|
||||
}
|
||||
|
||||
# Build SERVICE_ARGUMENTS with custom properties
|
||||
# c=Company&c=Site&c=Department&c=DeviceType&c=Tag&c=&c=&c=
|
||||
$ServiceArgs = "SERVICE_ARGUMENTS=""?e=Access&y=Guest&h=computerguru.screenconnect.com&p=443&k=BgIAAACkAABSU0ExAAgAAAEAAQCZmJAsjX2QoAvu/VF8SV7ggAxARlSj/TwgdqA8NcZgw9q+6G/FWwABU2WOeGPvRu6rA+sECP+u11d1BOp16iWA+KbkJPT93TIctreTy/BegdplEL5Bq0L3ZJcim++PLZjwYLDaIotdnOl+24JqkV75DxC1MV9dKNkz5DqS1+jNVMBvpOLY8UgPc9Io71pNIMo/rakJNlT4ofNeJiKIfuwRtgNNYKb51vSHGyFPYtHVNjDNYlJeu320yNJdN0zWwSQst/2GR3hAX8SnzJcZeROZ3HJuJc63uT0KS4ie4+4ExKaUimtfl8oAqIp4vBwiEXhm8T5RKhx9hLiJj/5shza8&c=$OrgName&c=&c=&c=$DeviceType&c=Syncro-Deploy&c=&c=&c="""
|
||||
|
||||
$installparams = '/i', $InstallerLocation, $ServiceArgs
|
||||
$uninstallparams = '/uninstall', $InstallerLocation, '/qb'
|
||||
|
||||
# Install
|
||||
Write-Host "Installing ScreenConnect for $OrgName ($DeviceType)..."
|
||||
$exitCode = (Start-Process -FilePath msiexec.exe -ArgumentList $installparams -Wait -Passthru).ExitCode
|
||||
|
||||
if ($exitCode -eq 0 -or $exitCode -eq 3010) {
|
||||
Write-Host "ScreenConnect installed successfully (exit code: $exitCode)"
|
||||
Log-Activity -Message "SC Deploy: Installed for '$OrgName' ($DeviceType)" -EventName "ScreenConnect"
|
||||
} else {
|
||||
Write-Host "Installation failed with exit code: $exitCode"
|
||||
Log-Activity -Message "SC Deploy FAILED: exit code $exitCode" -EventName "ScreenConnect"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Cleanup
|
||||
Remove-Item -Path $InstallerLocation -Force -ErrorAction SilentlyContinue
|
||||
Reference in New Issue
Block a user