ControlUp for Desktops Archives - ControlUp Thu, 12 Feb 2026 08:02:18 +0000 en-US hourly 1 https://wordpress.org/?v=6.9 ControlUp for Desktops: Live Remote Management https://www.controlup.com/product-tour/controlup-for-desktops-live-remote-management/ Thu, 12 Feb 2026 08:01:23 +0000 https://cupstaging.wpengine.com/?page_id=16356

]]>

]]>
Product Update: Remote Control for Unmanaged Devices https://www.controlup.com/resources/blog/product-update-remote-control-for-unmanaged-devices/ Tue, 25 Nov 2025 06:48:11 +0000 https://cupstaging.wpengine.com/?post_type=blog_post&p=15658

The IT Helpdesk Roadblock Every day, your helpdesk team faces a frustrating reality: a user calls with a critical issue, but their device is unmanaged meaning the ControlUp Agent isn’t installed, and the device isn’t on your tenant. That’s an immediate roadblock. Instead of a quick fix, you’re forced into time-consuming, clumsy phone calls or […]]]>

The IT Helpdesk Roadblock

Every day, your helpdesk team faces a frustrating reality: a user calls with a critical issue, but their device is unmanaged meaning the ControlUp Agent isn’t installed, and the device isn’t on your tenant. That’s an immediate roadblock. Instead of a quick fix, you’re forced into time-consuming, clumsy phone calls or confusing chat threads, dragging out the resolution and spiking the user’s frustration. The Challenge: How do you provide instant, hands-on support to any device, anywhere, without compromising security or slowing down your resolution time? The Solution: Instant remote control for unmanaged devices Introducing an essential enhancement to ControlUp for Desktops: Remote Control for Unmanaged Devices. This feature eliminates the “unmanaged device” problem, empowering your desktop administrators to provide remote support instantly. This isn’t just a workaround, it’s a critical tool that expands your reach and allows your team to quickly and easily assist users, regardless of whether their device is in the environment or not. By integrating this capability directly into your comprehensive DEX platform, you go from identifying issues (slow process, high CPU, or printer configuration) to hands-on resolution in a single click.

Zero-Friction Remote Desktop: The 4-Step Process

The process is designed to be simple and tailored for the end user, providing seamless troubleshooting capabilities:
  1. New Button: This feature adds a “Remote Control – Unmanaged” button into your device’s view, which can be opened in a new window or tab.
  2. Send Link: IT sends the user a download link for a small, temporary application.
  3. User Runs App: The user runs the downloaded application.
  4. Enter Code: IT provides the user with a single-use session code.
Full Remote Control: That’s it! The administrator now has full control over the device with remote assistance and the same functionality (i.e., file transfer, multi-monitor support).

Efficiency is Your Superpower

This feature allows IT to quickly and easily assist users, regardless of whether their device is in the environment or not. This simple experience provides a superior end user experience and expands your reach as an IT professional.

More Information on ControlUp Remote Assist

With ControlUp, you’re equipped to jump from diagnosis to resolution in seconds. Whether you’re helping a managed device or a new unmanaged one, ControlUp’s Remote Assist feature (Remote Control/Remote Shadow) is the precise, versatile tool in your utility belt, ready for action in an instant.

Instant Connection & Hands-On Fixes

ControlUp provides one-click access to the remote desktop, ensuring you don’t waste time struggling to connect—fighting firewalls or battling connection issues.
  • Remote Control: This is the full-access gear for hands-on fixes. You can configure printers, install applications, or clean up registries directly. You can fix it fast, saving time.
  • Remote Desktop Shadow (View Only): This is the silent surveillance gear, perfect for non-disruptive observation, training, or verifying user environments without interfering. You can see exactly what they see—no confusing descriptions needed.

Remote Desktop Security and Transparency

Every remote IT assistance session with ControlUp is secure and transparent:
  • Clear Notifications: Users are always aware when they’re in a remote desktop or remote control session via a persistent on-screen icon.
  • User Consent: The option to require explicit user permission before connecting is there to maintain trust and adhere to privacy protocols.
  • Firewall-Friendly Design: Sessions are initiated outbound via WebSockets from the ControlUp Agent, avoiding complicated inbound firewall configurations and keeping your network secure.

