Collect stable signals
Use computer identity, OS version, build, model, serial, encryption state, last boot, and free system-drive space as a starting point. Add a signal only when a workflow consumes it.
Normalize the output
Return consistent property names and units, and include collection time. Avoid mixing local time zones or formatting values for display inside the collection script.
$os = Get-CimInstance Win32_OperatingSystem
$computer = Get-CimInstance Win32_ComputerSystem
[pscustomobject]@{
DeviceName = $env:COMPUTERNAME
Model = $computer.Model
Build = $os.BuildNumber
CollectedUtc = [DateTime]::UtcNow.ToString('o')
}Respect privacy and scale
Exclude personal content and unnecessary user identifiers. Run collection on a schedule that matches the decision’s urgency, then expire old snapshots so stale data cannot be mistaken for current state.
Operational checklist
- Collect only decision-relevant signals.
- Normalize names, units, and timestamps.
- Exclude personal content.
- Mark freshness and expire stale records.