diff --git a/samy.ps1 b/samy.ps1 index a3fdec0..70e433b 100644 --- a/samy.ps1 +++ b/samy.ps1 @@ -1,172 +1,3 @@ -<# -Last changes made should fix the issues we had wen running thi in Windows 11 25H2 - -change this line for the message - -
Please use samy.svstools.ca
- -Invoke-installprinters you can uncomment whatif in the function - -# SAMY asset config (change branch or base once and it updates everything) -$Script:SamyBranch = 'beta' # or 'main' -line 268 - 281 - -.SYNOPSIS - Script Automation Monkey (SAMY) is a unified MSP assistant that automates onboarding, headless offboarding, - Datto RMM deployments, and toolkit management through a local UI, HTTP endpoints, or direct PowerShell switches. - -.DESCRIPTION - Install-DattoRMM is the core helper that handles credential retrieval (webhook or direct), OAuth token management, - site list fetching/persistence, registry variable pushes, agent downloads/installs, and optional installer archiving. - The UI exposes all tasks as checkboxes with select-all helpers, and each action is wrapped in detailed logging plus - HTTP responders so callers can see success or failure.$jsContent = Get-RemoteText -Url $Script:SamyJsUrl - - - Key features: - - Credential retrieval - securely fetches ApiUrl, ApiKey, and ApiSecretKey from a webhook when requested. - - OAuth management - automatically acquires and refreshes bearer tokens over TLS to talk to Datto. - - Site list fetching - returns the list of RMM sites and validates OutputFile extensions (.csv/.json). - - Site list persistence - saves fetched site lists to the requester's desktop as CSV or JSON. - - Registry variable push - writes site-specific variables under HKLM:\Software\SVS\Deployment. - - Agent download & install - pulls the Datto RMM agent, launches it, and optionally saves a copy to C:\Temp. - - HTTP endpoints - /getpw and /installDattoRMM handle UI or API-triggered workflows with failure trapping. - - Idempotent & WhatIf support - uses ShouldProcess/SupportsShouldProcess to protect installs. - - Headless Offboard - runs every offboarding task serially just like "Select All" in the UI. - - Throughout, secrets are never written to logs or console, and all operations produce clear success/failure messages via Write-LogHybrid. - - -.PARAMETER UseWebhook - Switch that forces credential retrieval from the webhook at WebhookUrl using WebhookPassword. - When omitted, you must supply ApiUrl, ApiKey, and ApiSecretKey directly. - -.PARAMETER WebhookPassword - Password to authenticate to the credentials-fetch webhook. Mandatory when -UseWebhook is set. - -.PARAMETER WebhookUrl - URL of the credentials webhook endpoint. Defaults to $Global:DattoWebhookUrl. - -.PARAMETER ApiUrl - Direct Datto RMM API base URL (used if not fetching from webhook). - -.PARAMETER ApiKey - Direct Datto RMM API key (used if not fetching from webhook). - -.PARAMETER ApiSecretKey - Direct Datto RMM secret (used if not fetching from webhook). - -.PARAMETER FetchSites - Switch to fetch the list of RMM sites and skip all install or variable-push actions. - -.PARAMETER SaveSitesList - Switch to save the fetched site list to the desktop as a file named by OutputFile. - Must be used together with -FetchSites. - -.PARAMETER OutputFile - Name of the file to write the site list to (must end in “.csv” or “.json”). - Defaults to 'datto_sites.csv'. - -.PARAMETER PushSiteVars - Switch to fetch site-specific variables and write them under HKLM:\Software\SVS\Deployment. - -.PARAMETER InstallRMM - Switch to download and launch the Datto RMM agent installer for the specified site. - -.PARAMETER SaveCopy - Switch to save a copy of the downloaded Datto RMM installer into C:\Temp. - -.PARAMETER Offboard - Switch that runs every off-boarding task sequentially (same behavior as checking "Select All" on the Off-Boarding tab) without launching the web UI. - -.PARAMETER SiteUID - The unique identifier of the Datto RMM site. Mandatory when performing install or variable-push. - -.PARAMETER SiteName - The friendly name of the Datto RMM site (used in logging). Mandatory when performing install or variable-push. - -.NOTES - Default EventLog : SVSMSP Events - Default Source : SAMY - -.EXAMPLE - - & ([ScriptBlock]::Create( (iwr 'https://samy.svstools.com' -UseBasicParsing).Content )) ` - -UseWebhook - -WebhookPassword 'pwd' - -SiteUID 'site-123' - -SiteName 'Acme Corp' - -PushSiteVars - -InstallRMM - - # Headlessly installs the Datto RMM agent on “Acme Corp” and writes site variables to the registry. - -.EXAMPLE - & ([ScriptBlock]::Create( (iwr 'https://samy.svstools.com' -UseBasicParsing).Content )) ` - -ApiUrl 'https://api.example.com' ` - -ApiKey 'YourApiKey' ` - -ApiSecretKey 'YourSecretKey' ` - -SiteUID 'site-123' ` - -SiteName 'Acme Corp' ` - -PushSiteVars ` - -InstallRMM - - # Headlessly installs the Datto RMM agent on “Acme Corp” and writes site variables to the registry. - -.EXAMPLE - & ([ScriptBlock]::Create( (iwr 'https://samy.svstools.com' -UseBasicParsing).Content )) ` - -UseWebhook ` - -WebhookPassword 'pwd' ` - -FetchSites ` - -SaveSitesList ` - -OutputFile 'sites.json' - - # Fetches the full site list via webhook and saves it as JSON to your Desktop. - -.EXAMPLE - & ([ScriptBlock]::Create( (iwr 'https://samy.svstools.com' -UseBasicParsing).Content )) ` - -ApiUrl 'https://api.example.com' ` - -ApiKey 'YourApiKey' ` - -ApiSecretKey 'YourSecretKey' ` - -SiteUID 'site-123' ` - -SiteName 'Acme Corp' ` - -SaveCopy - - # Downloads the RMM installer for “Acme Corp” and saves a copy under C:\Temp without running it. - -.EXAMPLE - & ([ScriptBlock]::Create( (iwr 'https://samy.svstools.com' -UseBasicParsing).Content )) ` - -ApiUrl 'https://api.example.com' ` - -ApiKey 'YourApiKey' ` - -ApiSecretKey 'YourSecretKey' ` - -SiteUID 'site-123' ` - -SiteName 'Acme Corp' ` - -InstallRMM ` - -WhatIf - - # Shows what would happen when installing the RMM agent, without making any changes. - -.EXAMPLE - & ([ScriptBlock]::Create((iwr 'samy.svstools.ca').Content )) -SilentInstall - -.EXAMPLE - & ([ScriptBlock]::Create((iwr 'samy.svstools.com').Content)) -Cleanup - -.EXAMPLE -& ([ScriptBlock]::Create((iwr 'samy.svstools.ca').Content)) -Offboard - - # Runs the off-boarding tasks in sequence without launching the UI. - -.Notes - -RMM can call this directly - -$profiles = Get-SvsPrinterProfilesFromServer -Uri 'https://bananas.svstools.ca/getprinters' -Password $pw -Set-SvsPrinterLocalConfig -PrinterProfiles $profiles -SkipIfEmpty - - -#> -#region Safely bypass Restricted Execution Policy -# ─── Safely bypass Restricted Execution Policy ─── #region Safely bypass Restricted Execution Policy # Safely bypass Restricted Execution Policy if ($ExecutionContext.SessionState.LanguageMode -ne 'FullLanguage' -or