Presence, AD/SCCM/DNS reasons, monitors, snapshots, new-device priority

Worker: pings every tracked device on a presence sweep (hourly in business
hours plus midnight) and records last online; inventory reports whether a
device was found in AD and SCCM; monitors from WmiMonitorID; snapshots of
the last reachable state replace "Cached"; newly tracked devices are swept
and published first; totals count source devices only; per-type timing in
Worker-State.

Front end: details dialog shows presence, reasons instead of N/A,
"Waiting for worker...", monitors and snapshot times, and refreshes in
place; Custom View gains Days Offline, Last Online, Found In and monitor
columns; manual pair changes show immediately; sync dialog shows timing by
type. Custom View gets a large scrollbar; "Exactly ticked" filter.
This commit is contained in:
Johan Sandoval committed 2026-10-06 19:09:49 +00:00
1 parent 50c2a18a68
commit 7868948bfc
10 files changed
+1230 -356

No files matched your search

+18
View File
@@ -51,6 +51,11 @@
# A task-sequence log modified within this window counts as "active"
ActiveLogHours = 24
# Every tracked device (including completed pairs and destinations the sweep skips)
# is pinged this often to keep "last online" / "days offline" current. Cycles only run
# in business hours plus the midnight pitstop, so 60 = hourly by day, plus midnight.
PresenceSweepMinutes = 60
}
# -------------------------------------------------------------------------------------
@@ -99,6 +104,18 @@
@{ Label = 'Shared Space'; Column = 'SharedSpace0' }
)
}
# Attached monitors (count + model names). Needs the WmiMonitorID class enabled in
# hardware inventory (root\wmi). SCCM stores its string properties as comma-separated
# character codes, which the provider decodes. Set Enabled = $false if not collected.
Monitors = @{
Enabled = $true
View = 'v_GS_WMIMONITORID'
NameColumn = 'UserFriendlyName0'
ManufacturerColumn = 'ManufacturerName0'
# Skip the built-in panel of laptops (instance names containing these)
InternalPattern = 'LGD|SDC|BOE|AUO|CMN|SHP'
}
}
# -------------------------------------------------------------------------------------
@@ -109,6 +126,7 @@
CycleSeconds = 45 # cooldown between cycles (business hours are ignored)
DelayMsPerDevice = 35 # artificial per-device latency so the progress bar moves
LifecycleHours = 24 # how long one simulated migration takes, start to finish
PresenceSweepMinutes = 5 # ping every device this often (Live default is hourly)
Verbose = $true # run the worker with -v style tracing
}