Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

Yes. You can monitor SCCM (now Microsoft Configuration Manager) server infrastructure without SCOM by running a PowerShell health-collection script from the Configuration Manager site drive. The script can verify site connectivity, enumerate site-system roles, test server reachability and Windows services, measure client-data freshness, and return structured Pass, Warn, or Fail records for Task Scheduler or an existing alerting platform.

This approach is transparent and inexpensive, but it is deliberately narrower than an Operations Manager management group. It detects conditions in ConfigMgr and Windows; it does not provide SCOM-style management packs, dependency graphs, or cross-server event correlation. The design below keeps detection separate from remediation so an alert cannot unexpectedly restart a service or change site configuration.

What should an SCCM infrastructure monitoring script check?

A useful no-SCOM check combines four evidence types: Configuration Manager objects, Windows state, time-based freshness, and execution metadata. A ping alone is not infrastructure health; a server can answer ICMP while its management point, distribution point, provider, or client-processing pipeline is failing.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  • ConfigMgr control-plane access: the ConfigurationManager module loads, the site drive is available, and a site query returns the expected site code, site name, and server.
  • Site-system inventory: expected management-point, distribution-point, and software-update-point roles are present. Record the server and role so an alert identifies the affected component.
  • Host evidence: DNS or TCP reachability, selected Windows service states, recent event-log errors, and (where permitted) file or database freshness.
  • Client freshness: compare policy, heartbeat discovery, hardware inventory, software inventory, and status-message timestamps with the intervals configured for your hierarchy.
  • Operational output: emit one record per test with a timestamp, status, evidence, and remediation hint. JSON is convenient for an API or log collector; CSV works for scheduled reports.

Keep every threshold configurable. A lab and a large production hierarchy can have very different inventory and heartbeat cadences, and a missed sample is not automatically a failed component.

#1 Best Overall
Elebase USB to USB C Adapter for iPhone 18 Pro Max,USBC Car Charger Adapter | 4Pack Type C Female to A Male Cable Converter for Apple Duo 17 16 15 14 Plus,iWatch Watch 12 11 10,iPad 9 8 Air,Airpods 5 4
  • Read Before You Buy — No Video Output: These adapters support charging and USB 2.0 data transfer, but cannot transmit video signals. Except for standard USB webcams (which use USB data only), they are not compatible with HDMI/DisplayPort cables, video-capable USB-C hubs, or docking stations with video output.
  • Convert USB-A Ports to USB-C: Designed to connect USB-C earphones, cables, flash drives, card readers, and other USB-C accessories to standard USB-A ports. Plug-and-play with no drivers or software required.
  • Aluminum Alloy Housing: Built with a sturdy aluminum alloy shell that aids in heat dissipation and protects against daily wear and scratches. Designed to maintain a stable and secure connection.
  • Compact & Travel-Friendly: The ultra-compact design allows the adapter to stay plugged into your device without blocking adjacent ports or adding bulk, reducing wear and tear on your original USB ports.
  • 12-Month Warranty: Backed by a 12-month manufacturer warranty for peace of mind. Designed to meet strict quality control standards for reliable everyday performance.

How is this different from SCOM/OpsMgr?

A PowerShell collector runs checks you define and hands the results to your scheduler or alerting stack. SCOM is a separate operational surface with management groups, management packs, permissions, scheduled collection, and built-in correlation across servers and dependencies.

Capability ConfigMgr-only PowerShell SCOM/OpsMgr
ConfigMgr role inventory Explicit queries for the roles and servers you choose Provided through management packs and monitored objects
Event and dependency correlation You write the correlation rules and retention Native management-group workflows and monitors
Deployment burden PowerShell module, a run account, and a scheduler Operations Manager infrastructure, agents or gateways, and management packs
Alert integration JSON, CSV, Windows events, or your existing endpoint SCOM alerting, connectors, and notification channels
Remediation Detection only unless you explicitly add controlled actions Can include configured recovery tasks
Best fit Lightweight, inspectable checks for a known ConfigMgr estate Broad enterprise monitoring and cross-platform correlation

