diff --git a/docs/cwrmm/custom-fields/deploy-todyl-sgn-connect.md b/docs/cwrmm/custom-fields/deploy-todyl-sgn-connect.md new file mode 100644 index 000000000..e530491fe --- /dev/null +++ b/docs/cwrmm/custom-fields/deploy-todyl-sgn-connect.md @@ -0,0 +1,33 @@ +--- +id: 'e21d58b1-9fd5-4888-9e1f-788420313237' +slug: /e21d58b1-9fd5-4888-9e1f-788420313237 +title: 'Deploy Todyl SGN Connect' +title_meta: 'Deploy Todyl SGN Connect' +keywords: ['todyl', 'todyl-sgn-connect', 'deploy-todyl'] +description: 'Select the Operating System for auto installing Todyl SGN Connect agent.' +tags: ['application', 'installation', 'security'] +draft: false +unlisted: false +--- + +## Summary + +Select the Operating System for auto installing Todyl SGN Connect agent. However, the [Install Todyl SGN Connect](/docs/c23cdc78-f90e-4aba-b77e-4dff9d612940) task can still be run manually, independent of this field. + +## Dependencies + +- [Solution: Todyl SGN Connect Deployment](/docs/41308550-ea69-4cca-aa0d-9e6f02fcab43) + +## Custom Field Setup Location + +**Custom Fields Path:** `SETTINGS` ➞ `Custom Fields` + +## Details + +| Name | Level | Type | Options | Default Value | Editable | Description | +| ---- | ----- | ---- | ------- | ------------- | -------- | ----------- | +| Deploy Todyl SGN Connect | COMPANY | Dropdown | | | Yes | Select the Operating System for auto installing Todyl SGN Connect agent. | + +## Completed Custom Field + +![Image1](../../../static/img/docs/e21d58b1-9fd5-4888-9e1f-788420313237/image1.webp) diff --git a/docs/cwrmm/custom-fields/exclude-todyl-deployment-device.md b/docs/cwrmm/custom-fields/exclude-todyl-deployment-device.md new file mode 100644 index 000000000..037b15026 --- /dev/null +++ b/docs/cwrmm/custom-fields/exclude-todyl-deployment-device.md @@ -0,0 +1,34 @@ +--- +id: 'ee6d7b42-0783-422a-a820-8ef36aab0713' +slug: /ee6d7b42-0783-422a-a820-8ef36aab0713 +title: 'Exclude Todyl Deployment Device' +title_meta: 'Exclude Todyl Deployment Device' +keywords: ['todyl', 'todyl-sgn-connect', 'deploy-todyl'] +description: 'Flag this Custom Field to exclude the Device/Endpoint from Todyl SGN Connect agent auto-deployment.' +tags: ['application', 'installation', 'security'] +draft: false +unlisted: false +--- + +## Summary + +Flag this Custom Field to exclude the Device/Endpoint from Todyl SGN Connect agent auto-deployment. However, the [Install Todyl SGN Connect](/docs/c23cdc78-f90e-4aba-b77e-4dff9d612940) task can still be run manually, independent of this field. + +## Dependencies + +- [Deploy Todyl SGN Connect](/docs/e21d58b1-9fd5-4888-9e1f-788420313237) +- [Solution: Todyl SGN Connect Deployment](/docs/41308550-ea69-4cca-aa0d-9e6f02fcab43) + +## Custom Field Setup Location + +**Custom Fields Path:** `SETTINGS` ➞ `Custom Fields` + +## Details + +| Name | Level | Type | Default Value | Editable | Description | +| ---- | ----- | ---- | ------------- | -------- | ----------- | +| Exclude Todyl Deployment Device | ENDPOINT | Flag | | Yes | Flag this Custom Field to exclude the Device/Endpoint from Todyl SGN Connect agent auto-deployment. | + +## Completed Custom Field + +![Image1](../../../static/img/docs/ee6d7b42-0783-422a-a820-8ef36aab0713/image1.webp) diff --git a/docs/cwrmm/custom-fields/exclude-todyl-deployment-site.md b/docs/cwrmm/custom-fields/exclude-todyl-deployment-site.md new file mode 100644 index 000000000..5496ff674 --- /dev/null +++ b/docs/cwrmm/custom-fields/exclude-todyl-deployment-site.md @@ -0,0 +1,34 @@ +--- +id: 'b4d717f5-38fe-4eac-83d4-d1cb88e7fe9d' +slug: /b4d717f5-38fe-4eac-83d4-d1cb88e7fe9d +title: 'Exclude Todyl Deployment Site' +title_meta: 'Exclude Todyl Deployment Site' +keywords: ['todyl', 'todyl-sgn-connect', 'deploy-todyl'] +description: 'Flag this Custom Field to exclude the Site from Todyl SGN Connect agent auto-deployment.' +tags: ['application', 'installation', 'security'] +draft: false +unlisted: false +--- + +## Summary + +Flag this Custom Field to exclude the Site from Todyl SGN Connect agent auto-deployment. However, the [Install Todyl SGN Connect](/docs/c23cdc78-f90e-4aba-b77e-4dff9d612940) task can still be run manually, independent of this field. + +## Dependencies + +- [Deploy Todyl SGN Connect](/docs/e21d58b1-9fd5-4888-9e1f-788420313237) +- [Solution: Todyl SGN Connect Deployment](/docs/41308550-ea69-4cca-aa0d-9e6f02fcab43) + +## Custom Field Setup Location + +**Custom Fields Path:** `SETTINGS` ➞ `Custom Fields` + +## Details + +| Name | Level | Type | Default Value | Editable | Description | +| ---- | ----- | ---- | ------------- | -------- | ----------- | +| Exclude Todyl Deployment Site | SITE | Flag | | Yes | Flag this Custom Field to exclude the Site from Todyl SGN Connect agent auto-deployment. | + +## Completed Custom Field + +![Image1](../../../static/img/docs/b4d717f5-38fe-4eac-83d4-d1cb88e7fe9d/image1.webp) diff --git a/docs/cwrmm/custom-fields/todyl-desktop-policy-key.md b/docs/cwrmm/custom-fields/todyl-desktop-policy-key.md new file mode 100644 index 000000000..6799d7f34 --- /dev/null +++ b/docs/cwrmm/custom-fields/todyl-desktop-policy-key.md @@ -0,0 +1,34 @@ +--- +id: '8656e3f6-5cfc-49b9-a700-cbf453744576' +slug: /8656e3f6-5cfc-49b9-a700-cbf453744576 +title: 'Todyl Desktop Policy Key' +title_meta: 'Todyl Desktop Policy Key' +keywords: ['todyl', 'todyl-sgn-connect', 'deploy-todyl'] +description: 'Todyl Deployment Key for Desktop Agents.' +tags: ['application', 'installation', 'security'] +draft: false +unlisted: false +--- + +## Summary + +Todyl Deployment Key for Desktop Agents. + +## Dependencies + +- [Deploy Todyl SGN Connect](/docs/e21d58b1-9fd5-4888-9e1f-788420313237) +- [Solution: Todyl SGN Connect Deployment](/docs/41308550-ea69-4cca-aa0d-9e6f02fcab43) + +## Custom Field Setup Location + +**Custom Fields Path:** `SETTINGS` ➞ `Custom Fields` + +## Details + +| Name | Level | Type | Default Value | Editable | Description | +| ---- | ----- | ---- | ------------- | -------- | ----------- | +| Todyl Desktop Policy Key | COMPANY | Text Box | | Yes | Todyl Deployment Key for Desktop Agents. | + +## Completed Custom Field + +![Image1](../../../static/img/docs/8656e3f6-5cfc-49b9-a700-cbf453744576/image1.webp) diff --git a/docs/cwrmm/custom-fields/todyl-laptop-policy-key.md b/docs/cwrmm/custom-fields/todyl-laptop-policy-key.md new file mode 100644 index 000000000..ab8528c5a --- /dev/null +++ b/docs/cwrmm/custom-fields/todyl-laptop-policy-key.md @@ -0,0 +1,34 @@ +--- +id: '894b9f2c-e0ac-4351-a312-f7f55865e32a' +slug: /894b9f2c-e0ac-4351-a312-f7f55865e32a +title: 'Todyl Laptop Policy Key' +title_meta: 'Todyl Laptop Policy Key' +keywords: ['todyl', 'todyl-sgn-connect', 'deploy-todyl'] +description: 'Todyl Deployment Key for Laptop Agents.' +tags: ['application', 'installation', 'security'] +draft: false +unlisted: false +--- + +## Summary + +Todyl Deployment Key for Laptop Agents. + +## Dependencies + +- [Deploy Todyl SGN Connect](/docs/e21d58b1-9fd5-4888-9e1f-788420313237) +- [Solution: Todyl SGN Connect Deployment](/docs/41308550-ea69-4cca-aa0d-9e6f02fcab43) + +## Custom Field Setup Location + +**Custom Fields Path:** `SETTINGS` ➞ `Custom Fields` + +## Details + +| Name | Level | Type | Default Value | Editable | Description | +| ---- | ----- | ---- | ------------- | -------- | ----------- | +| Todyl Laptop Policy Key | COMPANY | Text Box | | Yes | Todyl Deployment Key for Laptop Agents. | + +## Completed Custom Field + +![Image1](../../../static/img/docs/894b9f2c-e0ac-4351-a312-f7f55865e32a/image1.webp) diff --git a/docs/cwrmm/custom-fields/todyl-server-policy-key.md b/docs/cwrmm/custom-fields/todyl-server-policy-key.md new file mode 100644 index 000000000..2843edc4f --- /dev/null +++ b/docs/cwrmm/custom-fields/todyl-server-policy-key.md @@ -0,0 +1,34 @@ +--- +id: 'e7b46cfc-c872-4d3c-b317-2b59a6c9679d' +slug: /e7b46cfc-c872-4d3c-b317-2b59a6c9679d +title: 'Todyl Servers Policy Key' +title_meta: 'Todyl Servers Policy Key' +keywords: ['todyl', 'todyl-sgn-connect', 'deploy-todyl'] +description: 'Todyl Deployment Key for Server Agents.' +tags: ['application', 'installation', 'security'] +draft: false +unlisted: false +--- + +## Summary + +Todyl Deployment Key for Server Agents. + +## Dependencies + +- [Deploy Todyl SGN Connect](/docs/e21d58b1-9fd5-4888-9e1f-788420313237) +- [Solution: Todyl SGN Connect Deployment](/docs/41308550-ea69-4cca-aa0d-9e6f02fcab43) + +## Custom Field Setup Location + +**Custom Fields Path:** `SETTINGS` ➞ `Custom Fields` + +## Details + +| Name | Level | Type | Default Value | Editable | Description | +| ---- | ----- | ---- | ------------- | -------- | ----------- | +| Todyl Servers Policy Key | COMPANY | Text Box | | Yes | Todyl Deployment Key for Server Agents. | + +## Completed Custom Field + +![Image1](../../../static/img/docs/e7b46cfc-c872-4d3c-b317-2b59a6c9679d/image1.webp) diff --git a/docs/cwrmm/groups/todyl-sgn-connect-deployment.md b/docs/cwrmm/groups/todyl-sgn-connect-deployment.md new file mode 100644 index 000000000..b7db5b7db --- /dev/null +++ b/docs/cwrmm/groups/todyl-sgn-connect-deployment.md @@ -0,0 +1,64 @@ +--- +id: '34482e9f-122f-490d-b3c8-1e1d466bbc77' +slug: /34482e9f-122f-490d-b3c8-1e1d466bbc77 +title: 'Todyl SGN Connect Deployment' +title_meta: 'Todyl SGN Connect Deployment' +keywords: ['todyl', 'todyl-sgn-connect', 'deploy-todyl'] +description: 'Group for machines where Todyl SGN Connect deployment is enabled but application is not installed.' +tags: ['application', 'installation', 'security'] +draft: false +unlisted: false +--- + +## Summary + +Group for machines where Todyl SGN Connect deployment is enabled but application is not installed. + +## Dependencies + +- [Deploy Todyl SGN Connect](/docs/e21d58b1-9fd5-4888-9e1f-788420313237) +- [Exclude Todyl Deployment Device](/docs/ee6d7b42-0783-422a-a820-8ef36aab0713) +- [Exclude Todyl Deployment Site](/docs/b4d717f5-38fe-4eac-83d4-d1cb88e7fe9d) +- [Solution: Todyl SGN Connect Deployment](/docs/41308550-ea69-4cca-aa0d-9e6f02fcab43) + +## Group Setup Location + +- **Group Path:** `ENDPOINTS` ➞ `Groups` +- **Group Type:** `Dynamic Group` + +## Group Summary + +- **Group Name:** `Todyl SGN Connect Deployment` +- **Description:** `Group for machines where Todyl SGN Connect deployment is enabled but application is not installed.` +![Image1](../../../static/img/docs/34482e9f-122f-490d-b3c8-1e1d466bbc77/image1.webp) + +## Group Criteria + +The group is defined by the following **criteria blocks**, joined by an **OR**. Each block uses **AND** logic between its conditions. + +| Block | Criteria Name | Operator | Value(s) | +|-------|-----------------------|-----------------|-------------------------------------------| +| 1 | Deploy Todyl SGN Connect | Contains any of | `Windows Workstation`, `Windows Workstation and Windows Server` | +| 1 | OS Type | Equal | `Windows` | +| 1 | Endpoint Type | Not Equal | `Server` | +| 1 | Installed Software Name | Does Not Contain any of | `SGN Connect` | +| 1 | Exclude Todyl Deploy Device | Equal | `False` | +| 1 | Exclude Todyl Deploy Site | Equal | `False` | +| 2 | Deploy Todyl SGN Connect | Contains any of | `Windows Server`, `Windows Workstation and Windows Server` | +| 2 | OS Type | Equal | `Windows` | +| 2 | Endpoint Type | Equal | `Server` | +| 2 | Installed Software Name | Does Not Contain any of | `SGN Connect` | +| 2 | Exclude Todyl Deploy Device | Equal | `False` | +| 2 | Exclude Todyl Deploy Site | Equal | `False` | + +- **Block 1:** Targets Windows Workstations (not servers) +- **Block 2:** Targets Windows Servers + +**Logic:** +A machine joins the group if it meets ALL criteria in Block 1 OR ALL criteria in Block 2. + +![Image2](../../../static/img/docs/34482e9f-122f-490d-b3c8-1e1d466bbc77/image2.webp) + +## Completed Group + +![Image3](../../../static/img/docs/34482e9f-122f-490d-b3c8-1e1d466bbc77/image3.webp) diff --git a/docs/cwrmm/monitors/todyl-sgn-connect-deployment.md b/docs/cwrmm/monitors/todyl-sgn-connect-deployment.md new file mode 100644 index 000000000..e84caef81 --- /dev/null +++ b/docs/cwrmm/monitors/todyl-sgn-connect-deployment.md @@ -0,0 +1,73 @@ +--- +id: '373305fd-1b01-488e-9105-ada540040fc0' +slug: /373305fd-1b01-488e-9105-ada540040fc0 +title: 'Todyl SGN Connect Deployment' +title_meta: 'Todyl SGN Connect Deployment' +keywords: ['todyl', 'todyl-sgn-connect', 'deploy-todyl'] +description: 'Run the Automation to deploy Todyl SGN Connect on windows machines where deployment is enabled but agent is not installed.' +tags: ['application', 'installation', 'security'] +draft: false +unlisted: false +--- + +## Summary + +Run the [Automation](/docs/c23cdc78-f90e-4aba-b77e-4dff9d612940) to deploy Todyl SGN Connect on windows machines where deployment is enabled but agent is not installed.' + +## Dependencies + +- [Deploy Todyl SGN Connect](/docs/e21d58b1-9fd5-4888-9e1f-788420313237) +- [Exclude Todyl Deployment Device](/docs/ee6d7b42-0783-422a-a820-8ef36aab0713) +- [Exclude Todyl Deployment Site](/docs/b4d717f5-38fe-4eac-83d4-d1cb88e7fe9d) +- [Todyl Desktop Policy Key](/docs/8656e3f6-5cfc-49b9-a700-cbf453744576) +- [Todyl Laptop Policy Key](/docs/894b9f2c-e0ac-4351-a312-f7f55865e32a) +- [Todyl Servers Policy Key](/docs/e7b46cfc-c872-4d3c-b317-2b59a6c9679d) +- [Todyl SGN Connect Deployment](/docs/34482e9f-122f-490d-b3c8-1e1d466bbc77) +- [Install Todyl SGN Connect](/docs/c23cdc78-f90e-4aba-b77e-4dff9d612940) +- [Solution: Todyl SGN Connect Deployment](/docs/41308550-ea69-4cca-aa0d-9e6f02fcab43) + +## Monitor Setup Location + +**Monitors Path:** `ENDPOINTS` ➞ `Alerts` ➞ `Monitors` + +## Monitor Summary + +- **Name:** `Todyl SGN Connect Deployment` +- **Description:** `Run the Automation to deploy Todyl SGN Connect on windows machines where deployment is enabled but agent is not installed.` +- **Type:** `Application` +- **Severity:** `Others` +- **Family:** `Security` + +![Image1](../../../static/img/docs/373305fd-1b01-488e-9105-ada540040fc0/image1.webp) + +## Targeted Resources + +- **Target Type:** `Device Groups` +- **Group Name:** `Todyl SGN Connect Deployment` + +![Image2](../../../static/img/docs/373305fd-1b01-488e-9105-ada540040fc0/image2.webp) + +## Conditions + +- **Application Status:** `Not Installed` +- **Application Name:** `Contains` +- **Enter Value:** `SGN Connect` +- **Add Automation:** `Install Todyl SGN Connect` + +![Image3](../../../static/img/docs/373305fd-1b01-488e-9105-ada540040fc0/image3.webp) + +## Ticket Resolution + +**Automatically Resolve:** `Disabled` + +![Image4](../../../static/img/docs/373305fd-1b01-488e-9105-ada540040fc0/image4.webp) + +## Monitor Output + +**Output:** `Do not Generate Ticket` + +![Image5](../../../static/img/docs/373305fd-1b01-488e-9105-ada540040fc0/image5.webp) + +## Completed Monitor + +![Image6](../../../static/img/docs/373305fd-1b01-488e-9105-ada540040fc0/image6.webp) \ No newline at end of file diff --git a/docs/cwrmm/tasks/install-todyl-sgn-connect.md b/docs/cwrmm/tasks/install-todyl-sgn-connect.md new file mode 100644 index 000000000..c1af14aae --- /dev/null +++ b/docs/cwrmm/tasks/install-todyl-sgn-connect.md @@ -0,0 +1,320 @@ +--- +id: 'c23cdc78-f90e-4aba-b77e-4dff9d612940' +slug: /c23cdc78-f90e-4aba-b77e-4dff9d612940 +title: 'Install Todyl SGN Connect' +title_meta: 'Install Todyl SGN Connect' +keywords: ['todyl', 'todyl-sgn-connect', 'deploy-todyl'] +description: 'Installs the Todyl SGN Connect on Windows systems using the appropriate deployment key for servers, laptops, or desktops.' +tags: ['application', 'installation', 'security'] +draft: false +unlisted: false +--- + +## Summary + +Installs the Todyl SGN Connect on Windows systems using the appropriate deployment key for servers, laptops, or desktops. + +## Dependencies + +- [Todyl Desktop Policy Key](/docs/8656e3f6-5cfc-49b9-a700-cbf453744576) +- [Todyl Laptop Policy Key](/docs/894b9f2c-e0ac-4351-a312-f7f55865e32a) +- [Todyl Servers Policy Key](/docs/e7b46cfc-c872-4d3c-b317-2b59a6c9679d) +- [Solution: Todyl SGN Connect Deployment](/docs/41308550-ea69-4cca-aa0d-9e6f02fcab43) + +## Sample Run + +![Image1](../../../static/img/docs/c23cdc78-f90e-4aba-b77e-4dff9d612940/image1.webp) + +## User Parameters + +| Name | Example | Accepted Values | Required | Default | Type | Description | +|------------------|-----------|---------------------|----------|---------|------------|-----------------------------------------------------------------------------| +| Force | `Yes` | `Yes`, `No` | `No` | `No` | `Flag` | If enabled, forces installation even if SGN Connect is already installed. | + +## Custom Fields + +| Name | Level | Type | Required | Description | +|---------------------|---------|------|----------|------------------------------------------------| +| Todyl Desktop Policy Key | Company | Text | Yes | Todyl Deployment Key for Desktop Agents. | +| Todyl Laptop Policy Key | Company | Text | Yes | Todyl Deployment Key for Laptop Agents. | +| Todyl Servers Policy Key | Company | Text | Yes | Todyl Deployment Key for Server Agents. | + +## Task Setup Path + +- **Tasks Path:** `AUTOMATION` ➞ `Tasks` +- **Task Type:** `Script Editor` + +## Task Creation + +### Description + +- **Name:** `Install Todyl SGN Connect` +- **Description:** `Installs the Todyl SGN Connect on Windows systems using the appropriate deployment key for servers, laptops, or desktops.` +- **Category:** `Application` + +![Image2](../../../static/img/docs/c23cdc78-f90e-4aba-b77e-4dff9d612940/image2.webp) + +### Parameters + +| Parameter Name | Required Field | Parameter Type | Default Value | +| -------------- | -------------- | -------------- | ------------- | +| Force | Disabled | Flag | Disabled | + +**Force:** + ![Image3](../../../static/img/docs/c23cdc78-f90e-4aba-b77e-4dff9d612940/image3.webp) + +![Image4](../../../static/img/docs/c23cdc78-f90e-4aba-b77e-4dff9d612940/image4.webp) + +### Script Editor + +#### Row 1: Set Pre-defined Variable ( @laptopDeploymentKey@ = Todyl Laptop Policy Key ) + +- **Variable Name:** `laptopDeploymentKey` +- **Type:** `Custom Field` +- **Custom Field:** `Todyl Laptop Policy Key` +- **Continue on Failure:** `False` +- **Operating System:** `Windows` + +![Image5](../../../static/img/docs/c23cdc78-f90e-4aba-b77e-4dff9d612940/image5.webp) + +#### Row 2: Set Pre-defined Variable ( @desktopDeploymentKey@ = Todyl Desktop Policy Key ) + +- **Variable Name:** `desktopDeploymentKey` +- **Type:** `Custom Field` +- **Custom Field:** `Todyl Desktop Policy Key` +- **Continue on Failure:** `False` +- **Operating System:** `Windows` + +![Image6](../../../static/img/docs/c23cdc78-f90e-4aba-b77e-4dff9d612940/image6.webp) + +#### Row 3: Set Pre-defined Variable ( @serverDeploymentKey@ = Todyl Server Policy Key ) + +- **Variable Name:** `serverDeploymentKey` +- **Type:** `Custom Field` +- **Custom Field:** `Todyl Server Policy Key` +- **Continue on Failure:** `False` +- **Operating System:** `Windows` + +![Image7](../../../static/img/docs/c23cdc78-f90e-4aba-b77e-4dff9d612940/image7.webp) + +#### Row 4: PowerShell script + +- **Use Generative AI Assist for script creation:** `False` +- **Expected time of script execution in seconds:** `600` +- **Continue on Failure:** `False` +- **Run As:** `System` +- **Operating System:** `Windows` +- **PowerShell Script Editor:** + +```PowerShell +<# +.SYNOPSIS + Installs the Todyl SGN Connect agent on Windows devices using company-level deployment keys from CW RMM. + +.DESCRIPTION + This script automates the installation of the Todyl SGN Connect agent. It determines the device type (server, laptop, or desktop) + and uses the corresponding company-level custom field deployment key for installation. The script supports forced reinstallation, + verifies installation success, and cleans up temporary files. + +.PARAMETER laptopDeploymentKey + Company-level custom field named "Todyl Laptop Policy Key". Used for laptops. + +.PARAMETER desktopDeploymentKey + Company-level custom field named "Todyl Desktop Policy Key". Used for desktops. + +.PARAMETER serverDeploymentKey + Company-level custom field named "Todyl Server Policy Key". Used for servers. + +.PARAMETER force + If set to 1, Yes, or True, forces installation even if SGN Connect is already installed. + +.NOTES + - Requires administrative privileges. + - Designed for use with CW RMM or similar remote management platforms. + - Deployment keys must be provided via company-level custom fields. + +.EXAMPLE + .\Install-TodylAgentCWRMM.ps1 + Installs SGN Connect using the appropriate deployment key based on device type. + +#> + +#region Globals +$ErrorActionPreference = 'Stop' +$ProgressPreference = 'SilentlyContinue' +[Net.ServicePointManager]::SecurityProtocol = [Enum]::ToObject([Net.SecurityProtocolType], 3072) +#endRegion + +#region Variables +$appName = 'SGN Connect' +$workingDirectory = '{0}\_Automation\Script\{1}' -f $env:ProgramData, $appName +$appPath = '{0}\SGNConnect_Latest.exe' -f $workingDirectory +$downloadURL = 'https://download.todyl.com/sgn_connect/SGNConnect_Latest.exe' +$sgnExecutablePath = 'C:\Program Files\SGN Connect\Current\sgnconnect.exe' +#endRegion + +#region Functions +function Test-TodylInstall { + [CmdletBinding()] + [OutputType([bool])] + param ( + [Parameter(Mandatory)][String]$SoftwareName + ) + + $uninstallPaths = @( + 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall', + 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall' + ) + $uninstallInfo = Get-ChildItem $uninstallPaths -ErrorAction SilentlyContinue | + Get-ItemProperty | + Where-Object { + $_.DisplayName -match [Regex]::Escape($SoftwareName) + } + if ($uninstallInfo) { + return $true + } else { + return $false + } +} +#endRegion + +#region CW RMM Variables +$laptopDeploymentKey = '@laptopDeploymentKey@' +$desktopDeploymentKey = '@desktopDeploymentKey@' +$serverDeploymentKey = '@serverDeploymentKey@' +$force = '@Force@' +#endRegion + +#region Set Script Variables +if ([String]::IsNullOrEmpty($laptopDeploymentKey) -or $laptopDeploymentKey -match 'laptopDeploymentKey@$' -or $laptopDeploymentKey -eq 'NA') { + $laptopDeploymentKey = '' +} + +if ([String]::IsNullOrEmpty($desktopDeploymentKey) -or $desktopDeploymentKey -match 'desktopDeploymentKey@$' -or $desktopDeploymentKey -eq 'NA') { + $desktopDeploymentKey = '' +} + +if ([String]::IsNullOrEmpty($serverDeploymentKey) -or $serverDeploymentKey -match 'serverDeploymentKey@$' -or $serverDeploymentKey -eq 'NA') { + $serverDeploymentKey = '' +} + +if ($force -match '1|Yes|True') { + $force = $true +} else { + $force = $false +} +#endRegion + +#region Install Check +if (-not (Test-TodylInstall -SoftwareName $appName)) { + Write-Information ('Todyl {0} is not installed. Proceeding with installation.' -f $appName) -InformationAction Continue +} elseif ($force) { + Write-Information ('Todyl {0} is already installed and force parameter is enabled. Proceeding with installation.' -f $appName) -InformationAction Continue +} else { + return ('Todyl {0} is already installed and force parameter is not enabled. Skipping installation.' -f $appName) +} +#endregion + +#region Get Computer Information +$computerSystem = Get-CimInstance -ClassName Win32_ComputerSystem +$myOS = (Get-CimInstance -ClassName Win32_OperatingSystem).ProductType +#endRegion + +#region Set Todyl Installation Key +if ($myOS -eq 1) { + Write-Information ('Todyl {0} is a server. Setting installation key.' -f $appName) -InformationAction Continue + if ($serverDeploymentKey -eq '') { + throw ('Todyl {0} server deployment key not provided. Exiting installation.' -f $appName) + } else { + $todylKey = $serverDeploymentKey + } +} elseif ($computerSystem.PCSystemType -eq 2) { + Write-Information ('Todyl {0} is a laptop. Setting installation key.' -f $appName) -InformationAction Continue + if ($laptopDeploymentKey -eq '') { + throw ('Todyl {0} laptop deployment key not provided. Exiting installation.' -f $appName) + } else { + $todylKey = $laptopDeploymentKey + } +} else { + Write-Information ('Todyl {0} is a desktop. Setting installation key.' -f $appName) -InformationAction Continue + if ($desktopDeploymentKey -eq '') { + throw ('Todyl {0} desktop deployment key not provided. Exiting installation.' -f $appName) + } else { + $todylKey = $desktopDeploymentKey + } +} +#endRegion + +#region Working Directory +if ( !(Test-Path -Path $workingDirectory) ) { + try { + New-Item -Path $workingDirectory -ItemType Directory -Force -ErrorAction Stop | Out-Null + } catch { + throw ('Failed to Create {0}. Reason: {1}' -f $workingDirectory, $($Error[0].Exception.Message)) + } +} +#endRegion + +#region Download +try { + Invoke-WebRequest -Uri $downloadURL -OutFile $appPath -UseBasicParsing -ErrorAction Stop +} catch { + throw ('Failed to download {0}. Reason: {1}' -f $appName, $($_.Exception.Message)) +} +Unblock-File -Path $appPath -ErrorAction SilentlyContinue +#endRegion + +#region Install SGN Connect +$arguments = @( + '/Silent', + '/DeployKey', + "$todylKey" +) +try { + $procInfo = Start-Process -FilePath $appPath -ArgumentList $arguments -Wait -PassThru +} catch { + throw ('Failed to install {0}. Reason: {1}' -f $appName, $($Error[0].Exception.Message)) +} +#endRegion + +#region Run SGNConnect +if ($procInfo.ExitCode -eq 0) { + if (Test-Path -Path $sgnExecutablePath) { + Start-Process -FilePath $sgnExecutablePath + } else { + throw ('SGN Connect executable not found at expected path.') + } +} else { + throw ('{0} installation failed with exit code {1}.' -f $appName, $procInfo.ExitCode) +} +#endRegion + +#region Install Verification +if (Test-TodylInstall -SoftwareName $appName) { + return ('Todyl {0} installation completed successfully.' -f $appName) +} else { + throw ('Todyl {0} installation failed with exit code {1}.' -f $appName, $procInfo.ExitCode) +} +#endregion + +#region Cleanup +Remove-Item -Path $appPath -Force -ErrorAction SilentlyContinue +#endregion +``` + +![Image8](../../../static/img/docs/c23cdc78-f90e-4aba-b77e-4dff9d612940/image8.webp) + +#### Row 5: Script Log + +- **Script Log Message:** `%Output%` +- **Operating System:** `Windows` + +![Image9](../../../static/img/docs/c23cdc78-f90e-4aba-b77e-4dff9d612940/image9.webp) + +## Completed Script + +![Image10](../../../static/img/docs/c23cdc78-f90e-4aba-b77e-4dff9d612940/image10.webp) + +## Output + +- Script Log diff --git a/docs/solutions/deploy-todyl-sgn-connect.md b/docs/solutions/deploy-todyl-sgn-connect.md new file mode 100644 index 000000000..6cef58a5f --- /dev/null +++ b/docs/solutions/deploy-todyl-sgn-connect.md @@ -0,0 +1,98 @@ +--- +id: '41308550-ea69-4cca-aa0d-9e6f02fcab43' +slug: /41308550-ea69-4cca-aa0d-9e6f02fcab43 +title: 'Deploy Todyl SGN Connect' +title_meta: 'Deploy Todyl SGN Connect' +keywords: ['todyl', 'todyl-sgn-connect', 'deploy-todyl', 'sgn-connect'] +description: 'The solution outlines the process of auto deploying Todyl SGN Connect agent from CW RMM.' +tags: ['application', 'installation', 'security'] +draft: false +unlisted: false +--- + +## Purpose + +This solution outlines the full process for automatically deploying the Todyl SGN Connect agent using ConnectWise RMM, utilizing custom fields, a dynamic device group, a scheduled monitor, and an automated installation script with device-specific deployment keys. + +## Associated Content + +### Custom Fields + +| Name | Example | Type | Level | Required | Purpose | +|------|---------|------|-------|----------|---------| +| [Deploy Todyl SGN Connect](/docs/e21d58b1-9fd5-4888-9e1f-788420313237) | Windows Workstation and Server | Dropdown | COMPANY | Yes | Select OS to enable auto-deployment of Todyl SGN Connect agent. | +| [Exclude Todyl Deployment Site](/docs/b4d717f5-38fe-4eac-83d4-d1cb88e7fe9d) | | Flag | SITE | No | Prevents agent deployment at specific sites. | +| [Exclude Todyl Deployment Device](/docs/ee6d7b42-0783-422a-a820-8ef36aab0713) | | Flag | ENDPOINT | No | Prevents agent deployment to specific endpoints or devices. | +| [Todyl Desktop Policy Key](/docs/8656e3f6-5cfc-49b9-a700-cbf453744576) | | Text Box | COMPANY | Yes | Todyl Deployment Key for Desktop Agents. | +| [Todyl Laptop Policy Key](/docs/894b9f2c-e0ac-4351-a312-f7f55865e32a) | | Text Box | COMPANY | Yes | Todyl Deployment Key for Laptop Agents. | +| [Todyl Servers Policy Key](/docs/e7b46cfc-c872-4d3c-b317-2b59a6c9679d) | | Text Box | COMPANY | Yes | Todyl Deployment Key for Server Agents. | + +### Group + +| Name | Purpose | +|------|---------| +| [Todyl SGN Connect Deployment](/docs/34482e9f-122f-490d-b3c8-1e1d466bbc77) | Dynamic group targeting Windows devices that are eligible for auto deployment (based on OS selection and not excluded). | + +### Monitor + +| Name | Type | Schedule | Purpose | +|------|------|----------|---------| +| [Todyl SGN Connect Deployment](/docs/373305fd-1b01-488e-9105-ada540040fc0) | Application | Continuous | Monitors and runs the agent installation script on devices missing Todyl SGN Connect. | + +### Task + +| Name | Purpose | +|------|---------| +| [Install Todyl SGN Connect](/docs/c23cdc78-f90e-4aba-b77e-4dff9d612940) | PowerShell script that installs or reinstalls Todyl SGN Connect with device-specific deployment keys. | + +## Implementation + +### Step 1: Create the Required Custom Fields + +Create all the custom fields listed above under `SETTINGS → Custom Fields` in CW RMM. See individual documentation pages for configuration details. + +- [Deploy Todyl SGN Connect](/docs/e21d58b1-9fd5-4888-9e1f-788420313237) +- [Exclude Todyl Deployment Site](/docs/b4d717f5-38fe-4eac-83d4-d1cb88e7fe9d) +- [Exclude Todyl Deployment Device](/docs/ee6d7b42-0783-422a-a820-8ef36aab0713) +- [Todyl Desktop Policy Key](/docs/8656e3f6-5cfc-49b9-a700-cbf453744576) +- [Todyl Laptop Policy Key](/docs/894b9f2c-e0ac-4351-a312-f7f55865e32a) +- [Todyl Servers Policy Key](/docs/e7b46cfc-c872-4d3c-b317-2b59a6c9679d) + +### Step 2: Create the Dynamic Group + +Create the group [Todyl SGN Connect Deployment](/docs/34482e9f-122f-490d-b3c8-1e1d466bbc77) under `ENDPOINTS → Groups` as a dynamic group. This group targets Windows workstations or servers with deployment enabled and not excluded. + +### Step 3: Create the Installation Task + +Create the install script task [Install Todyl SGN Connect](/docs/c23cdc78-f90e-4aba-b77e-4dff9d612940) under `AUTOMATION → Tasks`. Set up all required variables and use the detailed script from the referenced documentation. + +### Step 4: Set up the Deployment Monitor + +Configure the monitor [Todyl SGN Connect Deployment](/docs/373305fd-1b01-488e-9105-ada540040fc0) under `ENDPOINTS → Alerts → Monitors` to target the deployment enabled group, running continuously and triggering the installation task on devices missing Todyl SGN Connect. + +### Step 5: Configure Deployment Parameters + +Obtain the Desktop, Laptop, and Server deployment keys from your Todyl portal and set these values in the appropriate company-level custom fields for each client. + +## FAQ + +**Q: What happens if a device is excluded at the site or device level?** +A: Devices or sites flagged for exclusion will not receive the agent through automatic deployment. However, the [Install Todyl SGN Connect](/docs/c23cdc78-f90e-4aba-b77e-4dff9d612940) task can be executed manually. + +**Q: How does the solution check devices for agent installation?** +A: The monitor runs continuously and checks for devices in the target group that don't have Todyl SGN Connect installed. + +**Q: Can I trigger the agent install manually?** +A: Yes, the [Install Todyl SGN Connect](/docs/c23cdc78-f90e-4aba-b77e-4dff9d612940) task can be run on demand independent of monitor or group status. + +**Q: Where do I find the deployment keys for different device types?** +A: These values are available in your Todyl portal under the agent deployment section, with separate keys for desktops, laptops, and servers. + +**Q: What OSes are supported for automated deployment?** +A: Supported OS selection is controlled by the `Deploy Todyl SGN Connect` custom field (Windows Workstation, Windows Server, Both, or Disabled). + +**Q: Does the installer support forced reinstallation?** +A: Yes, enable the "Force" runtime parameter when running the install task/script to force a reinstall even if the agent is present. + +**Q: How does the script determine device type?** +A: The script automatically detects whether a device is a server, laptop, or desktop and uses the appropriate deployment key for installation. \ No newline at end of file diff --git a/static/img/docs/34482e9f-122f-490d-b3c8-1e1d466bbc77/image1.webp b/static/img/docs/34482e9f-122f-490d-b3c8-1e1d466bbc77/image1.webp new file mode 100644 index 000000000..9567ce04d Binary files /dev/null and b/static/img/docs/34482e9f-122f-490d-b3c8-1e1d466bbc77/image1.webp differ diff --git a/static/img/docs/34482e9f-122f-490d-b3c8-1e1d466bbc77/image2.webp b/static/img/docs/34482e9f-122f-490d-b3c8-1e1d466bbc77/image2.webp new file mode 100644 index 000000000..be120afe9 Binary files /dev/null and b/static/img/docs/34482e9f-122f-490d-b3c8-1e1d466bbc77/image2.webp differ diff --git a/static/img/docs/34482e9f-122f-490d-b3c8-1e1d466bbc77/image3.webp b/static/img/docs/34482e9f-122f-490d-b3c8-1e1d466bbc77/image3.webp new file mode 100644 index 000000000..a414877ac Binary files /dev/null and b/static/img/docs/34482e9f-122f-490d-b3c8-1e1d466bbc77/image3.webp differ diff --git a/static/img/docs/373305fd-1b01-488e-9105-ada540040fc0/image1.webp b/static/img/docs/373305fd-1b01-488e-9105-ada540040fc0/image1.webp new file mode 100644 index 000000000..f1ffa254d Binary files /dev/null and b/static/img/docs/373305fd-1b01-488e-9105-ada540040fc0/image1.webp differ diff --git a/static/img/docs/373305fd-1b01-488e-9105-ada540040fc0/image2.webp b/static/img/docs/373305fd-1b01-488e-9105-ada540040fc0/image2.webp new file mode 100644 index 000000000..6b116b86d Binary files /dev/null and b/static/img/docs/373305fd-1b01-488e-9105-ada540040fc0/image2.webp differ diff --git a/static/img/docs/373305fd-1b01-488e-9105-ada540040fc0/image3.webp b/static/img/docs/373305fd-1b01-488e-9105-ada540040fc0/image3.webp new file mode 100644 index 000000000..edfa31a4e Binary files /dev/null and b/static/img/docs/373305fd-1b01-488e-9105-ada540040fc0/image3.webp differ diff --git a/static/img/docs/373305fd-1b01-488e-9105-ada540040fc0/image4.webp b/static/img/docs/373305fd-1b01-488e-9105-ada540040fc0/image4.webp new file mode 100644 index 000000000..1a5a029bf Binary files /dev/null and b/static/img/docs/373305fd-1b01-488e-9105-ada540040fc0/image4.webp differ diff --git a/static/img/docs/373305fd-1b01-488e-9105-ada540040fc0/image5.webp b/static/img/docs/373305fd-1b01-488e-9105-ada540040fc0/image5.webp new file mode 100644 index 000000000..2edcebd6b Binary files /dev/null and b/static/img/docs/373305fd-1b01-488e-9105-ada540040fc0/image5.webp differ diff --git a/static/img/docs/373305fd-1b01-488e-9105-ada540040fc0/image6.webp b/static/img/docs/373305fd-1b01-488e-9105-ada540040fc0/image6.webp new file mode 100644 index 000000000..5b27785f2 Binary files /dev/null and b/static/img/docs/373305fd-1b01-488e-9105-ada540040fc0/image6.webp differ diff --git a/static/img/docs/8656e3f6-5cfc-49b9-a700-cbf453744576/image1.webp b/static/img/docs/8656e3f6-5cfc-49b9-a700-cbf453744576/image1.webp new file mode 100644 index 000000000..a78a90fd5 Binary files /dev/null and b/static/img/docs/8656e3f6-5cfc-49b9-a700-cbf453744576/image1.webp differ diff --git a/static/img/docs/894b9f2c-e0ac-4351-a312-f7f55865e32a/image1.webp b/static/img/docs/894b9f2c-e0ac-4351-a312-f7f55865e32a/image1.webp new file mode 100644 index 000000000..7750fd63c Binary files /dev/null and b/static/img/docs/894b9f2c-e0ac-4351-a312-f7f55865e32a/image1.webp differ diff --git a/static/img/docs/b4d717f5-38fe-4eac-83d4-d1cb88e7fe9d/image1.webp b/static/img/docs/b4d717f5-38fe-4eac-83d4-d1cb88e7fe9d/image1.webp new file mode 100644 index 000000000..f5ad81440 Binary files /dev/null and b/static/img/docs/b4d717f5-38fe-4eac-83d4-d1cb88e7fe9d/image1.webp differ diff --git a/static/img/docs/c23cdc78-f90e-4aba-b77e-4dff9d612940/image1.webp b/static/img/docs/c23cdc78-f90e-4aba-b77e-4dff9d612940/image1.webp new file mode 100644 index 000000000..acdc4482b Binary files /dev/null and b/static/img/docs/c23cdc78-f90e-4aba-b77e-4dff9d612940/image1.webp differ diff --git a/static/img/docs/c23cdc78-f90e-4aba-b77e-4dff9d612940/image10.webp b/static/img/docs/c23cdc78-f90e-4aba-b77e-4dff9d612940/image10.webp new file mode 100644 index 000000000..cd073fe4a Binary files /dev/null and b/static/img/docs/c23cdc78-f90e-4aba-b77e-4dff9d612940/image10.webp differ diff --git a/static/img/docs/c23cdc78-f90e-4aba-b77e-4dff9d612940/image2.webp b/static/img/docs/c23cdc78-f90e-4aba-b77e-4dff9d612940/image2.webp new file mode 100644 index 000000000..650150562 Binary files /dev/null and b/static/img/docs/c23cdc78-f90e-4aba-b77e-4dff9d612940/image2.webp differ diff --git a/static/img/docs/c23cdc78-f90e-4aba-b77e-4dff9d612940/image3.webp b/static/img/docs/c23cdc78-f90e-4aba-b77e-4dff9d612940/image3.webp new file mode 100644 index 000000000..876de5c36 Binary files /dev/null and b/static/img/docs/c23cdc78-f90e-4aba-b77e-4dff9d612940/image3.webp differ diff --git a/static/img/docs/c23cdc78-f90e-4aba-b77e-4dff9d612940/image4.webp b/static/img/docs/c23cdc78-f90e-4aba-b77e-4dff9d612940/image4.webp new file mode 100644 index 000000000..6c5545bfb Binary files /dev/null and b/static/img/docs/c23cdc78-f90e-4aba-b77e-4dff9d612940/image4.webp differ diff --git a/static/img/docs/c23cdc78-f90e-4aba-b77e-4dff9d612940/image5.webp b/static/img/docs/c23cdc78-f90e-4aba-b77e-4dff9d612940/image5.webp new file mode 100644 index 000000000..788bca020 Binary files /dev/null and b/static/img/docs/c23cdc78-f90e-4aba-b77e-4dff9d612940/image5.webp differ diff --git a/static/img/docs/c23cdc78-f90e-4aba-b77e-4dff9d612940/image6.webp b/static/img/docs/c23cdc78-f90e-4aba-b77e-4dff9d612940/image6.webp new file mode 100644 index 000000000..fea5c5d8f Binary files /dev/null and b/static/img/docs/c23cdc78-f90e-4aba-b77e-4dff9d612940/image6.webp differ diff --git a/static/img/docs/c23cdc78-f90e-4aba-b77e-4dff9d612940/image7.webp b/static/img/docs/c23cdc78-f90e-4aba-b77e-4dff9d612940/image7.webp new file mode 100644 index 000000000..72a086ff4 Binary files /dev/null and b/static/img/docs/c23cdc78-f90e-4aba-b77e-4dff9d612940/image7.webp differ diff --git a/static/img/docs/c23cdc78-f90e-4aba-b77e-4dff9d612940/image8.webp b/static/img/docs/c23cdc78-f90e-4aba-b77e-4dff9d612940/image8.webp new file mode 100644 index 000000000..b48e45420 Binary files /dev/null and b/static/img/docs/c23cdc78-f90e-4aba-b77e-4dff9d612940/image8.webp differ diff --git a/static/img/docs/c23cdc78-f90e-4aba-b77e-4dff9d612940/image9.webp b/static/img/docs/c23cdc78-f90e-4aba-b77e-4dff9d612940/image9.webp new file mode 100644 index 000000000..c786f088d Binary files /dev/null and b/static/img/docs/c23cdc78-f90e-4aba-b77e-4dff9d612940/image9.webp differ diff --git a/static/img/docs/e21d58b1-9fd5-4888-9e1f-788420313237/image1.webp b/static/img/docs/e21d58b1-9fd5-4888-9e1f-788420313237/image1.webp new file mode 100644 index 000000000..705bd0da4 Binary files /dev/null and b/static/img/docs/e21d58b1-9fd5-4888-9e1f-788420313237/image1.webp differ diff --git a/static/img/docs/e7b46cfc-c872-4d3c-b317-2b59a6c9679d/image1.webp b/static/img/docs/e7b46cfc-c872-4d3c-b317-2b59a6c9679d/image1.webp new file mode 100644 index 000000000..34b5ec5c8 Binary files /dev/null and b/static/img/docs/e7b46cfc-c872-4d3c-b317-2b59a6c9679d/image1.webp differ diff --git a/static/img/docs/ee6d7b42-0783-422a-a820-8ef36aab0713/image1.webp b/static/img/docs/ee6d7b42-0783-422a-a820-8ef36aab0713/image1.webp new file mode 100644 index 000000000..10001e4f9 Binary files /dev/null and b/static/img/docs/ee6d7b42-0783-422a-a820-8ef36aab0713/image1.webp differ