Deep Troubleshooting: Multi-Tool Attachments

The true power and magic of our remote IT assistance feature lies in the one-click contextual actions that are essential for deep troubleshooting:
  • File Transfer: Need to transfer a critical patch or pull a log file? Send or retrieve files (up to 100MB) instantly, without resorting to clunky email attachments or shared drives.
  • Admin Access: Access the ‘Elevated Command Prompt’ to run admin commands on the spot, bypassing the need to ask the user for their credentials. This prompt closes automatically when the session ends, maintaining security.
  • Multi-Monitor Support: Seamlessly view or switch between all user screens so you never miss where the real error is hiding.
  • Clipboard Synchronization: Copy-paste long URLs, error codes, or complex paths directly from your machine to the remote session for flawless, mistake-free troubleshooting.
  Take a Tour Efficiency Is Your Superpower: With ControlUp, you go from diagnosis to resolution in seconds—whether the device is managed or unmanaged. No more wasted time, no more security compromises. Just fast, secure, hands-on support. Ready to equip your team with the ultimate IT support tool? Contact ControlUp to test Remote Control for Unmanaged Devices today.]]>
ControlUp for Desktops: Remote Assistant Deep Dive https://www.controlup.com/product-tour/controlup-for-desktops-remote-assistant-deep-dive/ Sun, 18 May 2025 12:23:50 +0000 https://cupstaging.wpengine.com/?page_id=13440

]]>

]]>
ControlUp for Desktops: Windows 365 https://www.controlup.com/product-tour/controlup-for-desktops-windows-365/ Sun, 18 May 2025 12:22:27 +0000 https://cupstaging.wpengine.com/?page_id=13438

]]>

]]>
ControlUp for Desktops: ServiceNow Integration https://www.controlup.com/product-tour/controlup-for-desktops-servicenow-integration/ Sun, 18 May 2025 12:15:33 +0000 https://cupstaging.wpengine.com/?page_id=13436

]]>

]]>
ControlUp for Desktops: Remote Control https://www.controlup.com/product-tour/controlup-for-desktops-remote-control/ Sun, 18 May 2025 12:08:27 +0000 https://cupstaging.wpengine.com/?page_id=13435

]]>

]]>
ControlUp for Desktops: Remediation actions https://www.controlup.com/product-tour/controlup-for-desktops-remediation-actions/ Sun, 18 May 2025 12:06:08 +0000 https://cupstaging.wpengine.com/?page_id=13434

]]>

]]>
Using the New ControlUp for Desktops API in your PowerShell scripts https://www.controlup.com/resources/blog/using-the-new-edge-dx-api-in-your-powershell-scripts/ Thu, 23 Jan 2025 05:00:38 +0000 https://cupstaging.wpengine.com/?post_type=blog_post&p=12526

As of December 9, 2024, our digital employee experience (DEX) platform now allows customers to generate API keys for the ControlUp for Desktops API (formerly Edge DX). This new capability simplifies integration and automation, making it easier to streamline IT tasks. In this blog, we’ll explore practical use cases for the ControlUp for Desktops API […]]]>

As of December 9, 2024, our digital employee experience (DEX) platform now allows customers to generate API keys for the ControlUp for Desktops API (formerly Edge DX). This new capability simplifies integration and automation, making it easier to streamline IT tasks. In this blog, we’ll explore practical use cases for the ControlUp for Desktops API and demonstrate how to automate actions using PowerShell. Let’s dive into how this functionality enhances IT automation and optimizes your workflows.

Setup

To create an API key, click your profile icon and select API Key Management. Then click on create new and select how long the API key is valid for and save the key. Make sure to save the key and keep it secure.

Using the API Reference Site