Choose the script when the requirement is a small, explainable set of ConfigMgr checks or a bridge into an alerting system you already operate. Choose SCOM when you need centralized dependency modeling, management-pack coverage, and correlation beyond the Configuration Manager hierarchy.

What do I need before running the script?

Run the collector on a management workstation, site server, or automation host that can reach the SMS Provider and the site systems it will test.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  • A current Configuration Manager console installation, including its ConfigurationManager PowerShell module.
  • Permission to connect to the SMS Provider and read the site-system and client-status data used by the checks. Use a dedicated account with only those read rights.
  • Network and name-resolution access to the provider and monitored servers. If you test services or event logs remotely, grant the corresponding Windows permissions.
  • A decision about the PowerShell engine. Current-branch documentation supports Windows PowerShell 5.1 and supports the cmdlet library in PowerShell 7, but not every cmdlet is compatible with PowerShell 7.
  • A scheduler or runner, such as Windows Task Scheduler, and a destination for JSON, CSV, Windows events, or an HTTP-based internal alert endpoint.

Pin or record the module version on every run. Microsoft warns that an older ConfigurationManager module can be imported from another folder, producing confusing behavior when several console versions are installed.

Rank #2
Sale
Anker USB-C Hub, 5-in-1 USB Hub for Laptops, 4K HDMI Multiport Adapter | USB C Dongle with 90W Max Power Delivery, 3×5Gbps USB A Data Ports, for MacBook, Dell, and More (Charger Not Included)
  • 5-in-1 USB-C Hub: Experience comprehensive connectivity featuring a Power Delivery input, two USB-A 2.0 ports, a USB-A 3.0 port, and an HDMI port. (Note: The USB-C power delivery input port is only for connecting an external wall charger to power your laptop and cannot power peripheral devices.)
  • 90W Pass-Through Charging: Achieve optimal charging with 90W pass-through power to your laptop, supported by a total input of 100W, with the hub reserving 10W for operational efficiency. (Note: Wall charger not included.)
  • Quick Data Transfers: Accelerate your productivity with rapid data transfers using a high-speed 5Gbps USB 3.0 port and two 480Mbps USB 2.0 ports.
  • 4K HDMI Display: Enhance your visual experience with a hub capable of delivering 4K resolution at 30Hz in both mirror and extend modes. Please note that this hub is compatible with MacBook (macOS 12 and newer), Windows 10 and 11, ChromeOS, and laptops equipped with DP Alt Mode and Power Delivery. Note: This device is not compatible with Linux.
  • What You Get: Anker USB-C Hub (5-in-1, 4K HDMI), welcome guide, 18-month warranty, and our friendly customer service.

How do I connect safely to the Configuration Manager site drive?

The module exposes a CMSite provider. The script should import it, create the site drive only when necessary, change location to that drive, and immediately validate the connection with Get-CMSite. Do not assume the first provider returned by DNS is the correct one for a hierarchy with multiple sites.

  1. Identify the three values for your environment: site code, SMS Provider machine, and the account that will execute the task.
  2. Run the script with Windows PowerShell 5.1 first if it uses cmdlets whose PowerShell 7 compatibility is uncertain.
  3. Record the module version, site code, site name, provider, and execution timestamp in the output.
  4. Fail the run as a connection error when the site query times out or returns no site; do not label that condition as a failed management point.

What does a practical no-SCOM PowerShell script look like?

The following collector is intentionally read-only. It checks site access, expected roles, host reachability, selected services, and configurable freshness windows. Role cmdlet properties can differ slightly between current-branch releases, so the script records the returned object as evidence and leaves environment-specific event-log and database queries in clearly marked sections.

param(
    [Parameter(Mandatory=$true)] [string]$SiteCode,
    [Parameter(Mandatory=$true)] [string]$ProviderMachineName,
    [string[]]$ExpectedRoles = @('ManagementPoint','DistributionPoint','SoftwareUpdatePoint'),
    [int]$PolicyMaxAgeHours = 26,
    [int]$HeartbeatMaxAgeHours = 26,
    [int]$HardwareInventoryMaxAgeHours = 168,
    [int]$SoftwareInventoryMaxAgeHours = 168,
    [int]$StatusMessageMaxAgeHours = 26,
    [string]$OutputPath = "$PSScriptRoot\ConfigMgrHealth.json"
)

