Skip to main content
Neo reads RoboShadow and changes nothing there, because RoboShadow’s API only reads. The fix runs on the device through your RMM. Add the three components below to your RMM once, and an agent that has RoboShadow and your RMM’s script tool can patch a CVE end to end:
  1. It reads the client’s CVEs in RoboShadow, ranks them, and reads the fix for each one.
  2. It matches each RoboShadow device to the device in your RMM, by name inside the client’s company, then by serial number when two devices share a name. When it cannot find exactly one device, it patches nothing there and tells you.
  3. It upgrades the vulnerable application with [Neo Script] WinGet Upgrade, or installs the missing update with [Neo Script] Install Windows Update: one package or one KB per component run, under the approval rules of your RMM script tool.
  4. It runs [Neo Script] RoboShadow Rescan, waits for RoboShadow’s next scan, and calls a CVE resolved only when that scan no longer shows it.
  5. It writes what it did, device by device, in an internal note on the ticket. A weekly agent with no ticket writes it on the client’s RoboShadow CVE remediation ticket, and creates that ticket when there is none.
The rescan also fires your RoboShadow AutoFix rules. When an AutoFix rule already fixed the same application on other devices, the agent runs the rescan alone.
Some runtimes, such as .NET and the Visual C++ Redistributables, keep the older version beside the new one, so RoboShadow can still list the CVE after a successful upgrade. The agent reports it and does not patch again. RoboShadow’s AutoFix rule for the application has an Uninstall Before Upgrade option; test it on one device first, because other applications may need the older version.

Add the components to your RMM

Create each component as a PowerShell script that runs as the local system account, with the exact name below. Neo finds the components by name, so a renamed copy is never used. Each one reads its input from an environment variable, which is how Datto RMM passes a component variable, or from a PackageId=<value> or KB=<value> argument, which is how NinjaOne passes a script variable. The patch components are checked against how Datto RMM and NinjaOne pass a variable. On another RMM, a component that does not receive its input reports MISSING_INPUT and changes nothing, and the agent stops patching on that RMM and tells you. The agent runs them through Neo’s RMM script tool, which N-central, ScreenConnect and Syncro do not use, so on those RMMs the agent reads and reports only. In Datto RMM: open Automation > Components, click New Component, choose the Scripts category and PowerShell, paste the script, and add the variable the table names as a String variable. In NinjaOne, add a script variable with the same name. The agent runs a patch component only when its synced record declares that variable. Then click the sync button under Integrations > RMM in Neo, so Neo finds the new components. The WinGet component needs App Installer (WinGet) installed for all users, as it is on current Windows 10 and 11 builds, x64 or ARM64. On a device without it, the component reports NO_WINGET and changes nothing.

[Neo Script] WinGet Upgrade

[Neo Script] Install Windows Update

[Neo Script] RoboShadow Rescan

Set up the agent

Give the agent RoboShadow with the Vulnerabilities and Updates and Organisations, Devices and Inventory areas on, script execution on your RMM, and an internal-note permission on your PSA. A weekly agent with no ticket also needs ticket create on your PSA for the RoboShadow CVE remediation ticket. Each patch run follows the agent’s approval setting for RMM scripts, and runs without a request when an admin pre-approved that exact script and value. While you test, turn on approval for RMM scripts on the agent: the agent then sends the plan, with the device, the package or KB and the CVEs, and runs it once a technician approves. See Connecting RoboShadow to Neo to connect RoboShadow first.