We’ve updated the API reference website (https://api.controlup.io/reference/how-to-use-the-edge-dx-api) to include all the new endpoints accessible with your API key. The site also features a built-in tester that automatically generates code in various languages, including Bash, PowerShell, Node.js, JavaScript, Python, and more. For example, if you want to list all available device tags, simply navigate to https://api.controlup.io/reference/list-device-tags. On the right-hand side, under Credentials, paste your API key, select PowerShell, and click Try It! This will generate a PowerShell script for you, execute it, and return the response. Armed with this knowledge, let’s examine some use cases and see how we can use these capabilities.

Use Case 1: Automatic Setting Device Tags

Device tags are incredibly useful for grouping devices efficiently. When deploying the ControlUp for Desktops Agent using platforms like Microsoft Endpoint Manager (Intune), new tags aren’t automatically added as new devices are deployed. To ensure these new devices are assigned the correct tags, you can create a PowerShell script to run periodically (e.g., once daily) to add the appropriate tags to new devices. For this example, we’ll use the following API endpoints: List Devices: To retrieve all devices in your ControlUp for Desktops environment. Update Tags: To assign or update tags for devices. The first step is to create a PowerShell function to get all ControlUp for Desktops devices. This function will store the data in a parameter called $devices, including details such as the device name, ID, platform, last communication, and tags. ($apikey will need to contain your API Key).
# get EdgeDX devices
function Get-EdgeDxDevices {
    param (
        [Parameter(Mandatory = $true)]
        [string]$ApiKey
    )


    $baseUrl = "https://api.controlup.com/edge/api" # Base URL
    $endpoint = "devices"
    $method = "GET"


    $headers = @{
        "Authorization" = "Bearer $ApiKey"
        "Content-Type"  = "application/json"
    }


    $url = "$baseUrl/$endpoint"


    try {
        # Invoke the API to get the list of devices
        $response = Invoke-RestMethod -Uri $url -Method $method -Headers $headers
        return $response
    } catch {
        throw "Error invoking API: $_"
    }
}


$devices = (Get-EdgeDxDevices -ApiKey $apikey).rows | Select-Object -Property Name,_id,_platform_name_friendly,last_communication,tags
$devices
After running this script, we will have an output like this. In this demo, we’ve identified that the agent W11-TEST.WORKGROUP is missing tags. To address this, we’ll assign it the windows tag. To achieve this, we’ll incorporate a bit of script logic to:
  1. Identify Devices Missing Tags: Filter out devices with no tags assigned.
  2. Verify the Platform: Ensure the agent is a Windows machine by checking the platform field from the device data.
We do that with the following script:
$deviceIDs = @($devices | Where-Object { -not $_.tags -and $_._platform_name_friendly -eq "Microsoft Windows"})._id
We can now assign Windows tags to the new devices using these device IDs. The next function is slightly more complex, as the update ControlUp for Desktops tags endpoint supports the creation and deletion of tags.
#Update EdgeDX Devices Tags 
function Update-EdgeDxDeviceTags {
    [CmdletBinding(DefaultParameterSetName = "CreateTags")]
    param (
        [Parameter(Mandatory = $true)]
        [string]$ApiKey,             # API key provided by the user
        [Parameter(Mandatory = $true)]
        [string[]]$DeviceIds,        # Array of device IDs to update
        [Parameter(Mandatory = $true)]
        [string[]]$Tags,             # The tags to update
        [Parameter(Mandatory = $true, ParameterSetName = "CreateTags")]
        [switch]$Create,             # Specify this switch to create tags
        [Parameter(Mandatory = $true, ParameterSetName = "DeleteTags")]
        [switch]$Delete              # Specify this switch to delete tags
    )


    # Determine the action based on the parameter set
    $action = if ($PSCmdlet.ParameterSetName -eq "CreateTags") {
        "create"
    } elseif ($PSCmdlet.ParameterSetName -eq "DeleteTags") {
        "delete"
    } else {
        throw "Unexpected parameter set."
    }


    # Validate tags
    $invalidTags = $Tags | Where-Object { -not ($_ -match '^[a-z0-9\-_ ]{1,150}$') }
    if ($invalidTags) {
        throw "Invalid tag(s) provided: $($invalidTags -join ', '). Tags may contain only: a-z, 0-9, -, _, spaces, and must be 1-150 characters long."
    }


    # Build the request body
    $body = @{
        "action" = $action
        "ids"    = $DeviceIds
        "tags"   = $Tags
    }


    # Base URL and endpoint
    $baseUrl = "https://api.controlup.com/edge/api"
    $endpoint = "devices/tags"
    $url = "$baseUrl/$endpoint"


    # Headers with API key
    $headers = @{
        "Authorization" = "Bearer $ApiKey"
        "Content-Type"  = "application/json"
    }


    try {
        # Make the API call
        $jsonBody = $body | ConvertTo-Json -Compress -Depth 2
        $response = Invoke-RestMethod -Uri $url -Method "POST" -Headers $headers -Body $jsonBody


        # Extract device details from the response and display them
        foreach ($device in $response) {
            Write-Output "Device $($device.name) now has these tags: $($device.tags -join ', ')"
        }
    } catch {
        throw "Error invoking API: $_"
    }
}
 

Update-EdgeDxDeviceTags -ApiKey $apikey -DeviceIds $deviceIDs -Tags "windows" -Create
After executing the script, the console confirms that the device has been successfully tagged.

Use Case 2: Automatic Setting Device Group

A second use case for leveraging PowerShell and the API is assigning a device group. While a device can have multiple tags, it can belong to only one group at a time. A group can represent a location, department, or any categorization that fits your use case. It’s possible to automatically assign a group during client installation using the /GROUP switch in the installer. However, a practical use case for a script would be updating or changing the group if needed, such as a department moving to a new location or a device being assigned to a new department. You can reuse the Get-EdgeDxDevices logic from the previous script, apply your own filtering criteria to identify the relevant device IDs, and then execute the following script to update the groups accordingly.
# set EdgeDX Device Groups
function Set-EdgeDxDeviceGroups {
    param (
        [Parameter(Mandatory = $true)]
        [string]$ApiKey,           # API key provided by the user
        [Parameter(Mandatory = $true)]
        [string]$GroupName,        # The name of the group to assign devices to
        [Parameter(Mandatory = $true)]
        [string[]]$DeviceIds       # Array of device IDs to associate with the group
    )


    # Build the request body
    $body = @{
        "group"      = $GroupName
        "device_ids" = $DeviceIds
    }


    # Base URL and endpoint
    $baseUrl = "https://api.controlup.com/edge/api"
    $endpoint = "devices/set-group"
    $url = "$baseUrl/$endpoint"


    # Headers with API key
    $headers = @{
        "Authorization" = "Bearer $ApiKey"
        "Content-Type"  = "application/json"
    }


    try {
        # Make the API call
        $jsonBody = $body | ConvertTo-Json -Compress -Depth 2
        $response = Invoke-RestMethod -Uri $url -Method "POST" -Headers $headers -Body $jsonBody
        return $response
    } catch {
        throw "Error invoking API: $_"
    }
}

Set-EdgeDxDeviceGroups -ApiKey $apikey -GroupName "Amsterdam" -DeviceIds $deviceIDs

Use Case 3: Automatic Removal of Old Devices

The final use case we’ll demonstrate is the removal of outdated devices. If devices have been offline for 60 days, for example, we might want to remove them from ControlUp for Desktops to maintain a clean and organized console. Another reason could be that your organization is busy with replacing obsolete Windows 10 devices with new Windows 11 devices. (Did you know? That ControlUp can identify devices that can’t be upgraded!) For this, we can once again use the get-EdgeDxDevices function to retrieve the device list. We can then filter it to identify devices that have not communicated in the last 60 days and extract their device IDs.
# Define the current date
$currentDate = Get-Date


# Define the threshold for communication 
$thresholdDate = $currentDate.AddDays(-60) #fill in the number of days of no communication


# Filter devices with no communication in the last X days
$filteredDevices = $devices | Where-Object {
    -not $_.last_communication -or ([datetime]::Parse($_.last_communication) -lt $thresholdDate)
}
$filteredDevices
$deviceIDs = @($filteredDevices)._id
With these device IDs, we can remove devices from the console using the following function.
function Remove-EdgeDxDevice {
    param (
        [Parameter(Mandatory = $true)]
        [string]$ApiKey,           # API key provided by the user
        [Parameter(Mandatory = $true)]
        [array]$DeviceIds          # Array of device IDs to delete
    )


    # Build the body
    $body = @{
        "device_ids" = $DeviceIds
    }


    # Base URL and endpoint
    $baseUrl = "https://api.controlup.com/edge/api"
    $endpoint = "devices/delete"
    $url = "$baseUrl/$endpoint"


    # Headers with API key
    $headers = @{
        "Authorization" = "Bearer $ApiKey"
        "Content-Type"  = "application/json"
    }


    try {
        # Make the API call
        $jsonBody = $body | ConvertTo-Json -Compress -Depth 2
        $response = Invoke-RestMethod -Uri $url -Method "POST" -Headers $headers -Body $jsonBody


        return $response
    } catch {
        throw "Error invoking API: $_"
    }
}


Remove-EdgeDxDevice -ApiKey $apikey -DeviceIds $deviceIDs

Conclusion

There are countless use cases where automating tasks or gathering data can be instrumental. With the new ControlUp for Desktops API, you now have the tools to start creating these solutions yourself. If you have any questions or would like to explore other use cases and need assistance, feel free to contact me via email at Chris.Twiest@controlup.com.

Important Security Reminder: Protect Your API Key

Following on from the remarks above, here’s a critical reminder: keep your API key secure and confidential. The API key has admin-level privileges, allowing access to all data in your ControlUp for Desktops environment and enabling management tasks. We strongly recommend against hardcoding your API key as plain text in PowerShell scripts. Instead, consider the following best practices:
  • Use a key management system like Azure Key Vault to store and retrieve your API key securely.
  • Create a script that prompts the user for the API key at runtime and passes it as a parameter.
Note: The default Get-Credential pop-up in PowerShell won’t work here, as the password field for the API key is too short. To work around this, you can use the System.Windows.Forms assembly to create a custom input box that can handle longer strings.See the example script:
# Define a function to create the message box
function Get-ApiKey {
    Add-Type -AssemblyName System.Windows.Forms


    # Create a form for the input
    $form = New-Object System.Windows.Forms.Form
    $form.Text = "Enter API Key"
    $form.Size = New-Object System.Drawing.Size(400, 150)
    $form.StartPosition = "CenterScreen"


    # Create a label
    $label = New-Object System.Windows.Forms.Label
    $label.Text = "Please enter your API key:"
    $label.AutoSize = $true
    $label.Location = New-Object System.Drawing.Point(10, 10)
    $form.Controls.Add($label)


    # Create a textbox for the input
    $textBox = New-Object System.Windows.Forms.TextBox
    $textBox.Location = New-Object System.Drawing.Point(10, 40)
    $textBox.Width = 360
    $form.Controls.Add($textBox)


    # Create an OK button
    $okButton = New-Object System.Windows.Forms.Button
    $okButton.Text = "OK"
    $okButton.Location = New-Object System.Drawing.Point(300, 70)
    $okButton.Add_Click({ $form.Close() })
    $form.Controls.Add($okButton)


    # Show the form
    $form.ShowDialog() | Out-Null


    # Return the input from the textbox
    return $textBox.Text
}


# Call the function and save the API key
$ApiKey = Get-ApiKey
]]>
ControlUp for Desktops: Overview https://www.controlup.com/product-tour/controlup-for-desktops-overview/ Wed, 22 Jan 2025 12:31:17 +0000 https://cupstaging.wpengine.com/?page_id=12531

]]>

]]>
Got Slow Logons? Fix Them Fast With ControlUp For Physical Endpoints & Apps https://www.controlup.com/resources/blog/got-slow-logons-fix-them-fast-with-controlup-for-physical-endpoints-apps/ Mon, 12 Sep 2022 09:06:56 +0000 https://cupstaging.wpengine.com/?post_type=blog_post&p=7107

