<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Wmic on The Nested Lab</title>
    <link>https://thenestedlab.com/tags/wmic/</link>
    <description>Recent content in Wmic on The Nested Lab</description>
    <generator>Hugo</generator>
    <language>en-gb</language>
    <lastBuildDate>Wed, 16 Sep 2026 12:20:00 +0100</lastBuildDate>
    <atom:link href="https://thenestedlab.com/tags/wmic/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Telegraf on Windows Server 2025: unsupported, works anyway</title>
      <link>https://thenestedlab.com/posts/telegraf-windows-2025/</link>
      <pubDate>Wed, 16 Sep 2026 12:20:00 +0100</pubDate>
      <guid>https://thenestedlab.com/posts/telegraf-windows-2025/</guid>
      <description>The VCF Operations agent support matrix doesn&amp;rsquo;t list Windows Server 2025. Add one missing Windows component (WMIC) and the ordinary UI-driven install works: agent running, checks green, metrics flowing. What &amp;lsquo;unsupported&amp;rsquo; really means, the one prerequisite, and what to watch because of it.</description>
      <content:encoded><![CDATA[<p>Two facts, both true:</p>
<ol>
<li>The VCF Operations application-monitoring agent (Telegraf, packaged by
Broadcom) does not list Windows Server 2025 as a supported OS.</li>
<li>It installs from the VCF Operations UI, runs, and reports on Windows
Server 2025 — once one missing Windows component is put back.</li>
</ol>
<p>This post is about the gap between those, because &ldquo;unsupported&rdquo; is a
statement about <em>who fixes it when it breaks</em>, not about whether it works
— and there is a right way to run unsupported software in production,
which starts with knowing exactly what you&rsquo;re relying on.</p>
<h2 id="what-unsupported-means-here">What &ldquo;unsupported&rdquo; means here</h2>
<p>The matrix is a promise: Broadcom has tested this combination and will
take a support case on it. Server 2025 wasn&rsquo;t in the test set at release.
Nothing in the agent is OS-version-gated; it&rsquo;s Telegraf with Windows
inputs (<code>win_perf_counters</code>, <code>win_services</code>, <code>win_eventlog</code>) and an output
to Ops. The Windows APIs those inputs use haven&rsquo;t changed in a decade.</p>
<p>So: it works. You just own it.</p>
<h2 id="the-one-prerequisite-put-wmic-back">The one prerequisite: put WMIC back</h2>
<p>Windows Server 2025 no longer ships the WMI command-line tool, <code>wmic</code>.
It&rsquo;s been deprecated for years and is now a Feature on Demand rather
than part of the base install. The agent&rsquo;s install bootstrap still calls
it, so on a stock Server 2025 build the install from Ops does not
complete.</p>
<p>Add the capability first, then install:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-powershell" data-lang="powershell"><span class="line"><span class="cl"><span class="n">DISM</span> <span class="p">/</span><span class="n">Online</span> <span class="p">/</span><span class="nb">Add-Capability</span> <span class="p">/</span><span class="n">CapabilityName</span><span class="err">:</span><span class="n">WMIC</span><span class="p">~~~~</span>
</span></span><span class="line"><span class="cl"><span class="n">wmic</span> <span class="n">os</span> <span class="n">get</span> <span class="n">caption</span>   <span class="c"># should now answer</span>
</span></span></code></pre></div><p>(Settings → System → Optional features → Add → &ldquo;WMIC&rdquo; does the same thing
through the UI.) That is the whole workaround. Note it in whatever you use
for build standards for Server 2025 — it&rsquo;s a one-line prerequisite for the
agent, and it will keep being one until the bootstrap stops needing it.</p>
<h2 id="the-normal-install-from-the-ui">The normal install, from the UI</h2>
<p>With WMIC present the install path is exactly the supported-OS one, no
scripts, no manual <code>telegraf.conf</code>:</p>
<p><em>Operate → Workloads → Applications → Manage Telegraf Agents</em>, tick the
VM, <em>Agent Actions → Install</em>, supply guest credentials, wait. On the
<a href="/series/the-windows-build-pipeline/">pipeline-built W2025 server</a> it
registered as a <strong>Product Managed Agent</strong>, version 9.1.0.0.3033, with
<code>Last Operation Status</code> reading <code>Install Success</code>.</p>
<p><img alt="Manage Telegraf Agents: Test-2025 - Agent Running, Product Managed Agent, Install Success, version 9.1.0.0.3033, both collection ticks green, with a Ping Check receiving data under Custom Monitoring" loading="lazy" src="/images/ui/o3-ops-manage-telegraf-agents-w2025.jpg">
<em>The agent list with the Windows Server 2025 row expanded. Agent Running, product-managed, Install Success, both collection ticks green — and under Custom Monitoring a Ping Check, configured from the same screen and already receiving data, no config file touched.</em></p>
<p><img alt="The Windows OS on Windows 2025 object: one object, Normal, no alerts, with Custom Script, Ping Check and Services children and live CPU/memory properties" loading="lazy" src="/images/ui/o9-ops-w2025-windows-os-summary.jpg">
<em>The object the agent created, as Ops sees it: green, no alerts, CPU and memory properties populated. This is the picture that matters — not the install dialog.</em></p>
<p><img alt="Ping Check metrics for the W2025 agent: Availability flat at 100 and Average Response Time in a steady band across a three-hour window" loading="lazy" src="/images/ui/o10-ops-w2025-ping-check-availability.jpg">
<em>And the proof it&rsquo;s doing work rather than just existing: a Ping Check run from the Server 2025 guest, availability flat at 100 across the morning, response time steady at a couple of milliseconds.</em></p>
<p><img alt="The VM object in Ops: Microsoft Windows Server 2025 (64-bit), tools running" loading="lazy" src="/images/ui/o2-ops-w2025-vm-summary.jpg"></p>
<p><img alt="Windows OS on Windows 2025: AgentManagedType = Product Managed, Tags|source = Windows_2025" loading="lazy" src="/images/ui/o1-ops-w2025-agent-metrics.jpg">
<em>The &ldquo;Windows OS on Windows 2025&rdquo; child object, with <code>Telegraf Availability</code> in the metric tree and <code>AgentManagedType</code> reading Product Managed.</em></p>
<h2 id="then-make-it-yours">Then make it yours</h2>
<p>Two small things turn &ldquo;it happens to work&rdquo; into something you can run:</p>
<p><strong>Record exactly what you&rsquo;re running.</strong> Agent build, Telegraf version, OS
build, and the WMIC prerequisite — in whatever you use for a CMDB. When the
support matrix catches up you want to know whether you&rsquo;re on the version
they tested.</p>
<p><strong>Give it a check that will go flat first.</strong> The Ping Check above is
configured from the agent row in Ops (<em>Custom Monitoring</em>); HTTP, TCP and
UDP checks live there too, and a <em>Custom Script</em> entry on the same screen
can run anything on the box.
Point one at something trivially OS-dependent and alert on its <em>absence</em>:
if a Windows update changes an API under the agent, that line stops before
anything else does.</p>
<h2 id="what-to-watch-because-its-unsupported">What to watch, <em>because</em> it&rsquo;s unsupported</h2>
<ul>
<li><strong>Agent upgrades from Ops.</strong> The upgrade path is tested on supported OSes.
Take a snapshot before pushing an agent upgrade to the W2025 fleet;
upgrade one first.</li>
<li><strong>Windows cumulative updates.</strong> Performance counter names are stable;
provider GUIDs occasionally aren&rsquo;t. Watch your canary check after Patch
Tuesday.</li>
<li><strong>WMIC on new builds.</strong> Any image or pipeline that produces Server 2025
needs the capability added, or the next install will fail the way the
first one did.</li>
<li><strong>Service account and WinRM hardening.</strong> W2025 tightens defaults; if the
install bootstrap fails and WMIC is present, it&rsquo;s almost always WinRM/TLS,
not the agent.</li>
<li><strong>Don&rsquo;t file cases on it.</strong> Reproduce on a supported OS first. That&rsquo;s
the deal you made.</li>
</ul>
<h2 id="why-this-matters-outside-the-lab">Why this matters outside the lab</h2>
<p>The practical lesson for customers is about <strong>how</strong> to adopt something the
vendor hasn&rsquo;t blessed yet. New operating systems arrive before support
matrices catch up, and &ldquo;wait&rdquo; is often not an option. The approach here —
find the real blocker (one missing Windows component, not the agent), use
the standard install path, record exactly what you&rsquo;re running, add a check
that detects breakage early, upgrade one node first — is how an operations
team gets Windows Server 2025 monitored on day one without taking on
hidden risk. The same discipline applies to any unsupported-but-working
combination.</p>
<h2 id="rules-learned">Rules learned</h2>
<ul>
<li>&ldquo;Unsupported&rdquo; = <em>you</em> own the fix path. Decide that consciously, record
versions, add a canary check, upgrade one node first.</li>
<li>Server 2025 ships without WMIC; the agent bootstrap needs it. Add the
capability first and the ordinary UI install works.</li>
<li>The Windows inputs aren&rsquo;t version-gated; W2025 runs the agent fine.
Alert on metric <strong>absence</strong>, not just thresholds.</li>
<li>Configure checks from the agent row in Ops; leave <code>telegraf.conf</code> alone
so upgrades from Ops stay clean.</li>
</ul>
<p><em>Previously: <a href="/posts/fluent-bit-two-ways/">fluent-bit two ways</a>. Next in
the <a href="/series/observability-on-vcf/">Observability on VCF</a> series: the
same Telegraf on VKS, and the dependency that isn&rsquo;t in its README.</em></p>
<hr>
<p><em>Lab environment; opinions my own. Support status as observed at time of
writing — check the current matrix.</em></p>
]]></content:encoded>
    </item>
  </channel>
</rss>
