---
title: "Invoke-CUAgentUpdate: Update an Agent"
slug: "invoke-cuagentupdate-upgrade-an-agent"
updated: 2026-04-09T14:00:52Z
published: 2026-04-09T14:00:52Z
canonical: "support.controlup.com/invoke-cuagentupdate-upgrade-an-agent"
---

> ## Documentation Index
> Fetch the complete documentation index at: https://support.controlup.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Invoke-CUAgentUpdate: Update an Agent

The Invoke-CUAgentUpdate cmdlet enables you to **update** ControlUp Agents on local machines to a specific version or the latest available GA version. This PowerShell cmdlet is part of the [ControlUp Automation module](https://www.powershellgallery.com/packages/ControlUp.Automation) and provides a streamlined method for keeping agents current without requiring manual intervention or complex deployment processes.

## Prerequisites

 ### System Requirements

  - **.NET Framework**: Version 4.8 must be installed
  - **Existing Agent**: A ControlUp Agent must already be installed on the target machine (this cmdlet updates existing agents, it doesn't perform fresh installations)
  
### Permissions
  - **Administrative Rights**: You must run PowerShell as Administrator to update the agent service
  - **Registry Access**: You need read/write access to:
    - `HKLM\SOFTWARE\Smart-X\ControlUp`
    - `HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall`
  - **Service Control**: You need permissions to stop and start Windows services

 ### Network Requirements (for Online Updates)

  - **Internet Access**: You need HTTPS access to download agent packages from:
    - `https://downloads.controlup.com` (primary CDN)
  - **Proxy Configuration**: If you use a proxy server, you must provide proxy settings through the `-ProxySettings` parameter

### Module Requirements

- **ControlUp.Automation Module**: You must have the ControlUp Automation PowerShell module installed
- **Module Import**: You need to import the module before using the cmdlet:
```powershell
Import-Module ControlUp.Automation
```
## Syntax
```powershell
 Invoke-CUAgentUpdate
      [[-ZipFilePath] <String>]
      [[-Version] <String>]
      [[-ProxySettings] <ProxySettings>]
      [<CommonParameters>]
```

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| **ZipFilePath** | String | No | The absolute path to a local ControlUp Agent ZIP file. If you don't specify this parameter, the cmdlet downloads the agent from ControlUp's CDN. Use this parameter for offline updates or when you have pre-downloaded the agent package. |
| **Version** | String | No | The specific version number you want to update to (e.g., "9.X"). If you don't specify this parameter and no ZipFilePath is provided, the cmdlet downloads and installs the [latest available version](https://downloads.controlup.com). This parameter is ignored when ZipFilePath is specified. |
| **ProxySettings** | ProxySettings | No | The proxy configuration object for environments that require proxy access to reach ControlUp's download servers. You need to create a ProxySettings object with server address, port, and optional credentials. This parameter only applies to online updates.
    
### Parameter Notes

- **ZipFilePath** and **Version** work independently:
    - If you provide ZipFilePath, the Version parameter is ignored
    - If you provide only Version, the cmdlet downloads that specific version
    - If you provide neither, the cmdlet downloads the latest version
- **ProxySettings** example:
```powershell
$proxy = New-Object ControlUp.Automation.ProxySettings
$proxy.Server = "proxy.company.com"
$proxy.Port = 8080
```

## Workflow and Examples
### Basic Update Workflow

1. **Open PowerShell as Administrator**
2. Import the ControlUp Automation Module
```powershell
Import-Module ControlUp.Automation
```
3. Run the Update Command
```powershell
 Invoke-CUAgentUpdate
 ```
4. Verify the Update
```powershell
# Check the result object
$result = Invoke-CUAgentUpdate
    if ($result.Success) {
      Write-Host "Agent updated successfully"
  } else {
      Write-Host "Update failed: $($result.Error)"
  }
```
