Overview
Eido’s Software Metering feature helps organizations save money by identifying unused software installed across their Windows devices. It collects application usage data from Windows endpoints, allowing IT admins to spot unused or underutilized applications that can be reclaimed or re-licensed more effectively.
This feature requires deploying a lightweight PowerShell script that runs on devices and sends telemetry data back to Eido every 2 hours by means of a scheduled task.
How It Works
A PowerShell script is deployed to targeted Windows devices.
The script creates a scheduled task that runs with elevated permissions (SYSTEM).
In our UI, apps to be metered are configured. Only data on these apps will be sent back to our cloud APIs
Every 2 hours, the scheduled task sends usage telemetry securely to Eido’s cloud APIs.
Data is aggregated and displayed in Eido’s platform, helping identify unused software.
Downloading the Software Metering script
Our Software metering script is shared with customers via support. Please email support@eido.cloud to request it
Prerequisites
Before deploying the script, ensure the following:
Process auditing is enabled on each device. This is required for collecting application usage data. To enable Process auditing via Intune:
Create a new profile from the Intune admin center by navigating to Devices > Windows > Configuration > Create > New Policy
Select Platform “Windows 10 and later” and Profile type “Settings catalog”
Give the Profile a descriptive name and then on the Configuration settings step, click Add Settings
Search for “audit” then select “Administrative Templates\System\Audit Process Creation”. Make sure you check “Include command line in process creation events and in the pane on the left side of the page, enable the setting
Now complete the wizard selecting the scope for the devices you would like to enable process auditing on. We recommend assigning the policy at the device level rather than at a user level
Script configuration
Set your Intune Tenant Id on Line 33 of the script: $scriptConfig.IntuneTenantId = "<GUID>"
Set your Eido region on line 34 of the script:
$scriptConfig.EndpointUrl = https://eu.eido.cloud or $scriptConfig.EndpointUrl = https://us.eido.cloud
Set working directory on line 39 of the script if you want to modify the default of "C:\ProgramData\Eido\SoftwareMetering”:
$scriptConfig.ScriptFolder = "<path to local folder>"
Network access to the following Eido API endpoints:
EU Region: https://eu.eido.cloud/registration/telemetry
US Region: https://us.eido.cloud/registration/telemetry
The script must run with elevated permissions (as SYSTEM or Administrator).
Deployment Options
You may deploy the script using any method of your choice (SCCM, GPO, manual installation, etc.).
However, we recommend deploying it via Microsoft Intune for centralized management and reporting.
Recommended Deployment: Intune Platform Script
Follow these steps to deploy the script via Intune:
Log in to the Intune Portal - Go to Microsoft Intune Admin Center.
In the left-hand menu, go to:
Devices → Scripts and remediations → Platform scripts tab → + AddProvide a name and description
Upload the PowerShell Script (AppMeteringScript.ps1).
Ensure the script is set to Run this script using the logged on credentials: No (so it runs as SYSTEM).
Set Enforce script signature check to No.
Set Run script in 64 bit PowerShell Host to Yes.
Assign the Script to Devices
Assign the script to device groups, not user groups.
This ensures the scheduled task is created at the machine level.
Review & Create
Review your configuration.
Select Create to deploy.
Once deployed, each device will automatically begin sending telemetry every 2 hours.
Verifying Deployment
To confirm successful deployment check Task Scheduler on a target device under Task Scheduler Library → ProcessMeteringTask. A successful run should result in a (0x0) Last Run Result.
Configuring metering of individual apps
After our script has been deployed to one or more devices you will need to configure which apps are to be metered from our UI for data to be fetched from these devices. To do this:
1. In the Eido UI navigate to Discovered Apps and drill into an app to be metered
2. Click App Metering in the top right corner, then slide on both Enable App Metering and App Usage Metering
3. Provide thresholds for when an under-utilized app should be marked as amber/red
4. Provide an executable name and optionally path
a. Note that this will need to be the executable name rather than simply the display name of each app. To find out what this is, open and close the app to be metered on a device that has process auditing configured, then load the Event Log and navigate to Windows Logs > Security. In the below example you see “Calculator” is infact “CalculatorApp.exe” which is what should be entered to meter the app
b.
c. This field supports Regular Expressions, which can be used for more complicated use cases, for example an app that runs from temp directories which change on each launch, or an app that includes a version number in its executable name and is frequently updated. See here for a guide on how to use RegEx: Regex Cheat Sheet
5. Optionally provide the count of licenses for each device along with thresholds for amber/red install counts
6. Hit Save
Security & Privacy
All telemetry data is transmitted securely over HTTPS.
The scheduled task captures process execution information output by Process Auditing only.
Customers can remove the script and scheduled task at any time by deleting our script or removing the scheduled task manually.
Troubleshooting
Look in the Event Log
By default we write high level status of Software metering sync to our event log. To see our events in Event Viewer navigate to Windows Logs > Application and filter on Source “EidoDeviceMetering”
Enable All Tasks History in Task Scheduler
By default Task Scheduler has history disabled. To enable it, click “Enable All Tasks History” on the right hand side actions pane
You will then be able to see task history on the History tab
Enable debug logging
If the scheduled tasks exits with any code other than (0x0) then it may not have run successfully. To troubleshoot this, in the script itself, set line 40 to:
· $scriptConfig.DefaultLogLevel = "DEBUG"
Optionally set lines 41-42 to the below to have the debug log written to a file (rather than the default of the Event Log. Sometimes this will be requested by Eido support to make it easier for them to troubleshoot issues
· $scriptConfig.LoggingMode = "File" # Options: Console, File, EventLog
· $scriptConfig.LogFilePath = "<path and file name to log to, E.G. $($scriptConfig.ScriptFolder)\DeviceMetering.log>"
A debug log will then be written containing the needed details needed to troubleshoot when our scheduled task next runs (or if the task is run manually.
Look up the last event we processed
To see how far up the Process audit log we have processed, open regedit on the device and navigate to Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Eido and look at LastProcessedUtc for the date/time stamp we last read
A debug log will then be written containing the needed details needed to troubleshoot