ControlUp has long been the industry standard for fixing slow logons in Citrix-, VMware Horizon, and AVD-based environments. But did you know that you can also speed up logons on Windows-, macOS-, and Linux-based endpoint devices, using ControlUp for Physical Endpoints & Apps? It’s true! On a day-to-day basis, nothing—NOTHING—aggravates me more than a slow […]]]>

ControlUp has long been the industry standard for fixing slow logons in Citrix-, VMware Horizon, and AVD-based environments. But did you know that you can also speed up logons on Windows-, macOS-, and Linux-based endpoint devices, using ControlUp for Physical Endpoints & Apps? It’s true!

On a day-to-day basis, nothing—NOTHING—aggravates me more than a slow logon. I find it absolutely maddening to sit and wait for a Windows system to boot up. For some users, it’s only a nuisance; maybe they’ll go get a cup of coffee or two and check the news on their phone while waiting to get to work. But not everyone has the benefit of waiting around, killing time before they get started. Think of people, for example, who work in critical positions like healthcare, where they need their systems STAT (medical jargon that means “on-the-double”)! The reality is that if they can’t access their systems instantly, patient outcomes can suffer.

My colleague, Trentent Tye, has spent a lot of time investigating this topic and has written and posted several articles and videos about using the ControlUp Real-Time console to analyze logon duration. But this isn’t the only way. In this article, I want to share a different method for discovering the root cause: ControlUp for Physical Endpoints & Apps.   Find the root cause of slow logons, using ControlUp for Physical Endpoints & Apps   ControlUp for Physical Endpoints & Apps is a solution designed to help with monitoring, troubleshooting, understanding, and improving the digital employee experience for people using Windows-, macOS-, and Linux-based physical endpoints. Not only does ControlUp for Physical Endpoints & Apps capture and display metrics in real time, it also captures the processes and events that take place when a user logs on. This information allows IT to easily identify slow logons and their root causes. Of course, not all users are forthcoming about having logon problems. Maybe they’re just too busy, maybe they don’t feel like calling the help desk, maybe they’ve simply become accustomed to the long wait to the point that they don’t give it much thought. Fortunately, ControlUp for Physical Endpoints & Apps makes it easy to identify these users in order to proactively resolve issues that affect their logon duration.  Users with slow logon times can be identified from the main dashboard by selecting User Logon Duration from the drop-down menu on the map widget.   Users with slow logon times can be identified from the main dashboard by selecting User Logon Duration from the drop-down menu on the map widget.   Users—or groups of users—with lengthy logon times are displayed in red. Alternatively, you can use the devices dashboard, which has a column that includes a graph of logon times that can be sorted to identify users with the longest duration.   Use the devices dashboard, which has a column that includes a graph of logon times that can be sorted to identify users with the longest duration.   You can get even more information by clicking the to bring up the Logons and User Sessions report.    Get even more information by clicking the to bring up the Logons and User Sessions report.   From a logon duration standpoint, the columns that are most useful are Logon Time, Profile Load, and GPO Time. By custom-sorting these columns, you can easily identify your trouble spots. Now, we’re getting to where ControlUp for Physical Endpoints & Apps really shines. To help you dive down into the root cause of slow logon issues, check out the Logon Details column at the far right of the dashboard.   To help you dive down into the root cause of slow logon issues, check out the Logon Details column at the far right of the dashboard.   If you click on a magnifying glass icon, you will find a timeline of all the processes that took place during a user’s logon. Hovering over an event will display more information about that process, including its name and duration.   If you click on a magnifying glass icon, you will find a timeline of all the processes that took place during a user’s logon.   Clicking the Session Chart icon will display a chart showing a time chart of the processes.   Clicking the Session Chart icon will display a chart showing a time chart of the processes. Clicking the Session Chart icon will display a chart showing a time chart of the processes.   Clicking the Session Processes icon will display a tabulated grid of the same information.   Clicking the Session Processes icon will display a tabulated grid of the same information. Clicking the Session Processes icon will display a tabulated grid of the same information.   Using this information, you can understand the reasons for users’ poor logon experience and begin to remediate their issues (and also quell their frustrations). In one case, the logon duration for a large group of users was decreased from over four minutes to a little over 30 seconds after identifying an issue with GPOs. In another case, more than three minutes were shaved off the logon time after an issue with WMI was identified and corrected! Slow logon times can negatively impact the digital user experience. Fortunately, by using ControlUp for Physical Endpoints & Apps, you can quickly identify the users who are suffering this fate and then identify the root cause of the problem.  For information on analyzing slow logons, be sure to read the other blogs Trentent has written. For more information on ControlUp for Physical Endpoints & Apps, be sure to read some of our other blogs and articles, or simply reach out to our sales team to schedule a demo and see how, in less than 10 minutes, you can start monitoring Windows, Linux and macOS in your environment and reduce your users’ logon times.]]>