Skip to main content

Software Metering

helps organizations save money by identifying unused software installed across their Windows devices

Updated over a week ago

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

  1. A PowerShell script is deployed to targeted Windows devices.

  2. The script creates a scheduled task that runs with elevated permissions (SYSTEM).

  3. In our UI, apps to be metered are configured. Only data on these apps will be sent back to our cloud APIs

  4. Every 2 hours, the scheduled task sends usage telemetry securely to Eido’s cloud APIs.

  5. 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>"

      • To find the GUID of your Intune deployment, in the Azure portal, search for Entra then select Microsoft Entra ID

      • On the overview tab you will see your Tenant ID

    • Set your Eido region on line 34 of the script:

    • 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:

  • 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:

  1. Log in to the Intune Portal - Go to Microsoft Intune Admin Center.

  2. In the left-hand menu, go to:
    Devices → Scripts and remediations → Platform scripts tab → + Add

  3. Provide a name and description

  4. Upload the PowerShell Script (AppMeteringScript.ps1).

  5. Ensure the script is set to Run this script using the logged on credentials: No (so it runs as SYSTEM).

  6. Set Enforce script signature check to No.

  7. Set Run script in 64 bit PowerShell Host to Yes.

  8. 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.

  9. 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

Did this answer your question?