Automatizzare la creazione degli URL di lancio di ConnectWise ScreenConnect con PowerShell

Punti chiave

  • Efficienza automatizzata: Automatizza la generazione degli URL di lancio di ConnectWise ScreenConnect, migliorando l’efficienza operativa.
  • Flessibilità dei parametri: Supporta configurazioni dinamiche attraverso parametri quali dominio, gruppo di sessione e ID istanza.
  • Requisiti amministrativi: Lo script per automatizzare la creazione degli URL di lancio di ConnectWise ScreenConnect richiede privilegi amministrativi per la modifica dei campi personalizzati e l’accesso al registro.
  • Verifica dell’installazione: Lo script per automatizzare la creazione degli URL di lancio di ConnectWise ScreenConnect controlla l’installazione di ScreenConnect utilizzando il registro di sistema, assicurando l’esecuzione mirata degli script.
  • Costruzione di URL diretti: Genera URL di lancio diretti per ogni istanza di ScreenConnect, riducendo al minimo la necessità di inserimento manuale.
  • Potenziale di integrazione: Si integra facilmente in flussi di lavoro di automazione IT più ampi, offrendo scalabilità.
  • Considerazione sulla sicurezza: Sottolinea la necessità di un utilizzo sicuro degli script per evitare accessi non autorizzati.
  • Sinergia con NinjaOne: Dimostra il potenziale di integrazione e di efficienza di NinjaOne per la gestione remota del sistema.

Nel dinamico settore delle tecnologie informatiche, la capacità di gestire e supportare in modo efficiente i sistemi remoti è fondamentale. Uno dei protagonisti di questo settore è ConnectWise ScreenConnect, una solida soluzione per supporto remoto, accesso e organizzazione di riunioni. L’automazione della distribuzione e dell’integrazione tramite script PowerShell migliora l’efficienza e l’affidabilità, una necessità per i professionisti IT e i Managed Service Provider (MSP).

Background

Lo script per automatizzare la creazione degli URL di lancio di ConnectWise ScreenConnect è progettato per automatizzare il recupero degli URL di lancio di ConnectWise ScreenConnect e salvarli in un campo personalizzato. Questa automazione è fondamentale per gli ambienti IT in cui l’accesso remoto rapido e fluido a più macchine è un requisito quotidiano. La capacità dello script di identificare istanze specifiche di ScreenConnect e di generare URL di connessione diretta consente di risparmiare tempo prezioso e di ridurre gli errori manuali, vantaggi che rendono questo script uno strumento essenziale per il supporto e la gestione IT.

Lo script per automatizzare la creazione degli URL di lancio di ConnectWise ScreenConnect:

<#
.SYNOPSIS
    Get ConnectWise ScreenConnect Launch URL and save to custom field (defaults to screenconnectUrl). Requires the domain used for ScreenConnect and a Session Group the machine is a part of to successfully build URL.
.DESCRIPTION
    Get ConnectWise ScreenConnect Launch URL and save to custom field (defaults to screenconnectUrl). 
    Requires the domain used for ScreenConnect and a Session Group the machine is a part of to successfully build URL.
.EXAMPLE
    -ScreenConnectDomain "replace.me" -InstanceID "1111111111"

    Building Launch URL(s)...
    Launch URL(s) Created


    Instance  : 1111111111
    LaunchURL : https://replace.me/Host#Access/All%20Machines//555555-555-555-5555-55555/Join
    SessionId : 555555-555-555-5555-55555

PARAMETER: -ScreenConnectDomain "ExampleInput"
    The domain used for your Connectwise ScreenConnect Instance.

PARAMETER: -SessionGroup "ExampleInput"
    The Session Group in which the machine would normally be found. Defaults to "All Machines".

PARAMETER: -InstanceID "ExampleInput"
    The Instance ID for your instance of ScreenConnect. Used to differentiate between multiple installed ScreenConnect Instances.
    To get the instance id you can see it in the program's name in Control Panel e.g. ScreenConnect Client (yourinstanceidishere) 
    or in ScreenConnect itself (Admin > Advanced > Server Information > Instance Identifier Fingerprint).

PARAMETER: -CustomField "ReplaceWithAnyMultilineCustomField"
    The custom field you would like to write the results to. Defaults to screenconnectUrl

.OUTPUTS
    None
.NOTES
    Minimum OS Architecture Supported: Windows 7+, Server 2008+
    Release Notes: Initial Release
