A first-time ControlUp user sought help generating a report or dashboard to query Wi-Fi adapter drivers across devices. They had PowerShell scripts producing the desired output but struggled to implement these within ControlUp. The root challenge involved correctly transforming and sending the script output to ControlUp’s custom data index for dashboard visualization.
The recommended approach required modifying the PowerShell script to wrap the output in specific markers—`### SIP DATA BEGINS ###` and `### SIP DATA ENDS ###`—and present the data as a JSON array. This enables the ControlUp agent to parse and ingest the data into a custom data index, which can then be queried in dashboards. A sample script was provided illustrating how to query Wi-Fi drivers using `Get-CimInstance` filtered by device name and manufacturer, then constructing a JSON array with device name, manufacturer, driver version, and driver date properties. This script output was wrapped in the SIP markers for ControlUp Data (CU4D) to capture the information.
Configuration instructions detailed how to add this script inside ControlUp for Desktops by navigating to Configuration > Scripts and creating a new script entry. Important options included setting the platform to Windows, language to PowerShell, enabling data sending to a specifically named custom data index (e.g., `wifi_adapter_drivers`), and choosing a trigger such as “Once Per Day” to optimize resource use since Wi-Fi driver info changes infrequently. They also noted enabling “Overwrite Existing Data” to maintain the current driver state without historical data buildup. After running the script on targeted devices, users could verify data ingestion under Configuration > Data and use or import JSON to visualize in dashboards.
During deployment, an error involving a positional parameter indicated character encoding issues with the script on some devices, despite the command working via remote shell. This highlighted the importance of script formatting and encoding handled within ControlUp’s execution environment. Further enhancements included correcting the PowerShell property name for the device name field (switching from `device_name` to `devicename`) due to how the data was read, ensuring accurate output reflecting the adapter’s actual name rather than the computer name.
A community member also shared a ready-made script and dashboard JSON import, tested on their ControlUp fleet, to streamline adoption. This example underscored ControlUp’s flexibility in integrating custom scripted data sources for tailored visibility into hardware driver versions via dashboards.
This case demonstrates how ControlUp’s scripting and custom data indexing framework can extend monitoring and reporting capabilities beyond built-in metrics, supporting complex, field-specific queries through simple PowerShell integration and well-structured JSON output. Users should ensure proper script structure with SIP markers, configure triggers and data indexes thoughtfully, and validate script encoding to avoid runtime errors. Detailed guidance is available in ControlUp’s scripting guide at https://support.controlup.com/docs/scripting-guide and broader dashboard how-to resources in their knowledge base.
Read the entire ‘How to Query Wi-Fi Adapter Driver Versions Using Custom PowerShell Scripts and Data Indexes in ControlUp’ thread below:
Morning, first time controlup user here. Trying to generate a report (or dashboard) to query Wi-Fi adapter drivers. Got a couple powershell scripts that will output what I want, just having challenges putting that to practice in control up. Anything i could be missing or any directions I can be pointed to?
can you share the scripts please and/or the output? Have you checked the scripting guide and mainly the writing to an index option? support.controlup.com/docs/scripting-guide#…a very common issue is that the json is more than 1 level deep
heres the ps script i would like to use:
“`Get-CimInstance -ClassName Win32_PnPSignedDriver `
-Filter “DeviceName like ‘%Wi-Fi%’ and (Manufacturer like ‘%MediaTek%’ or Manufacturer like ‘%Intel%’)” `
| Select-Object DeviceName, DriverVersion ““
I asked out AI Assistant to help her, here is the reply:
Good news — this is very doable in CU4D, and I’ve got exactly what you need from the Scripting Guide. Here’s the amended script plus the setup steps so your community member can wire it into a Custom Dashboard.
Amended PowerShell Script
The key change: wrap the output in the `### SIP DATA BEGINS/ENDS ###` markers as a JSON array, so the CU4D agent picks it up and writes it to a custom data index.
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
$results = Get-CimInstance -ClassName Win32_PnPSignedDriver `
-Filter “DeviceName like ‘%Wi-Fi%’ and (Manufacturer like ‘%MediaTek%’ or Manufacturer like ‘%Intel%’)” `
| Select-Object DeviceName, Manufacturer, DriverVersion, DriverDate
$dataList = New-Object ‘System.Collections.Generic.List[psobject]’
foreach ($r in $results) {
$row = @{}
$row[“device_name”] = $r.DeviceName
$row[“manufacturer”] = $r.Manufacturer
$row[“driver_version”] = $r.DriverVersion
$row[“driver_date”] = “$($r.DriverDate)”
$dataList.Add($row)
}
Write-Output(“### SIP DATA BEGINS ###”)
Write-Output(ConvertTo-Json $dataList -Compress)
Write-Output(“### SIP DATA ENDS ###”)
and the step by step instructions:
Setting it up in ControlUp for Desktops
1. Go to ControlUp for Desktops > Configuration > Scripts > Add Script.
2. Fill in the fields:
◦ Platform: Microsoft Windows
◦ Language/Interpreter: PowerShell
◦ Content: paste the script above
◦ Trigger: pick something like Short/Long Interval Timer or Once Per Day (since Wi-Fi driver info rarely changes, Once Per Day is efficient)
◦ Timeout: 60 seconds is plenty
◦ Data Collection → Sends Data: enable this, then under Data Index, type a new name (e.g. `wifi_adapter_drivers`). ControlUp auto-creates this custom index the first time the script runs successfully.
◦ Optionally enable Overwrite Existing Data if you only want the latest driver version per device (recommended here, since you’re not tracking history — just current state).
3. Click Create Script, then let it run (via the trigger, or manually as a Custom Action) on a batch of devices to populate the index.
4. You can verify data landed by checking Configuration > Data > wifi_adapter_drivers.
hope this helps
thank you so far got 1 successful device query, I’ll leave it running to see if more are picked up
well, still only 1 device has worked, all others generate the following error message: A positional parameter cannot be found that accepts argument ‘Â’. At C:\ProgramData\Avacee\sip_agent\scripts\h0_7F6EBewlUPquJSvL2.ps1:3 char:12 + $results = Get-CimInstance -ClassName Win32_PnPSignedDriver `
however the entire command does run through remote shell
Hmm probably needs some better PS scripting abilities then me and AI Assistant on first try
Cc can you pls help here?
Hi hope everything is well. Here is everything you need to do this usecase ControlUp for Desktops allows you to bring any machine data to its platform with a script and visualize it in dashboards. To help you with this first usecase I created a dashboard and script for you and tested it on our own ControlUp fleet. The included.txt file you can import into our script engine by clicking Import File then set the options of the script as I did in the screenshot. So Once Per Day, Script Enabled, Send Data, Overwrite Existing Data and Data index: wifi_drivers. Then import the included JSON into the dashboard section and your ready to go See the dashboard screenshot. Goodluck hope this does what you want!
Thanks everyone! I can confirm the script and json works exactly as shown above
Awesome
Just caught this, script isn’t catching the wifi adapter name (ex. meditek wi-fi 6e etc.), device name is showing the computer name, which is also needed
Do you feel comfortable adding it to the script your self? Or else I can look at it Friday
Yes I’m confident I can add it myself
Cool if you need help i can do it Friday! GL
Got it to output, needed to change ‘device_name’ to ‘devicename’ below:
“`foreach ($r in $wifi) {
$row = [ordered]@{
devicename = [string]$r.DeviceName
Manufacturer = [string]$r.Manufacturer
driver_version = [string]$r.DriverVersion
driver_date = ConvertTo-IsoDate $r.DriverDate
}
$dataList.Add([pscustomobject]$row)
}“`
thx all!
Continue reading and comment on the thread ‘How to Query Wi-Fi Adapter Driver Versions Using Custom PowerShell Scripts and Data Indexes in ControlUp’. Not a member? Join Here!
Categories: All Archives
