- It reads the client’s CVEs in RoboShadow, ranks them, and reads the fix for each one.
- 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.
- 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.
- 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.
- 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.
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 aPackageId=<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.