By using this script, you indicate your acceptance of the following legal terms as well as our Terms of Use at https://www.ninjaone.com/terms-of-use.
    Ownership Rights: NinjaOne owns and will continue to own all right, title, and interest in and to the script (including the copyright). NinjaOne is giving you a limited license to use the script in accordance with these legal terms. 
    Use Limitation: You may only use the script for your legitimate personal or internal business purposes, and you may not share the script with another party. 
    Republication Prohibition: Under no circumstances are you permitted to re-publish the script in any script library or website belonging to or under the control of any other software provider. 
    Warranty Disclaimer: The script is provided “as is” and “as available”, without warranty of any kind. NinjaOne makes no promise or guarantee that the script will be free from defects or that it will meet your specific needs or expectations. 
    Assumption of Risk: Your use of the script is at your own risk. You acknowledge that there are certain inherent risks in using the script, and you understand and assume each of those risks. 
    Waiver and Release: You will not hold NinjaOne responsible for any adverse or unintended consequences resulting from your use of the script, and you waive any legal or equitable rights or remedies you may have against NinjaOne relating to your use of the script. 
    EULA: If you are a NinjaOne customer, your use of the script is subject to the End User License Agreement applicable to you (EULA).
#>

[CmdletBinding()]
param (
    [Parameter()]
    [String]$ScreenConnectDomain,
    [Parameter()]
    [String]$SessionGroup = "All Machines",
    [Parameter()]
    [String]$InstanceID,
    [Parameter()]
    [String]$CustomField = "screenconnectUrl"
)

begin {
    if ($env:screenconnectDomain -and $env:screenconnectDomain -notlike "null") { $ScreenConnectDomain = $env:screenconnectDomain }
    if ($env:sessionGroup -and $env:sessionGroup -notlike "null") { $SessionGroup = $env:sessionGroup }
    if ($env:instanceId -and $env:instanceId -notlike "null") { $InstanceID = $env:instanceId }
    if ($env:customFieldName -and $env:customFieldName -notlike "null") { $CustomField = $env:customFieldName }

    # Warn end-user if we're not provided an instance id
    if (-not ($InstanceID)) {
        Write-Warning "Without the instance id we will be unable to tell which ScreenConnect instance is yours if multiple are installed resulting in the wrong URL being displayed."
        Write-Warning "To get the instance id you can see it in the programs name in Control Panel ex. ScreenConnect Client (yourinstanceidishere) or in Control itself (Admin > Advanced > Server Information > Instance Identifier Fingerprint)"
    }

    # These two are actually necessary to build the URL
    if (-not ($ScreenConnectDomain) -or -not ($SessionGroup)) {
        Write-Error "Unable to build URL without the domain or Session Group."
        exit 1
    }

    # Test for elevation
    function Test-IsElevated {
        $id = [System.Security.Principal.WindowsIdentity]::GetCurrent()
        $p = New-Object System.Security.Principal.WindowsPrincipal($id)
        $p.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator)
    }

    # Checks the two Uninstall registry keys to see if the app is installed. Needs the name as it would appear in Control Panel.
    function Find-UninstallKey {
        [CmdletBinding()]
        param (
            [Parameter(ValueFromPipeline = $True)]
            [String]$DisplayName,
            [Parameter()]
            [Switch]$UninstallString
        )
        process {
            $UninstallList = New-Object System.Collections.Generic.List[Object]

            $Result = Get-ChildItem HKLM:SoftwareWow6432NodeMicrosoftWindowsCurrentVersionUninstall* | Get-ItemProperty | Where-Object { $_.DisplayName -like "*$DisplayName*" }
            if ($Result) { $UninstallList.Add($Result) }

            $Result = Get-ChildItem HKLM:SoftwareMicrosoftWindowsCurrentVersionUninstall* | Get-ItemProperty | Where-Object { $_.DisplayName -like "*$DisplayName*" }
            if ($Result) { $UninstallList.Add($Result) }

            # Programs don't always have an uninstall string listed here so to account for that I made this optional.
            if ($UninstallString) {
                $UninstallList | Select-Object -ExpandProperty UninstallString -ErrorAction SilentlyContinue
            }
            else {
                $UninstallList
            }
        }
    }

    # Define the name of the software we are searching for and look for it in both the 64 bit and 32 bit registry nodes.
    if (-not $InstanceID) { $SoftwareName = "ScreenConnect Client" }else { $SoftwareName = "ScreenConnect Client ($InstanceID)" }
    $ControlInstallation = Find-UninstallKey -DisplayName $SoftwareName

    # If its not installed lets error out.
    if (-not ($ControlInstallation)) {
        Write-Error "Connectwise ScreenConnect is not installed!"
        exit 1
    }

    # Elevation is required to write to custom fields. 
    if (-not (Test-IsElevated)) {
        Write-Error -Message "Access Denied. Please run with Administrator privileges."
        exit 1
    }
}
process {
    # The Image Path Registry Key contains the unique session id needed to generate the URL
    Write-Host "Building Launch URL(s)..."
    $ControlInstances = $ControlInstallation.DisplayName | ForEach-Object {
        $ImagePath = Get-ItemProperty -Path "Registry::HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices$_" | Select-Object -Property ImagePath -ExpandProperty ImagePath
        $Id = ($ImagePath -split '&' | Where-Object { $_ -match 's=(.*-){4}' }) -replace "s="
        $Instance = ($_ -replace "ScreenConnect Client (" -replace ")").trim()
        New-Object psobject -Property @{
            Instance  = $Instance
            LaunchURL = [URI]::EscapeUriString("https://$ScreenConnectDomain/Host#Access/$SessionGroup//$Id/Join")
            SessionId = $Id
        }
    }

    # Create a Table/List of our results 
    Write-Host "Launch URL(s) Created"
    $ControlInstances | Format-List -Property Instance, LaunchURL, SessionId | Out-String | Write-Host

    # PowerShell 2.0 does not support ninjarmm-cli
    if ($PSVersionTable.PSVersion.Major -gt 2) {
        if ($ControlInstances.LaunchURL.Count -gt 1) {
            Ninja-Property-Set -Name $CustomField -Value ($ControlInstances | Format-List -Property Instance, LaunchURL | Out-String)
        }
        else {
            Ninja-Property-Set -Name $CustomField -Value ($ControlInstances.LaunchURL | Out-String)
        }
    }
    else {
        Write-Host "ninjarmm-cli does not support PowerShell 1 & 2. Refer to https://ninjarmm.zendesk.com/hc/en-us/articles/4405408656013 ."
    }
}
end {
    
    
    
}

 