$ErrorActionPreference = 'Stop'
$runAt = (Get-Date).ToUniversalTime()
$results = [System.Collections.Generic.List[object]]::new()

function Add-Check {
    param(
        [string]$Name, [ValidateSet('Pass','Warn','Fail')] [string]$Status,
        [string]$Server, [string]$Role, [string]$Evidence, [string]$Hint
    )
    $results.Add([pscustomobject]@{
        Timestamp = $runAt.ToString('o'); Check = $Name; Status = $Status
        Server = $Server; Role = $Role; Evidence = $Evidence; RemediationHint = $Hint
    })
}

try {
    $modulePath = Join-Path $env:SMS_ADMIN_UI_PATH '..\ConfigurationManager.psd1'
    Import-Module $modulePath -ErrorAction Stop
    $module = Get-Module ConfigurationManager | Select-Object -First 1

    if (-not (Get-PSDrive -Name $SiteCode -PSProvider CMSite -ErrorAction SilentlyContinue)) {
        New-PSDrive -Name $SiteCode -PSProvider CMSite -Root $ProviderMachineName | Out-Null
    }
    Set-Location "$SiteCode`:\"
    $site = Get-CMSite -SiteCode $SiteCode -ErrorAction Stop
    Add-Check 'Site connectivity' 'Pass' $ProviderMachineName 'Site' `
        ("SiteCode={0}; SiteName={1}; ModuleVersion={2}" -f $site.SiteCode,$site.SiteName,$module.Version) `
        'No action required.'
}
catch {
    Add-Check 'Site connectivity' 'Fail' $ProviderMachineName 'Site' $_.Exception.Message `
        'Verify the SMS Provider, site code, module path, and account permissions.'
    $results | ConvertTo-Json -Depth 6 | Set-Content -Path $OutputPath -Encoding UTF8
    exit 2
}

# Role presence checks. These cmdlets are read-only.
$roleQueries = @{
    ManagementPoint      = { @(Get-CMManagementPoint -ErrorAction Stop) }
    DistributionPoint    = { @(Get-CMDistributionPoint -ErrorAction Stop) }
    SoftwareUpdatePoint  = { @(Get-CMSoftwareUpdatePoint -ErrorAction Stop) }
}
foreach ($role in $ExpectedRoles) {
    if (-not $roleQueries.ContainsKey($role)) {
        Add-Check 'Expected role definition' 'Warn' '' $role 'No query is defined for this role.' `
            'Add a role-specific read-only query before treating this role as monitored.'
        continue
    }
    try {
        $objects = & $roleQueries[$role]
        if ($objects.Count -eq 0) {
            Add-Check 'Role presence' 'Fail' '' $role 'No object was returned.' `
                'Confirm the role is installed and that the account can read site-system data.'
        }
        else {
            foreach ($object in $objects) {
                $server = @($object.ServerName,$object.NetworkOSPath,$object.NALPath) | Where-Object { $_ } | Select-Object -First 1
                Add-Check 'Role presence' 'Pass' $server $role ($object | Out-String).Trim() `
                    'No action required.'
            }
        }
    }
    catch {
        Add-Check 'Role query' 'Warn' '' $role $_.Exception.Message `
            'Separate an unavailable query from a confirmed role failure and verify cmdlet compatibility.'
    }
}

# Basic host and service checks for every discovered role server.
$servers = $results | Where-Object { $_.Server -and $_.Check -eq 'Role presence' } | Select-Object -ExpandProperty Server -Unique
foreach ($server in $servers) {
    try {
        if (Test-Connection -ComputerName $server -Count 1 -Quiet) {
            Add-Check 'Host reachability' 'Pass' $server '' 'ICMP response received.' 'No action required.'
        } else {
            Add-Check 'Host reachability' 'Warn' $server '' 'No ICMP response.' 'Check routing and firewall policy; ICMP may be disabled.'
        }
    } catch {
        Add-Check 'Host reachability' 'Warn' $server '' $_.Exception.Message 'Treat timeout as unknown until another signal confirms failure.'
    }

    foreach ($serviceName in @('CcmExec','SMS_EXECUTIVE','SMS_SITE_COMPONENT_MANAGER')) {
        try {
            $service = Get-Service -ComputerName $server -Name $serviceName -ErrorAction Stop
            $state = if ($service.Status -eq 'Running') { 'Pass' } else { 'Fail' }
            Add-Check 'Windows service state' $state $server $serviceName $service.Status `
                'Confirm the service startup mode and review dependent ConfigMgr components before restarting anything.'
        } catch {
            Add-Check 'Windows service state' 'Warn' $server $serviceName $_.Exception.Message `
                'The service may not apply to this role, or remote service access may be denied.'
        }
    }
}

# Pull configured client-status intervals when the cmdlet is available.
try {
    $clientStatus = Get-CMClientStatusSetting -ErrorAction Stop
    Add-Check 'Client-status configuration' 'Pass' $ProviderMachineName 'ClientStatus' `
        ($clientStatus | Out-String).Trim() 'Use the configured intervals when calculating freshness.'
} catch {
    Add-Check 'Client-status configuration' 'Warn' $ProviderMachineName 'ClientStatus' $_.Exception.Message `
        'Supply approved interval values as parameters and verify them against site settings.'
}

# Insert environment-specific queries for latest policy, heartbeat, inventory,
# and status-message timestamps. Compare each timestamp with its parameter,
# and call Add-Check with Pass, Warn, or Fail. Missing data is not a failure.

$results | ConvertTo-Json -Depth 8 | Set-Content -Path $OutputPath -Encoding UTF8
$results | Group-Object Status | ForEach-Object { Write-Output ("{0}: {1}" -f $_.Name,$_.Count) }

The role queries are intentionally explicit. Add other roles, such as a reporting service point or service connection point, only when you know the corresponding cmdlet and the evidence you want to collect. A returned object proves that ConfigMgr can enumerate the role; it does not prove that every client request or content transfer succeeds, which is why host, service, event, and freshness checks are separate.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

How do I measure stale client policy, heartbeat, inventory, and status data?

Use the collection intervals configured in your hierarchy rather than hard-coded industry averages. Configuration Manager exposes settings for client policy, hardware inventory, heartbeat discovery, software inventory, status messages, and history cleanup through client-status settings. Read those settings when the cmdlet is available, or pass approved values as parameters and document the source.

Rank #3
Sale
Anker USB C Hub, 7in1 Multi-Port USB Adapter, 4K@60Hz USBC to HDMI Splitter | 85W Max PD, 2 USB 3.0 & 1 USBC Data Ports, SD/TF Card Reader, for Laptops/Mac and Other Type C Devices (Charger Not Included)
  • Sleek 7-in-1 USB-C Hub: Features an HDMI port, two USB-A 3.0 ports, and a USB-C data port, each providing 5Gbps transfer speeds. It also includes a USB-C PD input port for charging up to 100W and dual SD and TF card slots, all in a compact design.
  • Flawless 4K@60Hz Video with HDMI: Delivers exceptional clarity and smoothness with its 4K@60Hz HDMI port, making it ideal for high-definition presentations and entertainment. (Note: Only the HDMI port supports video projection; the USB-C port is for data transfer only.)
  • Double Up on Efficiency: The two USB-A 3.0 ports and a USB-C port support a fast 5Gbps data rate, significantly boosting your transfer speeds and improving productivity.
  • Fast and Reliable 85W Charging: Offers high-capacity, speedy charging for laptops up to 85W, so you spend less time tethered to an outlet and more time being productive.
  • What You Get: Anker USB-C Hub (7-in-1), welcome guide, 18-month warranty, and our friendly customer service.
  1. Obtain the latest timestamp for the signal being evaluated from an approved ConfigMgr view, query, or reporting source.
  2. Calculate age in UTC: (Get-Date).ToUniversalTime() - $lastSeen.
  3. Return Pass when the age is within the configured interval.
  4. Return Warn when data is missing, the query timed out, or age is near the limit and needs investigation.
  5. Return Fail only when a reliable timestamp is beyond the agreed limit and the condition is reproducible.

Keep policy, heartbeat, hardware inventory, software inventory, and status-message checks independent. A client can be current for policy while its inventory is stale, and combining them into one score hides that distinction.

How should the script use Windows services, event logs, and freshness evidence?

Correlate multiple weak signals instead of escalating one transient symptom. A stopped service plus recent component errors is stronger evidence than either signal alone; a timeout with no corroborating data should remain an unknown or warning.

Windows services

Check only services relevant to the role. The example includes common ConfigMgr services, but a service that is absent on a particular role is not automatically a failure. Record the service name, state, server, and whether remote access itself failed.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Event logs

Query the ConfigMgr component and system logs that your operations team has approved, filter by a recent time window, and retain the event ID, provider, timestamp, and message summary. Do not alert on every warning; define a small list of repeatable error patterns and a suppression window.

Rank #4
Sale
UGREEN USB to USB C Adapter Combo 4-Pack, 10Gbps USB C Converter Space Gray | Data transfer & Fast charging for MacBook, iPhone 17/16/15, iPad, Samsung Galaxy, Apple Watch
  • Dual Converters, Infinite Potential:Includes 2× USB C male to USB A female adapters and 2× USB A male to USB C female adapters. Perfect for a wide range of uses—tablets with Bluetooth keyboards, expand USB ports on macbook, and more. Two different converters for all your daily needs
  • Next-Level 10Gbps & 3A Charging: No more slow 480Mbps, this usb to usb c adapter has a transfer speed of up to 10Gbps, allowing you to do more transferring in less time. This usb adapter fits both USB A and USB C charger, supporting up to 3A fast charging
  • Upgraded Exquisite Craftsmanship: With an aluminum alloy housing and metal connector, the usbc to usb adapter is extremely durable and sturdy. Rigorously tested to withstand more than 10,000 times of plugging and unplugging, ensuring long-lasting performance
  • Broad Compatible: The usb c to usb adapter widely supports all USB C/ USB A devices like laptops, tablets, cellphones, car chargers, and phone chargers. Such as compatible with MacBook Pro/Air 2023/2022, Thunderbolt 4/3 Devices,Apple MagSafe Watch 9/8/7/SE/Ultra, iPad Pro 2022/2021, Samsung Galaxy S23/S20/S10, and iPhone 17/16/15 Pro. Plug and play
  • Please Note: To reach 10Gbps speed, keep the cable under 3.3 ft. For USB A Male to USB C adapters, try flipping the USB C connector. USB C Male to USB A adapters support bidirectional 10Gbps transfer within 3.3 ft

Files and databases

Where your environment permits it, compare the modification time or row timestamp of a known operational artifact with the expected processing interval. Protect credentials and avoid embedding database passwords in the script. A stale artifact can indicate a pipeline problem, but it does not identify which component is responsible without additional evidence.

How do I schedule and alert on the results?

Run the collector at a cadence shorter than the shortest freshness threshold you care about. For example, a one-hour schedule gives operators several chances to observe a warning before a 26-hour policy or heartbeat limit is exceeded.

  1. Save the script in a restricted directory and test it interactively under the intended account.
  2. Create a Task Scheduler task with “Run whether user is logged on or not,” the required PowerShell executable, and explicit parameters for site code and provider.
  3. Use Windows PowerShell 5.1 for cmdlets that are not supported in PowerShell 7; maintain separate tested tasks if both engines are needed.
  4. Write JSON or CSV to a location your collector can read, or emit one Windows event per run. Include the script exit code: connection failure, check failure, and successful collection should be distinguishable.
  5. Forward only state changes or repeated failures to paging channels. Keep the full result for troubleshooting and trend analysis.

Do not store passwords in command-line arguments or plain-text files. Use the task account, a managed service identity where available, or an approved secret store.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

What failures are common, and how do I fix them?

Symptom Likely cause Response
ConfigurationManager module cannot load Console path is missing or a different module version is being imported Check $env:SMS_ADMIN_UI_PATH, list loaded modules, and record the selected version.
Site drive is missing Wrong site code, provider name, or insufficient SMS Provider rights Create the CMSite drive explicitly and validate with Get-CMSite.
Role query returns no objects Role is not installed, is in another site, or the account cannot read it Verify in the console and test the least-privilege account separately.
PowerShell 7 throws parameter or provider errors The specific cmdlet is not compatible with PowerShell 7 Run that check under Windows PowerShell 5.1 and keep the engine choice in the run metadata.
Remote service or event query times out Firewall, WinRM/RPC policy, DNS, or a genuinely unavailable host Classify it as unknown or warning until an independent signal confirms failure.
Clients appear stale after maintenance Maintenance windows, throttling, or a deliberately extended inventory interval Compare age with the configured interval and annotate planned maintenance rather than lowering thresholds blindly.

Should the script restart services or repair ConfigMgr automatically?

Not by default. Detection and remediation should be separate so an operator can review evidence before changing a site system. If you later add an action, require an explicit switch, restrict it to an allow-list of services, log the before-and-after state, and provide a cooldown to prevent restart loops.

Best Value
Sale
Anker USB C Hub, 5-in-1 USBC to HDMI Splitter with 4K Display | 85W Max PD, 1 Powered USB-C 5Gbps & 2 Powered USB-A 3.0 5Gbps Data Ports, for MacBook Pro, MacBook Air, Dell and More (Black)
  • 5-in-1 Connectivity: Equipped with a 4K HDMI port, a 5 Gbps USB-C data port, two 5 Gbps USB-A ports, and a USB C 100W PD-IN port. Note: The USB C 100W PD-IN port supports only charging and does not support data transfer devices such as headphones or speakers.
  • Powerful Pass-Through Charging: Supports up to 85W pass-through charging so you can power up your laptop while you use the hub. Note: Pass-through charging requires a charger (not included). Note: To achieve full power for iPad, we recommend using a 45W wall charger.
  • Transfer Files in Seconds: Move files to and from your laptop at speeds of up to 5 Gbps via the USB-C and USB-A data ports. Note: The USB C 5Gbps Data port does not support video output.
  • HD Display: Connect to the HDMI port to stream or mirror content to an external monitor in resolutions of up to 4K@30Hz. Note: The USB-C ports do not support video output.
  • What You Get: Anker 332 USB-C Hub (5-in-1), welcome guide, our worry-free 18-month warranty, and friendly customer service.

Microsoft’s assessment material also documents an assessment-task path and notes that the Log Analytics agent was retired on August 31, 2024, requiring migration to the Azure Monitor agent for continued ingestion. Treat that assessment workflow as a separate telemetry option, not as a reason to hide collection logic inside an unreviewed remediation script.

What is the practical verdict on no-SCOM SCCM monitoring?

A read-only PowerShell collector is a sound choice when you need transparent ConfigMgr role checks, configurable client-freshness alerts, scheduled reports, or JSON integration with an existing monitoring stack. It is not a drop-in replacement for SCOM’s management-group model. Start with site connectivity and role presence, add host and service evidence, then implement freshness checks with thresholds that match your hierarchy; only after those signals are reliable should you consider controlled remediation.

Frequently Asked Questions

Can I run the SCCM health script from a workstation instead of a site server?

Yes, provided the workstation has the Configuration Manager console and module, can reach the SMS Provider and monitored servers, and the run account has the required read permissions. Test the same account and network path that Task Scheduler will use.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

How often should an SCCM infrastructure check run?

Run it more frequently than the shortest freshness limit you monitor; an hourly schedule is a practical starting point for day-scale policy and heartbeat thresholds. Increase or decrease the cadence after observing normal processing delays and maintenance windows.

Why does a reachable management point still produce client failures?

ICMP or a successful TCP connection proves only network reachability. Client policy, authentication, component queues, content distribution, and database processing can fail while the server remains reachable, so combine role, service, event, and freshness evidence.

What should I log when a check is unknown rather than failed?

Record the timeout or permission error, target server and role, query duration, and the last successful observation. Keeping unknown states separate prevents transient collection problems from becoming false component-outage alerts.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.