Accedi a oltre 700 script nel Dojo di NinjaOne

Ottieni l’accesso

Analisi dettagliata dello script per automatizzare la creazione degli URL di lancio di ConnectWise ScreenConnect

  • Inizializzazione dei parametri: Lo script per automatizzare la creazione degli URL di lancio di ConnectWise ScreenConnect inizia definendo parametri come ScreenConnectDomain, SessionGroup, InstanceID e CustomField. Questi parametri sono essenziali per identificare la specifica istanza di ScreenConnect e il gruppo di macchine al suo interno.
  • Controllo delle variabili d’ambiente: Controlla le variabili d’ambiente e, se sono impostate, le utilizza. Questa flessibilità consente un adattamento dinamico a diverse configurazioni di sistema.
  • Controlli pre-esecuzione: Lo script per automatizzare la creazione degli URL di lancio di ConnectWise ScreenConnect si assicura che siano forniti i parametri necessari e verifica la presenza di privilegi amministrativi, poiché la modifica dei campi personalizzati richiede autorizzazioni elevate.
  • Verifica dell’installazione del software: Cerca nel registro di sistema per verificare se ScreenConnect è installato e identifica l’istanza corretta utilizzando l’InstanceID fornito.
  • Generazione di URL: La funzionalità principale consiste nel costruire l’URL di avvio di ScreenConnect utilizzando il dominio, il gruppo di sessione e un ID di sessione univoco estratto dal registro del sistema.
  • Formattazione dell’output: Gli URL generati sono formattati in un elenco leggibile, che fornisce all’utente informazioni chiare e fruibili.

Casi d’uso potenziali dello script per automatizzare la creazione degli URL di lancio di ConnectWise ScreenConnect

Immagina un professionista IT che gestisce una serie di macchine in sedi diverse. Ha bisogno di collegarsi rapidamente a qualsiasi macchina per la risoluzione dei problemi. Utilizzando questo script, può generare URL ScreenConnect diretti per ogni macchina e memorizzarli in un campo personalizzato, avendo quindi la possibilità di accesso remoto istantaneo senza la costruzione manuale dell’URL.

Confronti

Tradizionalmente, la generazione di URL ScreenConnect comporta l’identificazione manuale dell’ID di sessione di ogni macchina e la costruzione dell’URL. Questo script automatizza il processo, riducendo in modo significativo il tempo e il potenziale di errore. Rispetto ai metodi basati su GUI, lo script offre scalabilità e capacità di integrazione con altri flussi di lavoro di automazione.

Domande frequenti

  • In che modo questo script per automatizzare la creazione degli URL di lancio di ConnectWise ScreenConnect si assicura di lavorare sull’istanza corretta di ScreenConnect?
    Lo script per automatizzare la creazione degli URL di lancio di ConnectWise ScreenConnect utilizza il parametro InstanceID per identificare l’istanza ScreenConnect corretta.
  • Questo script per automatizzare la creazione degli URL di lancio di ConnectWise ScreenConnect può essere integrato in flussi di lavoro di automazione più ampi?
    Sì, la sua natura PowerShell lo rende facilmente integrabile in sistemi di automazione IT più ampi.
  • I privilegi amministrativi sono obbligatori per l’esecuzione di questo script?
    Sì, poiché comporta la scrittura in campi personalizzati e l’accesso ai registri di sistema.

Implicazioni

L’automazione della generazione di URL migliora l’efficienza operativa, ma comporta anche un rischio in caso di uso improprio. L’accesso non autorizzato allo script potrebbe portare a potenziali violazioni della sicurezza. Per questo motivo, è fondamentale proteggere lo script e l’ambiente in cui viene utilizzato.

Raccomandazioni

  • Proteggi l’ambiente: Esegui lo script per automatizzare la creazione degli URL di lancio di ConnectWise ScreenConnect in un ambiente sicuro e controllato.
  • Aggiornamenti regolari: Mantieni aggiornati gli ambienti ConnectWise ScreenConnect e PowerShell.
  • Controllo degli accessi: Limita l’accesso allo script per automatizzare la creazione degli URL di lancio di ConnectWise ScreenConnect solo al personale autorizzato.

Considerazioni finali

L’integrazione di script come questo nella piattaforma NinjaOne può semplificare le attività di gestione remota, offrendo un’esperienza di gestione più efficiente e coesa. La capacità di NinjaOne di integrarsi con strumenti come ConnectWise ScreenConnect e la potenza dell’automazione ne testimoniano l’utilità in un panorama IT in continua evoluzione.

Passi successivi

La creazione di un team IT efficiente ed efficace richiede una soluzione centralizzata che funga da principale strumento per la fornitura di servizi. NinjaOne consente ai team IT di monitorare, gestire, proteggere e supportare tutti i dispositivi, ovunque essi si trovino, senza la necessità di una complessa infrastruttura locale.

Per saperne di più su NinjaOne Endpoint Management, fai un tour dal vivo, o inizia la tua prova gratuita della piattaforma NinjaOne.

Categorie:

Ti potrebbe interessare anche

×

Guarda NinjaOne in azione!

Inviando questo modulo, accetto La politica sulla privacy di NinjaOne.

Termini e condizioni NinjaOne

Cliccando sul pulsante “Accetto” qui sotto, dichiari di accettare i seguenti termini legali e le nostre condizioni d’uso:

  • Diritti di proprietà: NinjaOne possiede e continuerà a possedere tutti i diritti, i titoli e gli interessi relativi allo script (compreso il copyright). NinjaOne ti concede una licenza limitata per l’utilizzo dello script in conformità con i presenti termini legali.
  • Limitazione d’uso: Puoi utilizzare lo script solo per legittimi scopi personali o aziendali interni e non puoi condividere lo script con altri soggetti.
  • Divieto di ripubblicazione: In nessun caso ti è consentito ripubblicare lo script in una libreria di script appartenente o sotto il controllo di un altro fornitore di software.
  • Esclusione di garanzia: Lo script viene fornito “così com’è” e “come disponibile”, senza garanzie di alcun tipo. NinjaOne non promette né garantisce che lo script sia privo di difetti o che soddisfi le tue esigenze o aspettative specifiche.
  • Assunzione del rischio: L’uso che farai dello script è da intendersi a tuo rischio. Riconosci che l’utilizzo dello script comporta alcuni rischi intrinseci, che comprendi e sei pronto ad assumerti.
  • Rinuncia e liberatoria: Non riterrai NinjaOne responsabile di eventuali conseguenze negative o indesiderate derivanti dall’uso dello script e rinuncerai a qualsiasi diritto legale o di equità e a qualsiasi rivalsa nei confronti di NinjaOne in relazione all’uso dello script.
  • EULA: Se sei un cliente NinjaOne, l’uso dello script è soggetto al Contratto di licenza con l’utente finale (EULA) applicabile.