<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>Device Management in Microsoft articles</title>
    <link>https://techcommunity.microsoft.com/t5/device-management-in-microsoft/bg-p/DeviceManagementMicrosoft</link>
    <description>Device Management in Microsoft articles</description>
    <pubDate>Fri, 24 Apr 2026 22:19:01 GMT</pubDate>
    <dc:creator>DeviceManagementMicrosoft</dc:creator>
    <dc:date>2026-04-24T22:19:01Z</dc:date>
    <item>
      <title>From “Push the Patch” to “Prove the Patch”: Rethinking Windows Updating with Intune</title>
      <link>https://techcommunity.microsoft.com/t5/device-management-in-microsoft/from-push-the-patch-to-prove-the-patch-rethinking-windows/ba-p/4507770</link>
      <description>&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;For years, many of us have approached patching like&amp;nbsp;we’re&amp;nbsp;running a shipping dock: build the package, label the box, push it onto endpoints, and then chase down the ones that “didn’t get the memo.” SCCM (Configuration Manager) made that model powerful—deployments, collections, maintenance windows, retries, and all the knobs we learned to love.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt; If you were like me, you built your entire understanding of software updates around this model.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Intune flips the mental model. Instead of&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;pushing&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;patches as discrete payloads, you&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;configure&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;Windows Update behavior (rings, deadlines, restart experience, feature update targets), then you use&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;compliance and reporting&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;to confirm devices are meeting expectations: patch level,&amp;nbsp;minimum&amp;nbsp;OS, and overall update health. The job becomes less “Did I deploy the thing?” and more “Are we getting the outcome?”&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt; We get requests from various customers asking us how we "push patches" in Intune vs SCCM.&amp;nbsp; The answer is... we don't.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P aria-level="2"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3 aria-level="2"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;Why &lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;the&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;&amp;nbsp;SCCM “push” model&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;made&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;&amp;nbsp;so much sense&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;335559738&amp;quot;:160,&amp;quot;335559739&amp;quot;:80}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;The classic SCCM patching story grew up in a world of on-prem networks, controlled bandwidth, and a very reasonable belief that “if I don’t deploy it, it won’t happen.” You staged content, targeted collections, controlled timing, and could often explain exactly why a given device&amp;nbsp;didn’t&amp;nbsp;patch (client health, boundary groups, scan failures, missing content, reboot pending… pick your favorite).&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P aria-level="2"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3 aria-level="2"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;What changes with Intune: policy first, compliance always&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;335559738&amp;quot;:160,&amp;quot;335559739&amp;quot;:80}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;With Intune,&amp;nbsp;you’re&amp;nbsp;mostly not shipping update bits around.&amp;nbsp;You’re&amp;nbsp;shaping how Windows Update behaves: when quality updates install, how long users can defer, when deadlines kick in, what the restart experience looks like, and which feature version a device should land on. Then you&amp;nbsp;validate&amp;nbsp;reality with reporting and compliance signals.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;SCCM mindset:&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;Create deployment → target devices → monitor deployment success.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134233117&amp;quot;:true,&amp;quot;134233118&amp;quot;:true}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Intune mindset:&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;Define update expectations → let Windows Update do the work → monitor compliance and remediate exceptions.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134233117&amp;quot;:true,&amp;quot;134233118&amp;quot;:true}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P aria-level="2"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3 aria-level="2"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;The uncomfortable part: &lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;you’re&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;&amp;nbsp;giving up&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;some&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;&amp;nbsp;control to gain better control&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;335559738&amp;quot;:160,&amp;quot;335559739&amp;quot;:80}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;This is usually where the room gets spicy: “But I need to&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;push&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;patches.” Translation: “I need to be able to prove we’re safe, and I don’t trust a model I can’t micromanage.” Fair!&amp;nbsp;But in a modern, internet-first fleet—remote users, always-on VPN (maybe), devices that come and go…,&amp;nbsp;trying to keep the old push mechanics can&amp;nbsp;actually reduce&amp;nbsp;your real control.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Intune’s superpower is that it encourages you to define&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;measurable outcomes&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;: “Devices must be on minimum OS version X,” “quality updates must be installed within Y days,” and “devices outside tolerance are noncompliant.” You stop arguing about whether the deployment ran and start managing an&amp;nbsp;update&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;SLA&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3 aria-level="2"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;A practical way to start (without breaking your brain)&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;335559738&amp;quot;:160,&amp;quot;335559739&amp;quot;:80}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/H3&gt;
&lt;OL&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Define your&amp;nbsp;update&amp;nbsp;posture.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;What’s&amp;nbsp;your target time-to-patch for quality updates (e.g., 7/14/30 days)? What feature version do you support? Write it down like a promise.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134233117&amp;quot;:true,&amp;quot;134233118&amp;quot;:true}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;OL&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Configure Windows update behavior&amp;nbsp;in&amp;nbsp;Intune.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;Use update rings to set deferrals, deadlines, active hours, and restart options. Add feature update policies to target a specific Windows version. Use expedited quality updates when you truly need “now.”&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134233117&amp;quot;:true,&amp;quot;134233118&amp;quot;:true}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;OL&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Express minimums in compliance policy.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;Set requirements like&amp;nbsp;minimum&amp;nbsp;OS version (and other guardrails you already care about).&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134233117&amp;quot;:true,&amp;quot;134233118&amp;quot;:true}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;OL&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="4" data-aria-level="1"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Use Conditional Access (where&amp;nbsp;appropriate)&amp;nbsp;to make noncompliance&amp;nbsp;matter.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;Not as punishment—more like a seatbelt.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134233117&amp;quot;:true,&amp;quot;134233118&amp;quot;:true}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;OL&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="5" data-aria-level="1"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Watch the exceptions, not the whole herd.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;Use reporting to find patterns: stuck devices, reboot avoidance, update scan issues, or users who live in “Remind me tomorrow.”&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134233117&amp;quot;:true,&amp;quot;134233118&amp;quot;:true}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;OL&gt;
&lt;LI aria-setsize="-1" data-leveltext="%1." data-font="" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="6" data-aria-level="1"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Remediate deliberately.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;Fix root causes (health, disk space, servicing stack issues), and reserve heavy-handed actions for the few devices that earn them.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134233117&amp;quot;:true,&amp;quot;134233118&amp;quot;:true}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P aria-level="2"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3 aria-level="2"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;A question &lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;worth&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;&amp;nbsp;asking&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;335559738&amp;quot;:160,&amp;quot;335559739&amp;quot;:80}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;If your patching success still depends on the sentence “the deployment ran,” it might be time to upgrade the belief system, not just the tooling. In the Intune model, success&amp;nbsp;is:&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;devices are updated&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;versions are within tolerance&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;, and&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;noncompliance is visible and actionable&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;So&amp;nbsp;here’s&amp;nbsp;the challenge: what would your patching program look like if you treated Windows updates less like a package you ship and more like a standard you enforce? You might find you&amp;nbsp;didn’t&amp;nbsp;lose control at all—you just moved it to where it belongs: policy, visibility, and outcomes.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 01 Apr 2026 15:34:15 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/device-management-in-microsoft/from-push-the-patch-to-prove-the-patch-rethinking-windows/ba-p/4507770</guid>
      <dc:creator>MikeGriz</dc:creator>
      <dc:date>2026-04-01T15:34:15Z</dc:date>
    </item>
    <item>
      <title>Device Inventory in the Microsoft Environment</title>
      <link>https://techcommunity.microsoft.com/t5/device-management-in-microsoft/device-inventory-in-the-microsoft-environment/ba-p/4386545</link>
      <description>&lt;P&gt;The introduction of enhanced Device Inventory in Intune has been eagerly awaited by several teams within our organization. The inventory data, along with CMPivot-like real-time and cached query functionality provided by the Intune data platform, represent significant advancements. These improvements fulfill the promises of cloud-native management and establish a foundation for future developments, such as Copilot integration, cross-platform support, and integrated device actions.&lt;/P&gt;
&lt;H2&gt;Device Inventory&lt;/H2&gt;
&lt;P&gt;The initial capabilities in this area emerged in early 2024 with Single Device Query, introducing the ability to perform real-time queries on a Windows device. This was further developed with &lt;A href="https://techcommunity.microsoft.com/blog/microsoftintuneblog/enhanced-hardware-inventory-in-intune-coming-in-december/4303744" target="_blank" rel="noopener"&gt;Device Inventory&lt;/A&gt;, which implemented inventory collection through a Properties Catalog policy applicable to multiple devices. The data collected by an agent on managed devices is made available in the Resource Explorer blade for individual devices. The &lt;A href="https://learn.microsoft.com/en-us/mem/analytics/data-platform-schema" target="_blank" rel="noopener"&gt;Data platform schema&lt;/A&gt; specifies each supported Entity and its applicability to Inventory and Device Query scenarios.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;The processing of the Properties Catalog policy on a device eventually results in a CSP firing off to install the “Microsoft Device Inventory Agent”, which appears in Add/Remove Programs and is registered as a Windows Service (InventoryService). The main install directory is %ProgramFiles\Microsoft Device Inventory Agent, which also contains a Logs folder useful for troubleshooting. The&amp;nbsp;&lt;A href="https://learn.microsoft.com/en-us/mem/intune/remote-actions/collect-diagnostics" target="_blank" rel="noopener"&gt;Intune Diagnostics&lt;/A&gt; data collection also has been updated to pick up Inventory logs. The agent leverages a SQLite DB for its operations, tracking periodic local changes and then performing a daily upload. This is independent of any device sync activity. Intune Admins can rely on the Discovered Apps report to keep track of Agent install counts. Like the Intune Management Extension and EPM agents, agent upgrades occur without any explicit Admin/end-user involvement. The Properties Catalog policy report also has per-property inventory state for each device.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;The internal Intune environment at Microsoft is typically the first at-scale tenant where major features like Device Inventory are validated. Engineering teams frequently rely on the environment for validation across individual features, scale/perf and end-user experience (hence “Customer Zero”). The initial waves of rollout in our environment for pre-release versions of the agent were gated to devices in the tens of thousands. The targeting was then switched over to “All Devices” to simulate the at-scale rollout that would be expected in most customer environments. Randomization is factored into the initial Inventory upload, so across our major expansion we did not see issues reported from end users relating to local/network perf. Oddly, we encountered a somewhat painful bug relating to a high CPU condition on agent upgrade, which was addressed quickly. Our team still sees this as a win as internal validation prevented this issue from hitting customer tenants.&lt;/P&gt;
&lt;H2&gt;Multi Device Query&lt;/H2&gt;
&lt;P&gt;&lt;A href="https://learn.microsoft.com/en-us/mem/analytics/device-query-multiple-devices" target="_blank" rel="noopener"&gt;Device Query for Multiple Devices&lt;/A&gt; relies on the inventory data uploaded by devices and introduces the capability to write custom queries to gather insights on device configuration. &amp;nbsp;The Kusto Query Language (KQL) query editor supports IntelliSense and has a parser tuned for this scenario. Docs call out the set of operators &lt;A href="https://learn.microsoft.com/en-us/mem/analytics/device-query-multiple-devices#supported-operators" target="_blank" rel="noopener"&gt;currently supported&lt;/A&gt;.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;Joins between entities follow a natural/implicit style where the join field is automatically configured to be the DeviceId with join type of innerunique. The Device entity is also linked to by default, which allows for core Device attributes to be used (example below). Please see additional info on current query and join limits&amp;nbsp;&lt;A href="https://learn.microsoft.com/en-us/mem/analytics/device-query-multiple-devices#known-limitations" target="_blank" rel="noopener"&gt;here&lt;/A&gt;.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;The returned result set supports dynamic paging to automatically refresh the UI for any large outputs. There is a ~40 min cache retention where the same query re-run within a session is expected to pull data directly from a cache. In our environment, we treat the Managed Devices -&amp;gt; Query permission as an elevated permission, so standing access is not allowed and a separate Group based PIM needs to be activated for access.&lt;/P&gt;
&lt;H2&gt;Copilot Integration (in development)&lt;/H2&gt;
&lt;P&gt;Copilot in Intune integration for Multiple Devices builds on the previously released capability for &lt;A href="https://learn.microsoft.com/en-us/mem/intune/copilot/copilot-intune-overview#query-with-copilot-in-device-query" target="_blank" rel="noopener"&gt;Single Device queries&lt;/A&gt;. Copilot simplifies query authoring via the Natural Language to KQL skill. This is an absolute timesaver for those new to KQL or the Device Query schema or those that prefer Copilot build an initial query that can be further refined. Recently, we had an issue that caused some duplicate device records to appear in Device Query. As seen with the prompt below, Copilot not only understands the exact entity properties to leverage but also creates the KQL compliant query.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;Query Output&lt;/P&gt;
&lt;img /&gt;
&lt;H2&gt;Conclusion&lt;/H2&gt;
&lt;P&gt;We hope this post helps with your own implementations of Device Inventory, Device Query and Copilot in Intune. We look forward to sharing more on our implementation as new capabilities emerge.&lt;/P&gt;</description>
      <pubDate>Thu, 27 Feb 2025 19:04:50 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/device-management-in-microsoft/device-inventory-in-the-microsoft-environment/ba-p/4386545</guid>
      <dc:creator>Bankim Patel</dc:creator>
      <dc:date>2025-02-27T19:04:50Z</dc:date>
    </item>
    <item>
      <title>How to manage FileVault personal recovery keys with Intune on previously encrypted MacOS devices</title>
      <link>https://techcommunity.microsoft.com/t5/device-management-in-microsoft/how-to-manage-filevault-personal-recovery-keys-with-intune-on/ba-p/4130086</link>
      <description>&lt;P&gt;With the rapidly evolving digital landscape, organizations are increasingly turning to Microsoft Intune as their preferred MDM (Mobile Device Management) provider and working on migrating devices from existing MDM solutions to Microsoft Intune.&lt;/P&gt;
&lt;P&gt;Migrating device management from one MDM Provider to Microsoft Intune requires several configurations - more details can be found in this &lt;A href="https://learn.microsoft.com/en-us/mem/intune/fundamentals/deployment-guide-intune-setup#currently-use-a-third-party-mdm-provider" target="_blank" rel="noopener"&gt;article&lt;/A&gt;. In this blog, we are going to take a closer look at MacOS device migration from JAMF to Intune, with focus on &lt;A href="https://support.apple.com/guide/deployment/intro-to-filevault-dep82064ec40/web" target="_blank" rel="noopener"&gt;FileVault&lt;/A&gt; key escrow feature.&lt;/P&gt;
&lt;P&gt;Migrating MacOS devices from JAMF to Intune involves several steps to ensure smooth transition of the device to Intune and minimizing the impact of productivity. During this process, one of the biggest challenges is getting FileVault recovery keys escrowed back to Intune. We will be focusing on steps which we took to escrow the personal FileVault recovery key to Intune. The specifics of your migration may vary depending on your organization's requirements and the complexity of your existing setup. It is recommended to thoroughly plan and test each step to minimize disruption during the migration process.&lt;BR /&gt;&lt;BR /&gt;There are two main scenarios in which the FileVault key storage process can be categorized:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Device was not FileVault enabled before Intune enrollment (FileVault enabled via Intune policy after enrollment)
&lt;OL&gt;
&lt;LI&gt;Devices marked as “Personal”: Recovery key can only be seen by the user via the Company Portal Website&lt;/LI&gt;
&lt;LI&gt;Devices marked as “Corporate”: Recovery key can be seen by IT (information technology) administrators in addition to owner of the device&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;Device was FileVault enabled before Intune enrollment:
&lt;OL&gt;
&lt;LI&gt;In this case, the FileVault recovery key is not managed, and Intune is unable to escrow. It is most likely that the recovery key was stored in iCloud.&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;From this point on, we will be focusing on the 2nd scenario.&lt;/P&gt;
&lt;P&gt;The following error message will be shown for the FileVault setting in Intune policy reporting, if FileVault was enabled before Intune enrollment. Intune requires FileVault ownership to apply the “Enable FileVault” setting successfully:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;There are multiple ways in which FileVault management can be assumed by Intune. In our implementation, we chose options 2 and 3 from below because they do not require decryption and re-encryption of the drives. Re-encryption adds additional complexity as it will expose user data during this process and consume more time to complete migration. Also, regardless of the option, the steps outlined must be executed by the user who initially enabled FileVault:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;From MacOS GUI (graphical user interfaces): From GUI, there is no option to just refresh the recovery key, so it is required to decrypt the device and re-encrypt the device.
&lt;OL&gt;
&lt;LI&gt;On the device, choose Apple menu&amp;nbsp;&amp;gt;&amp;nbsp;System Settings, click Privacy &amp;amp; Security in the sidebar, then click FileVault on the right. (You may need to scroll down.)&lt;/LI&gt;
&lt;LI&gt;Turn off FileVault and turn it back on&lt;/LI&gt;
&lt;LI&gt;Device sync&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;Terminal commands to refresh the recovery key
&lt;OL&gt;
&lt;LI&gt;Users need to launch the Terminal app on the device.&lt;/LI&gt;
&lt;LI&gt;Run “&lt;STRONG&gt;sudo fdesetup changerecovery -personal&lt;/STRONG&gt;”&lt;/LI&gt;
&lt;LI&gt;You will be prompted to enter device admin credentials.&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;LI&gt;IT Admin generated script/app: Sample scripts can be found at below locations, and these scripts can be customized and deployed as an app.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&amp;nbsp;&lt;A href="https://github.com/jamf/FileVault2_Scripts/blob/master/reissueKey.sh" target="_blank" rel="noopener"&gt;https://github.com/jamf/FileVault2_Scripts/blob/master/reissueKey.sh&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;or&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;A href="https://github.com/microsoft/shell-intune-samples/blob/master/macOS/Config/FileVault/migrateFileVault.zsh" target="_blank" rel="noopener"&gt;shell-intune-samples/macOS/Config/FileVault/migrateFileVault.zsh at master · microsoft/shell-intune-samples · GitHub&lt;/A&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Deploy FileVault key refresh script as Application from JAMF&lt;/LI&gt;
&lt;LI&gt;Unenroll the device from JAMF&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;Enroll device to Intune&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;Deploy FileVault policy from Intune &amp;nbsp;&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;Run the key refresh script (which deployed previously) from application applet&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Once the user executes the application, the device generates a new personal recovery key, Intune assumes management of FileVault encryption on next Intune check-in, and users can see the recovery key in the Company Portal website.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Hopefully, this helps you understand the various methods to escrow FileVault recovery key to Intune.&lt;/P&gt;</description>
      <pubDate>Fri, 03 May 2024 06:08:51 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/device-management-in-microsoft/how-to-manage-filevault-personal-recovery-keys-with-intune-on/ba-p/4130086</guid>
      <dc:creator>naveenak</dc:creator>
      <dc:date>2024-05-03T06:08:51Z</dc:date>
    </item>
    <item>
      <title>Accurate Usage of Device Filters in Intune Policy Assignments</title>
      <link>https://techcommunity.microsoft.com/t5/device-management-in-microsoft/accurate-usage-of-device-filters-in-intune-policy-assignments/ba-p/3972535</link>
      <description>&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Since the Microsoft endpoint management team introduced device filters to the Intune management console, administrators have increasingly embraced them for policy and application deployment assignments. Device filters have significantly enhanced deployment performance and reduced latency in assignments workload. Their impact is most pronounced in large Intune environments, such as those with over thousands of devices. Besides their excellent performance, administrators appreciate their ease of use.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:300,&amp;quot;335559739&amp;quot;:300,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;However, while device filters offer numerous advantages compared to traditional Azure AD device groups and user groups, their usage requires careful consideration.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:300,&amp;quot;335559739&amp;quot;:300,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Device filters are created based on device properties like device name, device model, device manufacturer, and device category. In theory, device filters should be evaluated at enrollment and when the device checks in with the Intune service. However, the timing of enrollment evaluation and device check-in can be somewhat tricky in real-time device management environments.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:300,&amp;quot;335559739&amp;quot;:300,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Scenario one:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335551550&amp;quot;:7,&amp;quot;335551620&amp;quot;:7,&amp;quot;335559738&amp;quot;:300,&amp;quot;335559739&amp;quot;:300,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;A policy is applied to the Intune "All devices" virtual group with a device filter set to "exclude" as below picture. At the moment of enrollment evaluation, if the properties in the device filter rule are not set on the device, a newly enrolled device might be evaluated as having null values for those properties, and the policy is applied successfully. However, during the next device check-in (possibly just seconds later), the device's filter properties have been updated, returning the expected evaluation results. If the policy applied is tattooed (“&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;tattooed” means that the policy is permanently applied to the registry and do not revert back to their original state even when the policy is removed or set to “not defined”)&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt; or persistent, it won't be automatically removed. This can lead to significant device management issues, which can also occur during application deployments.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335551550&amp;quot;:7,&amp;quot;335551620&amp;quot;:7,&amp;quot;335559738&amp;quot;:300,&amp;quot;335559739&amp;quot;:300,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:300,&amp;quot;335559739&amp;quot;:300,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;A common example of this device filter usage issue relates to Microsoft Teams Rooms Windows devices (MTRW). Many customers enroll their MTRW devices in Azure AD, which are then managed by Intune. One of the prerequisites for using MTRW devices is that autologon should be enabled, meaning that no device lock policies, like password policies, should be applied to these devices. Administrators often use a device filter with device models or device names set to "exclude" in password policies. However, after the MTRW device is enrolled, the password policy is still applied during the enrollment moment because the device properties in the filter rule are not available. This triggers the application of Exchange ActiveSync (EAS) settings to the device. At the next device check-in, the device is successfully evaluated with the filter and excluded from the password policy. However, the EAS settings are tattooed, permanently disrupting the MTRW autologon functionality.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:300,&amp;quot;335559739&amp;quot;:300,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;To address this issue, consider the following solution: When using a device filter to exclude devices in policies or application deployments, include an additional line in the regular device property rule as "device.property -eq $null." This addition effectively prevents the issue mentioned above. When a new device is enrolled without device properties available for evaluation, "$null" is presented for evaluation, and the device is excluded as expected. For example, here's a filter example you can use for excluding MTRW devices from password policy:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:300,&amp;quot;335559739&amp;quot;:300,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;((device.deviceName -startsWith "cf-") and (device.deviceName -contains "-MTR")) or (device.model -eq "10V50000US") or (device.model -eq $null).&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;When it comes to using device filters as "include," be cautious when assigning policies or applications to device groups or Intune virtual group "all devices." These groups experience workloads high-performance during device enrollment. If tattooed settings or applications are applied to devices before the device filter is evaluated, administrators may face challenges in troubleshooting which devices unexpectedly received these settings. In most cases, user group assignments with &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;￼&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;device filter as "include" provide a more accurate targeting result than device groups with device filters. If the policy is applied to user group with device filter, during the enrollment moment, the enrollment will need to evaluate user membership with user login information first before device filter is evaluated, so the devices get enough time to present their properties for filter evaluation. However, there can still be timing challenges between user login and device property evaluation.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:300,&amp;quot;335559739&amp;quot;:300,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Scenario two:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:300,&amp;quot;335559739&amp;quot;:300,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;where using device filters as "include" is not recommended is when combining "all devices" assignments with device filters as "include" and Azure AD devices groups as "exclude" as below screenshot. Azure AD device groups have membership evaluation latency, and deploying tattooed settings in this combination may lead to devices in the excluded group receiving the settings before Azure AD membership is evaluated.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:300,&amp;quot;335559739&amp;quot;:300,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;For example, suppose an admin needs to disable USB debugging settings for most Android Teams devices, but allow some exceptions for special purposes. The admin may use the following steps to achieve this:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:300,&amp;quot;335559739&amp;quot;:300,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="3" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559684&amp;quot;:-2,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="none"&gt;Set the assignment to “all devices”.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="3" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559684&amp;quot;:-2,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="none"&gt;Set the Android Teams device filter to “include”.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="3" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559684&amp;quot;:-2,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="none"&gt;Create an Azure AD device group with the devices that need USB debugging enabled and add it to the device filter as “exclude”.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="3" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559684&amp;quot;:-2,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="4" data-aria-level="1"&gt;&lt;SPAN data-contrast="none"&gt;Apply the policy.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;The devices in the exclude group will also have their USB debugging settings disabled if the admin follows these steps. This is because there is a delay in the device group evaluation, and the “all devices” group and the device filter take precedence over it. The setting in those devices is irreversible and cannot be recovered by a full synchronization later. Therefore, the admin should be very careful when applying this policy and avoid affecting the devices in the exclude group.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;In summary, when creating and managing assignments in Intune, it's crucial to consider which assignments are suitable for different scenarios:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:300,&amp;quot;335559739&amp;quot;:300,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI data-leveltext="%1." data-font="" data-listid="1" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559684&amp;quot;:-1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Use device group assignments with a device filter as "exclude" and include &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;device.property -eq $null&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt; to prevent unexpected devices from receiving settings or applications.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI data-leveltext="%1." data-font="" data-listid="1" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559684&amp;quot;:-1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Avoid using the combination of "all devices" assignments and device filters as "include" with Azure AD devices groups as "exclude" for tattooed settings or applications deployment.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI data-leveltext="%1." data-font="" data-listid="1" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559684&amp;quot;:-1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Exercise caution when using user or device groups with device filters as "include" for tattooed settings and applications assignments.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:0,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI data-leveltext="%1." data-font="" data-listid="1" data-list-defn-props="{&amp;quot;335552541&amp;quot;:0,&amp;quot;335559684&amp;quot;:-1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769242&amp;quot;:[65533,0],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;%1.&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="4" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;For tattooed settings and applications, consider using user groups or device groups for assignments.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:100,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:100,&amp;quot;335559740&amp;quot;:240}"&gt;Many thanks to Jerry AboueInasr, you did a great job in providing test scenarios and validating the new solutions for device filters. I learned a lot from your insights and suggestions. Thank you for your valuable contribution!&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 06 Nov 2023 22:45:40 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/device-management-in-microsoft/accurate-usage-of-device-filters-in-intune-policy-assignments/ba-p/3972535</guid>
      <dc:creator>ClaudiaZH2021</dc:creator>
      <dc:date>2023-11-06T22:45:40Z</dc:date>
    </item>
    <item>
      <title>Troubleshoot Cloud PC connection issue</title>
      <link>https://techcommunity.microsoft.com/t5/device-management-in-microsoft/troubleshoot-cloud-pc-connection-issue/ba-p/3788775</link>
      <description>&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Cloud PC users may encounter connection failure when they restarted the Cloud PC after Windows update or suddenly lose connection without obvious reason. These blog troubleshooting steps are not for a special reason of connection failure. It is a general troubleshooting method for users themselves and Cloud PC admins to bring the Cloud PC back online.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;If users restarted Cloud PC because of Windows feature update, it is reasonable to wait around 30 minutes to get a connection because Cloud PC backend infrastructure needs more time to resume all services for supporting Cloud PC than a regular physical devices restart.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;End User troubleshooting&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;If a user gets a connection failure, the user can follow below steps to mitigate the issue and bring the Cloud PC back to online:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Go to web portal of Cloud PC connection &lt;/SPAN&gt;&lt;A href="https://windows365.microsoft.com/" target="_blank"&gt;&lt;SPAN data-contrast="none"&gt;Windows 365 (microsoft.com)&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;, then click the 3 dots in the right side of Cloud PC tab, click “Troubleshoot”, in the next popup window, check “Yes, I want to troubleshoot this Cloud PC”, click “Start”. The Cloud PC will show “Troubleshooting connection” as below third screenshot. This troubleshooting will remove the Cloud PC session host from current host pool, re-install RDagent and RDbootloader in session host and add the session host back the host pool. Consequently&lt;/SPAN&gt; &lt;SPAN data-contrast="auto"&gt;, it&amp;nbsp; will fix RD client Cloud PC connection issue, unavailable resource issue, normally it can fix sixty percent connection issues and bring the Cloud PC online. If this way fixes the connection issue, the below forth screenshot will show “No issues detected”.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Intune or Cloud PC Administrators troubleshooting&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;On Intune console, Administrators have more options to troubleshoot and monitor the Cloud PC connection issues.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Administrators need to log in to Intune management console, go to Windows devices, find the Cloud PC name,&amp;nbsp; click it to open device properties, go to “Performance”, then click “Connectivity history\Unavailable\Troubleshoot this connection”. If the “Troubleshoot” fixes the issue, the “Activity” in below second screenshot should be all “Success”.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;If &lt;/SPAN&gt;&lt;SPAN&gt;the above&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt; troubleshooting doesn’t fix the connection issue, Administrators can do “restore” from Device\Overview. Administrators can select any good time point to restore the Cloud PC back to its good connection status. After the “Restore” is finished, Intune Console will show “Complete” under “Device action status”. Administrators also can check “Connectivity history” to monitor restarted Cloud PC status to make sure it is restored to the healthy status.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Place failed Cloud PC under review&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;If end users and administrators cannot fix the above connection issue, administrators can place the Cloud PC under review and escalate this issue to Microsoft Global Helpdesk. Administrators should open the Cloud PC “overview” from Intune console, click “Place Cloud PC under review”:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;In the window below, input Azure Subscription and choose Azure Storage account, then click “Place under review”. Administrators should have full access permission &lt;/SPAN&gt;&lt;SPAN&gt;for&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt; this Azure subscription. During this procedure, the Cloud PC VHD will be uploaded to Azure storage account for Windows 365 engineer team to review and root cause the issue.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Cloud PC connection issues can be caused by many factors. But with services improvement of cloud PC, this kind of connection issues will be more specifically addressed and fixed by backend infrastructure. The cloud PC service will be more stable. More and more tools will be developed to support Cloud PC.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 10 Apr 2023 16:00:00 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/device-management-in-microsoft/troubleshoot-cloud-pc-connection-issue/ba-p/3788775</guid>
      <dc:creator>ClaudiaZH2021</dc:creator>
      <dc:date>2023-04-10T16:00:00Z</dc:date>
    </item>
    <item>
      <title>Provision Azure AD Joined Windows 365 for users with special scenarios</title>
      <link>https://techcommunity.microsoft.com/t5/device-management-in-microsoft/provision-azure-ad-joined-windows-365-for-users-with-special/ba-p/3781617</link>
      <description>&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Windows 365 provisioning is the automated process in the base of provisioning policies created in Endpoint Manager admin center Windows 365 blade. After users are assigned the Windows 365 licenses and provisioning policies are created and targeted to Azure AD user security groups or Microsoft 365 groups, the devices provisioning process will kick off automatically and the devices will be automatically assigned to the users in policy assignments group.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Provisioning policies can be created in the base of different Azure regions, different images, or other different customer requirements. But one user cannot be put in assignments groups of different provisioning policy because the Windows 365 service always uses the first assigned policy to provision the devices for that user.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Scenario 1, Provision Windows 365 in the base of azure region&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;If a customer has users in different physical branches like in Asia, Europe, US etc. The customer can provision Windows 365 for their users in the base of their physical locations for network connection benefits.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Sign into the Microsoft Endpoint Manager admin center, select Devices &amp;gt; Windows 365 &amp;gt; Provisioning policies &amp;gt; Create policy, below is an example of creating a provisioning policy and targeting it to West Europe users. All the users in the assignments group will get their devices from West Europe.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Users can confirm their Windows 365 location. Open &lt;/SPAN&gt;&lt;A href="https://windows365.microsoft.com/" target="_blank"&gt;&lt;SPAN data-contrast="none"&gt;https://windows365.microsoft.com&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;, log in with Azure AD account, users will see the provisioned Windows 365 under their name. Click settings\System information, the&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Scenario 2, Provision multiple Windows 365 with different settings for one user&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Technically there is no blocker to target multiple provisioning policies to one user. However, only the earliest created policy will be working to provision Windows 365 for the same user. If the user requires multiple versions of Windows 365 devices with different Azure regions or OS images, we can update the same provisioning policy to provision more than one&amp;nbsp;Windows 365 devices with different regions or OS versions for the same user. Below are the two circumstances:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559684&amp;quot;:-2,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;If the user has 2 Windows 365 devices with same OS and regions provisioned already, but the user needs one of the existing Windows 365 devices to be reprovisioned to a new OS image or a new Azure region, Windows 365 Admin can update the provisioning policy to use new OS image or new Azure region at first, then reprovision one of the existing Windows 365 to the new version. After the reprovisioning is finished, admin needs to change the provisioning policy back to its original region or OS image selection in order not to impact other users in the same assignments group reprovisioning. For example, A user has 2 4V16G Windows 365 devices with windows 10 in West US region already, if he\she wants to change one of the 4V16G windows 10 to Windows 11, or change to Europe region, we can use above way to reprovision one of the existing Windows 10 to Windows 11.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559684&amp;quot;:-2,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;If the user has existing Windows 365 devices already, he wants to add one more device with different region or OS image from his existing devices. Windows 365 admin can update the provisioning policy to use new OS image or Azure region at first, then assign the user with new Windows 365 license, the new Windows 365 device will be provisioned with the new OS or Azure region immediately. For example, A user has existing 4V16G Windows 10, then he\she wants to add a new Windows 11, Admin can modify the current provisioning policy to point to Windows 11 and the correct region, then go to AAD assign the new license to the user. The new Windows 365 with Windows 11 will be provisioned for this user right away.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Scenario 3, Replace provisioning policy assignments group without deprovisioning existing devices&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;When we remove the assignments group from the provisioning policy or remove the members from the assignments group, the users’ Windows 365 devices will be deprovisioned immediately.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;If we accidently attached wrong assignments group to the provisioning policy, and all the devices have been provisioned already and the users actively used them daily, but this assignments group is being used by other purpose and we need to remove it from provisioning policy. Under such circumstances, we can use the steps below to avoid deprovisioning existing devices, subsequently avoid impacting users.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559684&amp;quot;:-2,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Create a new Azure AD group, add all provisioned devices’ users into this group. Open the provisioning policy and edit the “Assignments”, then add this group to the provisioning policy assignments and save the policy change.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559684&amp;quot;:-2,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Reopen the provisioning policy, click “Edit” the “Assignments” again, then remove the original group which is also for other purpose and only leave the new group there.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;</description>
      <pubDate>Tue, 28 Mar 2023 22:53:17 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/device-management-in-microsoft/provision-azure-ad-joined-windows-365-for-users-with-special/ba-p/3781617</guid>
      <dc:creator>ClaudiaZH2021</dc:creator>
      <dc:date>2023-03-28T22:53:17Z</dc:date>
    </item>
    <item>
      <title>Using Intune device cleanup rules (Updated version)</title>
      <link>https://techcommunity.microsoft.com/t5/device-management-in-microsoft/using-intune-device-cleanup-rules-updated-version/ba-p/3760854</link>
      <description>&lt;P&gt;As the &lt;STRONG&gt;Intune &lt;/STRONG&gt;Service Administrator at Microsoft, we often have to clean up a lot of inactive and stale device records to keep our environment clean. Such records are generated due to test devices enrolled in the environment, workforce changes, users purchasing new devices etc. and can easily skew up the device compliance reporting. The &lt;STRONG&gt;Intune&lt;/STRONG&gt; feature “Device clean-up rules”, provides the ability to configure the automatic cleanup rule for the devices that are inactive, orphaned and have not checked in recently. The rule allows administrators to choose between 30 and 270 days to remove the inactive device records from &lt;STRONG&gt;Intune&lt;/STRONG&gt; automatically.&amp;nbsp; We had a popular blog post on this from years ago that has grown outdated, so this is an updated version.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;For configuring the rule in the environment, navigate to the &lt;STRONG&gt;Devices&lt;/STRONG&gt; blade in &lt;STRONG&gt;Microsoft Endpoint Manager admin center&lt;/STRONG&gt; and click on &lt;STRONG&gt;Device clean-up rules&lt;/STRONG&gt;. Administrator will be able to enable the cleanup rule to delete the devices that have not checked in for {X} days (30-270). At Microsoft, we have configured it as 90 days to keep device count as realistic as possible for such a large environment.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;What happens behind the scenes for Device Clean-up rules?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;After the Intune Service Administrator enables the rule, Intune services run a background job every few hours to remove all applicable devices from the Intune portal and they will not show up in any Intune blade or device list anymore. The device removal is only applicable to Intune portal and devices do not get removed from Azure AD. Azure AD tenant administrator has &amp;nbsp;to perform the device cleanup task in Azure AD portal to remove the stale record permanently.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;What device types get affected from this device clean-up?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Device cleanup rules are applicable for Android, IOS, Windows, MacOS and Linux. The devices that were unable (user abandonment, etc.) to complete the enrollment process are also cleaned up as well.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Does this device clean-up rule perform device wipe or retire?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;No, this automatic rule only removes the devices from the Intune portal which are orphaned devices. It means these devices are no longer checking in with the service for the last x days chosen by the administrator before getting removed from the Intune portal.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Is it possible to have devices removed by &amp;nbsp;the device clean-up rule to come back in some scenarios?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Yes, it is possible that some devices can come back in the Intune portal as there is a service criterion to auto-recover the cleaned-up devices if they successfully check-in to the Intune service subsequently. The purpose of this behavior is to recover devices owned by the employees that took a long leave (e.g.,&amp;nbsp;Extended vacation, sabbatical, maternity leaves) and the devices were not communicating with the service during their absence. The threshold for devices to show up in the Intune portal is 180 days provided the Intune device certificate is not expired. Please note that Intune service only does the soft delete of inactive device records and the records are still preserved at the backend for certain period to enable such auto recovery.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;General reference link: &lt;A href="https://learn.microsoft.com/en-us/mem/intune/remote-actions/devices-wipe#automatically-delete-devices-with-cleanup-rules" target="_blank" rel="noopener"&gt;https://learn.microsoft.com/en-us/mem/intune/remote-actions/devices-wipe#automatically-delete-devices-with-cleanup-rules&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Posted on behalf of the author, Satish Petwe&lt;/P&gt;</description>
      <pubDate>Tue, 07 Mar 2023 16:40:28 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/device-management-in-microsoft/using-intune-device-cleanup-rules-updated-version/ba-p/3760854</guid>
      <dc:creator>MikeGriz</dc:creator>
      <dc:date>2023-03-07T16:40:28Z</dc:date>
    </item>
    <item>
      <title>New automation script examples on our GitHub repo</title>
      <link>https://techcommunity.microsoft.com/t5/device-management-in-microsoft/new-automation-script-examples-on-our-github-repo/ba-p/3756497</link>
      <description>&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;As a follow-up to my previous &lt;/SPAN&gt;&lt;A href="https://techcommunity.microsoft.com/t5/device-management-in-microsoft/how-the-management-team-at-ms-integrates-with-engineering/bc-p/3686430/emcs_t/S2h8ZW1haWx8dG9waWNfc3Vic2NyaXB0aW9ufExCMklSOVVQQVFYQUpIfDM2ODY0MzB8U1VCU0NSSVBUSU9OU3xoSw#M123" target="_blank"&gt;&lt;SPAN data-contrast="none"&gt;blog&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;, we have now uploaded the following script examples to our open-source GitHub &lt;/SPAN&gt;&lt;A href="https://github.com/microsoft/Intune-DeviceAdmins" target="_blank"&gt;&lt;SPAN data-contrast="none"&gt;repository&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559684&amp;quot;:-2,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Collect SCCM Device Logs&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559684&amp;quot;:-2,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Intune Delete Objects&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559684&amp;quot;:-2,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Intune Device Retire&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559684&amp;quot;:-2,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="4" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Intune Device Wipe&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559684&amp;quot;:-2,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="4" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Intune Provision W32 Apps&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559684&amp;quot;:-2,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="4" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Intune Remove Assignment&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559684&amp;quot;:-2,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="4" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Intune Verify Deleted Objects&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;These example scripts were originally created for use inside of Microsoft. We have modified it to be more generic, so it can be used as a template for other Intune environments outside of Microsoft.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;For some ideas on how to create some end-to-end automation that can utilize these examples, you can refer to another previous blog I posted about &lt;/SPAN&gt;&lt;A href="https://techcommunity.microsoft.com/t5/device-management-in-microsoft/how-the-mem-microsoft-team-combines-various-technologies-to/bc-p/3241861/emcs_t/S2h8ZW1haWx8dG9waWNfc3Vic2NyaXB0aW9ufEwwOVIxMk05VjZSRVJYfDMyNDE4NjF8U1VCU0NSSVBUSU9OU3xoSw#M115" target="_blank"&gt;&lt;SPAN data-contrast="none"&gt;how we build automation on our team&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Please let us know by commenting on any of the related blog posts&amp;nbsp;if you like additional details or other examples.&amp;nbsp;Thank you! &lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 03 Mar 2023 16:16:51 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/device-management-in-microsoft/new-automation-script-examples-on-our-github-repo/ba-p/3756497</guid>
      <dc:creator>james_lieurance</dc:creator>
      <dc:date>2023-03-03T16:16:51Z</dc:date>
    </item>
    <item>
      <title>4 ways to get your client policy synchronized with the Intune service.</title>
      <link>https://techcommunity.microsoft.com/t5/device-management-in-microsoft/4-ways-to-get-your-client-policy-synchronized-with-the-intune/ba-p/3712885</link>
      <description>&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;With any client/server application there are times when things are not in sync between the server and the client, and you want to correct that.&amp;nbsp; Most of the time there are automated ways this will happen, perhaps on a schedule or a triggered event.&amp;nbsp; Inevitably there are also times when you want that resync to happen NOW and not wait until the normal automated processes kick off. There are four ways to do this for Intune devices and while they are very similar, there are differences in what you can expect from them.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;In Intune the primary method most admins will be familiar with is from the &lt;/SPAN&gt;&lt;A href="https://docs.microsoft.com/en-us/mem/intune/remote-actions/device-sync" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;Admin console&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;.&amp;nbsp; This will tell the software client to do a normal, scheduled, check-in, but more immediately. The client will check for any new policies added or removed for it and then act accordingly. Of note is that if no policy has changed no device compliance calculation and report is created, even if the data which the compliance policy checks has changed.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;The second way to initiate a sync with the Intune service is from the client itself. For a windows device this would be through settings / Accounts / Access Work or School / &amp;lt;Your Account&amp;gt; / Info and pressing the “Sync” button. This will tell the client to check in just the same as the method from the admin console above, with the same limitations on compliance calculations.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;The third option is via the company portal app. On windows you can find a “Sync” button under the gear icon.&amp;nbsp; Just as the options above, this will cause the device to contact the Intune service and check for any policy additions or removals.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Finally, there is the fourth option (my favorite), which is also in the Intune company portal app as well as the Company Portal website. You can do the sync for any owned device, not just the one you are currently working from. By selecting the device, you can find the “Check Access” button on windows, “check status” on iOS, or “check device settings” on Android. This is the “powerful button.” Clicking this will cause the device to check-in and it will also force a reevaluation of compliance policies and their rules. Therefore, any device or policy changes that may have occurred affecting compliance will be re-evaluated, and the compliance state of the device will be updated as appropriate.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Here at Microsoft, we understand different people work in diverse ways and like to give multiple options to accomplish tasks to meet those different workflows. Hopefully, this helps you understand the various methods to sync a client to get policies, and the one method to force a conditional access compliance re-evaluation.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 12 Jan 2023 20:26:34 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/device-management-in-microsoft/4-ways-to-get-your-client-policy-synchronized-with-the-intune/ba-p/3712885</guid>
      <dc:creator>MikeGriz</dc:creator>
      <dc:date>2023-01-12T20:26:34Z</dc:date>
    </item>
    <item>
      <title>How the management team at MS integrates with engineering</title>
      <link>https://techcommunity.microsoft.com/t5/device-management-in-microsoft/how-the-management-team-at-ms-integrates-with-engineering/ba-p/3685630</link>
      <description>&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Overview:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;The MEM @ Microsoft team manages the Intune and Configuration Manager environments at Microsoft. Our service/development engineers combine various components to help automate maintenance of the Intune and Configuration Manager environments (&lt;/SPAN&gt;&lt;A href="https://techcommunity.microsoft.com/t5/device-management-in-microsoft/how-the-mem-microsoft-team-combines-various-technologies-to/bc-p/3241861/emcs_t/S2h8ZW1haWx8dG9waWNfc3Vic2NyaXB0aW9ufEwwOVIxMk05VjZSRVJYfDMyNDE4NjF8U1VCU0NSSVBUSU9OU3xoSw#M115" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;more details about that here&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;). Our work covers various areas besides just maintaining these environments inside of Microsoft. We are part of the Intune engineering organization and so we work together with the product engineers to help build a better management experience for customers (including ourselves&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;). This involves validation of new features before they reach external customers, providing feedback to engineering throughout the design and initial release phases, and sometimes collaborating with the engineering team to develop new features in the Intune product. Another goal we have is to improve the customer experience by providing feedback to Intune engineering teams regarding customer frustrations and to help drive improvements into the product or provide guidance to customers regarding ways to improve your Intune admin experience.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Providing customer guidance:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;One of the ways we are working on providing additional guidance is through automation examples uploaded to our open-source GitHub &lt;/SPAN&gt;&lt;A href="https://github.com/microsoft/Intune-DeviceAdmins" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;repository&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;. We use automation to reduce maintenance costs of the Intune and Configuration Manager environments and sometimes implement temporary solutions for Intune features that may not be added to the product soon. The repository only has a couple of examples uploaded at this time (&lt;/SPAN&gt;&lt;A href="https://github.com/microsoft/Intune-DeviceAdmins/tree/master/QCAutomation" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;QC&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;, &lt;/SPAN&gt;&lt;A href="https://github.com/microsoft/Intune-DeviceAdmins/tree/master/AutoScaling" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;Autoscaling VMs&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;, &lt;/SPAN&gt;&lt;A href="https://github.com/microsoft/Intune-DeviceAdmins/tree/master/AutopilotAutomation" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;Autopilot deregistration&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="none"&gt;)&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt; but we have more automation we could potentially provide examples of, for instance:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559684&amp;quot;:-2,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Intune - Create, deploy, and deletion of policies.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559684&amp;quot;:-2,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Intune - Create, deploy, and deletion of applications.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559684&amp;quot;:-2,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Intune - Retire or wipe of devices.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559684&amp;quot;:-2,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Intune - Assignment cleanup.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559684&amp;quot;:-2,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Config Manager - Collect device logs.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559684&amp;quot;:-2,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Config Manager - Perform collection cleanup.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559684&amp;quot;:-2,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Config Manager - Perform inbox cleanup.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559684&amp;quot;:-2,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Config Manager - H&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;ealth status of the ConfigMgr hierarchy including inbox backlogs, collection evaluation, and audit logs.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559684&amp;quot;:-2,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Client health telemetry – CM client (SMS agent) installation status, setup failures, and whether service is running or not.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Feedback:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Please let us know by commenting below if there is interest in anything in the list above, or if there is some other area not listed where we could improve the Intune admin experience. Your feedback can help us prioritize what automation script examples we should build and share. As we add more to the GitHub repo, and hear more feedback from customers, we will also continue to provide that feedback to Intune engineering regarding the areas of customer interest and collaborate with them to build more capabilities into the Intune product. Thank you!&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 29 Nov 2022 16:00:00 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/device-management-in-microsoft/how-the-management-team-at-ms-integrates-with-engineering/ba-p/3685630</guid>
      <dc:creator>james_lieurance</dc:creator>
      <dc:date>2022-11-29T16:00:00Z</dc:date>
    </item>
    <item>
      <title>Experience with Apple Business Manager Implementation</title>
      <link>https://techcommunity.microsoft.com/t5/device-management-in-microsoft/experience-with-apple-business-manager-implementation/ba-p/3641276</link>
      <description>&lt;P&gt;Apple Business Manager (ABM) is a program with the combination of Automated device enrollment (ADE, formerly called DEP) and Volume purchase program (VPP). This is a web-based application which helps organizations to seamlessly onboard and manage devices starting with initial device setup.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;We recently implemented Apple Business Manager internally for managing corporate procured devices (before this implementation, these devices used to enroll as BYOD). &lt;SPAN&gt;In this blog, I will be sharing our observations and learning.&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;As most of us are curious about what benefits/challenges we will have by having this additional service, here are some of the immediate benefits we observed during the implementation.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Apple Business Manager service can be used for any Apple device procured by organizations like Mac Devices, iPhone and iPads.&lt;/LI&gt;
&lt;LI&gt;Simplifies the device lifecycle, for both IT and end users, from initial deployment to end of life.&lt;/LI&gt;
&lt;LI&gt;Devices can be managed and configured with corporate policies from the initial device setup.&lt;/LI&gt;
&lt;LI&gt;Automated enrollment increases the security of the device and decreases the time for devices to be ready for productive use.&lt;/LI&gt;
&lt;LI&gt;Users will no longer have to configure their device manually, with a few simple operations from the user it will make the device ready to use.&lt;/LI&gt;
&lt;LI&gt;IT professionals&amp;nbsp;can control the behavior of the device setup and user experience based on the organization requirements.&lt;/LI&gt;
&lt;LI&gt;You can have multiple enrollment profiles based on group/division requirements to control the user experience. &amp;nbsp;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Same as benefits, we observed some of the challenges during the implementation of ABM service.&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;If the company portal app is installed manually before Intune deployed (with required intent), then the device registration will not work, and user see the error “Couldn’t add your device”.&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;If your organization has conditional access (CA) enforced, then CA requires the device to be registered in Azure AD. When device is enrolled to Intune using the ABM approach, by default device is not getting registered. To get the device to reregister without any problem the Company portal application requires to deploy from Intune and requires user sign-in to the app (currently there will be a user experience difference between IOS and Mac devices).&lt;/LI&gt;
&lt;LI&gt;If the required company portal app (which deployed from Intune) is not the latest or no longer supported, then the users get a notification saying “Version is not supported” during the device registration action. This notification can potentially cause user confusion or delay in the device registration until it updates. This will be a challenge to IT professionals to keep the required application as latest version.&lt;/LI&gt;
&lt;LI&gt;It is possible to have multiple ABM instances tied to a single MDM instance but there are some limitations:&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;There will be a challenge in verifying the device assignments for all the devices in one location, you need to toggle between them.&lt;/LI&gt;
&lt;LI&gt;Apps and Books tokens (VPP) can’t be shared between two instances.&lt;/LI&gt;
&lt;/UL&gt;
&lt;LI&gt;There is a potential issue if users try to migrate data from old device to new device during device setup. You can avoid this by hiding the “Restore” setting in the enrollment profile.&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;If your organization allow users to do the migration, you should allow users to unenroll the device by configuring the Enrollment profile setting “Locked enrollment” settings to “No”. And ensure that users do not perform a backup whilst the device is enrolled.&lt;/LI&gt;
&lt;/UL&gt;
&lt;/UL&gt;
&lt;P&gt;Now you might be wondering about the requirements to implement Apple Business Manager&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Setting up a new Apple Business Manager Account is required to establish a process to get the device added to the service when organization procured any Apple device.&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://support.apple.com/guide/apple-business-manager/sign-up-axm402206497/web" target="_blank" rel="noopener"&gt;Sign up for Apple Business Manager - Apple Support&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;LI&gt;To control the permissions and provide access to operate the service, it requires managed Apple IDs and these can be created in ABM portal. (These accounts are not end user accounts, they are specific to ABM)&lt;/LI&gt;
&lt;LI&gt;Apple MDM push certificate (APNs) is required to manage Apple Devices, and the certificate is valid for one year. Failure to renew the certificate before expiry interrupts the device management and requires re-enrolling all Apple devices.&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/mem/intune/enrollment/apple-mdm-push-certificate-get" target="_blank" rel="noopener"&gt;https://learn.microsoft.com/en-us/mem/intune/enrollment/apple-mdm-push-certificate-get&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;LI&gt;Apple device enrollment program Token is required to establish communication between Intune and Apple Business manager service. With this token, new device details and enrollment profiles settings can sync between both the services (Once the device added to ABM, device show-up in Intune within 12 hours automatically but you can do manual sync once every 15 minutes). This certificate is valid for one year and requires renewing before expiry to avoid any synchronization issues between Intune and ABM.&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/mem/intune/enrollment/tutorial-use-device-enrollment-program-enroll-ios#get-an-apple-device-enrollment-token" target="_blank" rel="noopener"&gt;https://learn.microsoft.com/en-us/mem/intune/enrollment/tutorial-use-device-enrollment-program-enroll-ios#get-an-apple-device-enrollment-token&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;LI&gt;Configuring Volume Purchasing Program Token is required to sync the content between services and to purchase apps and manage licenses for organization and deploy them using Intune.&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/mem/intune/apps/vpp-apps-ios#migrate-from-volume-purchase-program-vpp-to-apps-and-books" target="_blank" rel="noopener"&gt;https://learn.microsoft.com/en-us/mem/intune/apps/vpp-apps-ios#migrate-from-volume-purchase-program-vpp-to-apps-and-books&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;LI&gt;Once you have completed the enrollment token configuration, now it is time to create enrollment Profiles to apply defined settings and control the behavior on the device. Based on your organization requirements you can configure multiple profiles (limit is 1000 enrollment profiles per token).&amp;nbsp;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I hope this blog has helped in understanding the implementation of Apple Business manager service and integrate with Intune.&lt;/P&gt;</description>
      <pubDate>Fri, 30 Sep 2022 20:38:26 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/device-management-in-microsoft/experience-with-apple-business-manager-implementation/ba-p/3641276</guid>
      <dc:creator>naveenak</dc:creator>
      <dc:date>2022-09-30T20:38:26Z</dc:date>
    </item>
    <item>
      <title>How the MEM @ Microsoft team combines various technologies to build automation.</title>
      <link>https://techcommunity.microsoft.com/t5/device-management-in-microsoft/how-the-mem-microsoft-team-combines-various-technologies-to/ba-p/3201097</link>
      <description>&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Overview:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;This is the high-level view of the various components and features we often combine to help automate maintenance of Microsoft’s internal Intune environment. Below I will describe the key tools we use and where we integrate them together. This document is mostly meant to be a high-level overview/starting point. If there is interest, please add a comment and we can provide deeper dives into a particular area.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Starting point: Build a scheduler and gather data&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;A common starting place for us to build automation is to set up a &lt;/SPAN&gt;&lt;A href="https://flow.microsoft.com/" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;Flow&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;. Documentation for setting one up can be found &lt;/SPAN&gt;&lt;A href="https://docs.microsoft.com/en-us/power-automate/getting-started#create-your-first-flow" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;here&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;. A flow would normally include the following items:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI data-leveltext="%1)" data-font="Calibri" data-listid="1" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Recurrence: A schedule for how often the automation should run.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;OL&gt;
&lt;LI data-leveltext="%1)" data-font="Calibri" data-listid="1" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Query: This will require a &lt;/SPAN&gt;&lt;A href="https://docs.microsoft.com/en-us/connectors/" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;connection&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt; to a data source (e.g., &lt;/SPAN&gt;&lt;A href="https://docs.microsoft.com/en-us/connectors/kusto/" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;Azure Data Explorer&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;).&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;OL&gt;
&lt;LI data-leveltext="%1)" data-font="Calibri" data-listid="1" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Condition: Based on the query results…&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;OL&gt;
&lt;LI data-leveltext="%1)" data-font="Calibri" data-listid="1" aria-setsize="-1" data-aria-posinset="4" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Trigger a job: Trigger the automation to run.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Automation: PowerShell Runbooks&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Our automation makes use of an &lt;/SPAN&gt;&lt;A href="https://docs.microsoft.com/en-us/azure/automation/automation-quickstart-create-account" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;automation account&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt; to execute &lt;/SPAN&gt;&lt;A href="https://docs.microsoft.com/en-us/azure/automation/automation-quickstart-create-runbook" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;runbooks&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;. It takes in data from Flow in the form of a &lt;/SPAN&gt;&lt;A href="https://docs.microsoft.com/en-us/azure/automation/automation-webhooks" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;webhook&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;. This automation account is the workspace used to create/manage runbooks for various automation scenarios. The runbook scripts hold the main application logic.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;To expand the capability of the automation you can add additional &lt;/SPAN&gt;&lt;A href="https://docs.microsoft.com/en-us/azure/automation/shared-resources/modules" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;modules&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt; to the automation account. By adding additional modules, you can add capability to connect to Azure AD, Graph, or other external resources.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Integrations: Other APIs&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;In certain scenarios we need to interface with partner resources. We prefer to use &lt;/SPAN&gt;&lt;A href="https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;managed identity&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt; as the mechanism for automation for access to these resources/data sets. These managed identities eliminate the need for developers to manage credentials (like you would with registered applications). These managed identities can be given specific &lt;/SPAN&gt;&lt;A href="https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/howto-assign-access-portal" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;role assignments&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt; or graph &lt;/SPAN&gt;&lt;A href="https://techcommunity.microsoft.com/t5/integrations-on-azure-blog/grant-graph-api-permission-to-managed-identity-object/ba-p/2792127" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;permissions&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt; where they can only access the resources specified.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Reporting: App Insights&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;We use the &lt;/SPAN&gt;&lt;A href="https://docs.microsoft.com/en-us/azure/azure-monitor/app/app-insights-overview" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;App Insights&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt; workspace to collect all the logging for azure runbook processing. This workspace allows you to monitor Pass/Fail results, Availability, and other metrics.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Summary:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;This covers the basics of what tools our team uses to build automation. Depending on interest, we can take a deeper walkthrough into how we build up any of the resources mentioned above. Please add a comment if you would like more information on a particular area. Based on interest, we could add some code examples to our open source GitHub &lt;/SPAN&gt;&lt;A href="https://github.com/microsoft/Intune-DeviceAdmins" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;repository&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 22 Feb 2022 21:27:37 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/device-management-in-microsoft/how-the-mem-microsoft-team-combines-various-technologies-to/ba-p/3201097</guid>
      <dc:creator>james_lieurance</dc:creator>
      <dc:date>2022-02-22T21:27:37Z</dc:date>
    </item>
    <item>
      <title>VMSS based CMGs and the Cloud heavy ConfigMgr – Part 2</title>
      <link>https://techcommunity.microsoft.com/t5/device-management-in-microsoft/vmss-based-cmgs-and-the-cloud-heavy-configmgr-part-2/ba-p/3095255</link>
      <description>&lt;P&gt;This post is a successor to our &lt;A href="https://techcommunity.microsoft.com/t5/device-management-in-microsoft/zero-trust-networking-and-the-cloud-heavy-configmgr-part-1/ba-p/3039843" target="_self"&gt;previous blog post&lt;/A&gt; describing the changes to Cloud Management Gateway (CMG) infrastructure in the internal Microsoft environment to align with Zero Trust Networking (ZTN) standards. This post covers the management and migration of Cloud Service Classic CMGs to Virtual Machine Scale Sets (VMSS), aka CMGv2.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H4&gt;&lt;EM&gt;Case for VMSS&lt;/EM&gt;&lt;/H4&gt;
&lt;P&gt;While the migration to CMG-first communications (described in the previous post) was underway, we were simultaneously piloting early releases of VMSS based CMGs. Within our team and broader organization, there was a push to migrate away from Cloud Service Classic for multiple reasons. In general, Cloud Service Classic is based on legacy Azure Service Manager and moving to a resource fully built on Azure Resource Manager (ARM) model brings parity with other Az resources. For instance, with native support for Autoscale in VMSS, we could make the case to our colleagues on the dev team for future integration with ConfigMgr. The default Cloud Service classic CMG implementation was also based on the older 2012 OS Family model. One of our team’s core goals is to “Stay Current” and hence it was a no-brainer to migrate to the latest VMSS based CMGs when the opportunity arose.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H4&gt;&lt;EM&gt;Migration to VMSS CMGs&lt;/EM&gt;&lt;/H4&gt;
&lt;P&gt;As we were already piloting VMSS CMGs, we did not perform any conversions from Classic to VMSS. We did perform conversions to larger SKUs as they started to become available. There are some in-house monitoring tools that are required by policy to be running on VM instances, so we generally spun up new VMSS CMGs, confirmed policy compliance and switched existing Proxy Connection Points to the new CMGs in a gradual manner. &lt;U&gt;Note:&lt;/U&gt; enviromental configurations (devices being offline, speed at which connectors are moved and inability of some devices to enumerate AD etc..) may cause some devices to not become aware of these changes and potentially continue to access old CMG URLs. We leveraged a Proactive Remediation script in Intune to detect drift and set the appropriate CMG values for the CMGFQDNs key under&amp;nbsp;&lt;SPAN&gt;HKLM\SOFTWARE\Microsoft\CCM.&amp;nbsp;&lt;/SPAN&gt;We used the high-level SQL queries below for tracking progress:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="sql"&gt;--Clients by CMG
SELECT SUBSTRING(bgb.AccessMP, 1, CHARINDEX('/', bgb.AccessMP, 1)-1) as 'CMG',  
COUNT(bgb.ResourceID) as 'Count', 
SUM(bgb.OnlineStatus) as 'Online'
FROM BGB_ResStatus bgb WITH (NOLOCK)
WHERE bgb.AccessMP LIKE '%ccm_proxy%'
GROUP BY SUBSTRING(bgb.AccessMP, 1, CHARINDEX('/', bgb.AccessMP, 1)-1)
ORDER BY 'Count' DESC

--Per MP Client Count
SELECT b.[DBID] AS SiteName
       ,b.ServerName AS MPName
       ,COUNT(CASE
                      WHEN PATINDEX('%CCM_Proxy%', a.AccessMP) &amp;gt; 0
                             THEN a.ResourceID
                      END) AS CMGClientCount
       ,SUM(CASE
                      WHEN PATINDEX('%CCM_Proxy%', a.AccessMP) &amp;gt; 0
                             THEN a.OnlineStatus
                      END) AS CMGOnlineClients
       ,COUNT(CASE
                      WHEN PATINDEX('%CCM_Proxy%', a.AccessMP) = 0
                             THEN a.ResourceID
                      END) AS IntranetClientCount
       ,SUM(CASE
                      WHEN PATINDEX('%CCM_Proxy%', a.AccessMP) = 0
                             THEN a.OnlineStatus
                      END) AS IntranetOnlineClients
FROM dbo.Bgb_ResStatus a WITH (NOLOCK)
INNER JOIN dbo.BGB_Server b WITH (NOLOCK)
       ON a.ServerID = b.ServerID
GROUP BY b.[DBID] ,b.ServerName
ORDER BY b.[DBID] ,b.ServerName&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H4&gt;&amp;nbsp;&lt;/H4&gt;
&lt;H4&gt;&lt;EM&gt;Monitoring&lt;/EM&gt;&lt;/H4&gt;
&lt;P&gt;When only a portion of our client traffic was using CMGs (prior to moving to CMG-first), we did not employ extensive monitoring beyond some general tracking of CMG client counts in operational reports and health monitoring via component status messages for CloudMgr. With the shift to CMG-first for all clients, our team added traffic trends and current connections to our Power BI based reporting :&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;Additionally, we needed to validate with all clients using CMGs 24x7, if there were any availability issues or excess queuing on the CMG channels. For example, CCMSetup is not a happy camper when timeouts greater than 30 sec occur during client installs. To provide high level insights into availability and response times, we resorted to a &lt;A href="https://docs.microsoft.com/en-us/azure/azure-monitor/app/monitor-web-app-availability" target="_blank" rel="noopener"&gt;URL monitor&lt;/A&gt; in Azure Monitor. We used the synthetic URL below against all CMGs and were able to validate high-level response times executed from different Az regions and in the case of an exception, drill into the number of failures and IIS return code (500/503 etc..) as well.&lt;/P&gt;
&lt;P&gt;&lt;A href="https://CMGFQDN/CCM_Proxy_ServerAuth/AADAuthInfo" target="_blank" rel="noopener"&gt;https://CMGFQDN/CCM_Proxy_ServerAuth/AADAuthInfo&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;Azure Monitor also includes a &lt;A href="https://docs.microsoft.com/en-us/azure/azure-monitor/app/sla-report" target="_blank" rel="noopener"&gt;Downtime and Outage workbook&lt;/A&gt; which can be used to analyze potential outages, downtime and failures based on location.&lt;/P&gt;
&lt;P&gt;We later relied on our in-house monitoring tools running on VM instances to natively monitor and alert on conditions such as High CPU, IIS errors etc. We have also filed change requests that advocate for additional in-console health monitoring for customers that may pursue CMG-first implementations.&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;H4&gt;&amp;nbsp;&lt;/H4&gt;
&lt;H4&gt;&lt;EM&gt;Troubleshooting&lt;/EM&gt;&lt;/H4&gt;
&lt;P&gt;In troubleshooting scenarios, at times, nothing beats some of the great logging already available in CMG logs on the Service Connection Point role in your Site. For example, for a quick check on a particular VM instance, you can pull up one of the CMG-cmgname-vminstance0001-CMGService.log files and filter for “Summary” to get some quick health insights:&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;To quickly examine a Proxy Connector, you can also inspect the SMS_Cloud_ProxyConnector.log files and filter for “ReportTrafficData - state message to send” and amongst all the other per-endpoint details, the very first xml tag will have the MaxConcurrentRequests:&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&amp;lt;ProxyTrafficStateDetails ServerName="abc.def.com" StartTime="12/01/2021 03:46:14" EndTime="12/01/2021 03:51:15" &lt;FONT color="#CF3600"&gt;MaxConcurrentRequests="5073"&lt;/FONT&gt;&amp;gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;After upgrades/certificate update operations, if individual VM instances have needed a reboot etc.., we’ve used the Az REST API or PowerShell commands to inspect overall config/instances for the VMSS. In PowerShell, this would be via the Get-AzVMSS and Get-AzVMSSVM commands:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="powershell"&gt;#per VM provisioning state
Get-AzVmssVM -ResourceGroupName MYVMSSCMGRG -VMScaleSetName MYVMSSCMG -InstanceView

#specific VM instance config (with/without -InstanceView parameter)
Get-AzVmssVM -ResourceGroupName MYVMSSCMGRG -VMScaleSetName MYVMSSCMG -InstanceID 1&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H4&gt;&amp;nbsp;&lt;/H4&gt;
&lt;H4&gt;&lt;EM&gt;Conclusion&lt;/EM&gt;&lt;/H4&gt;
&lt;P&gt;We hope the posts in this series are useful in your own CMG implementations and demonstrate ways of pursuing CMG-first communication with the possibility of simplified infrastructure.&lt;/P&gt;</description>
      <pubDate>Mon, 07 Feb 2022 21:52:23 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/device-management-in-microsoft/vmss-based-cmgs-and-the-cloud-heavy-configmgr-part-2/ba-p/3095255</guid>
      <dc:creator>Bankim Patel</dc:creator>
      <dc:date>2022-02-07T21:52:23Z</dc:date>
    </item>
    <item>
      <title>Deploy Teams media optimization with Intune Proactive Remediation to Windows 365</title>
      <link>https://techcommunity.microsoft.com/t5/device-management-in-microsoft/deploy-teams-media-optimization-with-intune-proactive/ba-p/3040850</link>
      <description>&lt;P&gt;&lt;SPAN&gt;The Microsoft Windows 365 provides all the benefits of Windows, without any of the traditional hardware limitations. It is the most optimized Microsoft 365 powered compute experience delivered from Azure and managed by Microsoft. It is Microsoft’s best expression of Windows and M365 and is always secure and up to date. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Teams media optimization package includes Remote Desktop WebRTC Redirector Service and latest Microsoft Visual C++ Redistributable. With media optimization for Microsoft Teams, Windows 365 &lt;/SPAN&gt;&lt;SPAN&gt;can handle audio and video locally for Teams and meetings. Windows 365 can have all the benefits of the modern media stack including HW video decoding with the high-performance peer-to-peer streaming facilitated by media optimization WebRTC. This feature effectively solves some user meeting issues like sound echo which they can encounter during Teams meeting without media optimization. It also provided the same audio and video experience as users who are using physical PCs. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Teams media optimization package has been integrated into the latest Windows 365 OS with integrated office apps. Users may not see audio or video issues initially when they join meetings with Teams if they are using office apps integrated version Windows 365. The below process is still helpful for remediation if Teams functionality is broken in the office apps integrated version. Additionally, if the users didn’t purchase office apps integrated Windows 365 version and they want to install office apps later, the below process is also helpful for them to deploy Teams media optimization package from scratch.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;STRONG&gt;Prerequisites &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Before you can use media optimization in Windows 365, the below prerequisites need to be prepared:&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN&gt;Install the &lt;/SPAN&gt;&lt;A href="https://docs.microsoft.com/en-us/azure/virtual-desktop/connect-windows-7-10" target="_blank"&gt;Windows Desktop Client&lt;/A&gt;&lt;SPAN&gt; on any Windows device &lt;/SPAN&gt;&lt;SPAN&gt;which you use to connect to Windows 365.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;Deploy Teams Machine-Wide Installer to Windows 365. Microsoft Teams Machine-Wide Installer is included as part of the new installation of Microsoft 365 Apps starting with version 1902.&amp;nbsp; For this step, you can use separate Teams installer or Microsoft 365 Apps deployment.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;You must install Microsoft&amp;nbsp;Teams machine-wide installer version 1.3.00.4461 or later – the 64-bit version is highly recommended&lt;EM&gt;.&lt;/EM&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;STRONG&gt;Deploy Teams media optimization with Intune Proactive Remediation&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Navigate to the Intune portal &lt;/SPAN&gt;&lt;A href="https://endpoint.microsoft.com" target="_blank"&gt;https://endpoint.microsoft.com&lt;/A&gt;&lt;SPAN&gt; -&amp;gt; Reports -&amp;gt; Endpoint Analytics -&amp;gt; Proactive Remediations. Proactive remediations are script packages that can detect and fix common support issues on the user’s device. It also can be used to deploy customized Powershell scripts to the user device.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;In Teams media optimization deployment, if users have Teams installed in ($env:ProgramData)\$env:USERNAME\Microsoft\Teams or in ($env:LOCALAPPDATA)\Microsoft\Teams, we need to uninstall it at first before we install media optimization. Teams media optimization only will be working under the scenario when media optimization is installed before the user profile Teams installation.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Detection Script&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;#===========================================================================&lt;/P&gt;
&lt;P&gt;# Script Name:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; detectMedia.ps1&lt;/P&gt;
&lt;P&gt;# Description:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Detect if Team media optimization has been installed and if it is installed, make sure it is&lt;/P&gt;
&lt;P&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; installed after user profile Teams installation. if it is not installed or installed after&lt;/P&gt;
&lt;P&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; user profile Teams installation, we need to remove Teams at first before installing media optimization.&lt;/P&gt;
&lt;P&gt;#==========================================================================&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;$TeamsMediaFile&lt;/STRONG&gt; &lt;STRONG&gt;=&lt;/STRONG&gt; "C:\Program Files\Remote Desktop WebRTC Redirector\MsRdcWebRTCSvc.exe"&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;$TeamsMediaPath&lt;/STRONG&gt; &lt;STRONG&gt;=&lt;/STRONG&gt; "C:\Program Files\Remote Desktop WebRTC Redirector"&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;$TeamMediaFileExist&lt;/STRONG&gt; &lt;STRONG&gt;=&lt;/STRONG&gt; Test-Path &lt;STRONG&gt;-&lt;/STRONG&gt;Path &lt;STRONG&gt;$TeamsMediaFile&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;$folders&lt;/STRONG&gt; &lt;STRONG&gt;=&lt;/STRONG&gt; Get-ChildItem &lt;STRONG&gt;-&lt;/STRONG&gt;Path C&lt;STRONG&gt;:&lt;/STRONG&gt;\users &lt;STRONG&gt;-&lt;/STRONG&gt;Directory &lt;STRONG&gt;-&lt;/STRONG&gt;force &lt;STRONG&gt;-&lt;/STRONG&gt;ErrorAction SilentlyContinue &lt;STRONG&gt;|&lt;/STRONG&gt;select fullname&lt;STRONG&gt;,&lt;/STRONG&gt;name&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;$totalFolders&lt;/STRONG&gt; &lt;STRONG&gt;=&lt;/STRONG&gt; &lt;STRONG&gt;$folders&lt;/STRONG&gt;&lt;STRONG&gt;.&lt;/STRONG&gt;Count &lt;STRONG&gt;+&lt;/STRONG&gt; &lt;STRONG&gt;$folders&lt;/STRONG&gt;&lt;STRONG&gt;.&lt;/STRONG&gt;Count&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;if&lt;/STRONG&gt;&lt;STRONG&gt;(&lt;/STRONG&gt;&lt;STRONG&gt;$TeamMediaFileExist&lt;/STRONG&gt; &lt;STRONG&gt;-&lt;/STRONG&gt;eq &lt;STRONG&gt;$true&lt;/STRONG&gt; &lt;STRONG&gt;)&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;{&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;foreach&lt;/STRONG&gt;&lt;STRONG&gt;(&lt;/STRONG&gt;&lt;STRONG&gt;$eachfolder&lt;/STRONG&gt; &lt;STRONG&gt;in&lt;/STRONG&gt; &lt;STRONG&gt;$folders&lt;/STRONG&gt;&lt;STRONG&gt;)&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;{&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;$TeamsPath&lt;/STRONG&gt; &lt;STRONG&gt;=&lt;/STRONG&gt; &lt;STRONG&gt;$eachfolder&lt;/STRONG&gt;&lt;STRONG&gt;.&lt;/STRONG&gt;Fullname &lt;STRONG&gt;+&lt;/STRONG&gt; "\AppData\Local\Microsoft\Teams"&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;$TeamsUpdateExePath&lt;/STRONG&gt; &lt;STRONG&gt;=&lt;/STRONG&gt; &lt;STRONG&gt;$TeamsPath&lt;/STRONG&gt; &lt;STRONG&gt;+&lt;/STRONG&gt; "\Update.exe"&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;$TeamsUpdateExist&lt;/STRONG&gt; &lt;STRONG&gt;=&lt;/STRONG&gt; Test-Path &lt;STRONG&gt;-&lt;/STRONG&gt;Path &lt;STRONG&gt;$TeamsUpdateExePath&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;$TeamsPathExist&lt;/STRONG&gt; &lt;STRONG&gt;=&lt;/STRONG&gt; Test-Path &lt;STRONG&gt;-&lt;/STRONG&gt;Path &lt;STRONG&gt;$TeamsPath&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;STRONG&gt;if&lt;/STRONG&gt; &lt;STRONG&gt;(&lt;/STRONG&gt; &lt;STRONG&gt;$TeamsUpdateExist&lt;/STRONG&gt; &lt;STRONG&gt;-&lt;/STRONG&gt;eq &lt;STRONG&gt;$True&lt;/STRONG&gt; &lt;STRONG&gt;)&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;{&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;STRONG&gt;$TeamsCreationTime&lt;/STRONG&gt; &lt;STRONG&gt;=&lt;/STRONG&gt; get-date &lt;STRONG&gt;(&lt;/STRONG&gt; &lt;STRONG&gt;(&lt;/STRONG&gt;get-item &lt;STRONG&gt;-&lt;/STRONG&gt;path &lt;STRONG&gt;$TeamsPath&lt;/STRONG&gt;&lt;STRONG&gt;).&lt;/STRONG&gt;LastWriteTime&lt;STRONG&gt;)&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;$TeamsMediaCreationTime&lt;/STRONG&gt; &lt;STRONG&gt;=&lt;/STRONG&gt; get-date &lt;STRONG&gt;(&lt;/STRONG&gt; &lt;STRONG&gt;(&lt;/STRONG&gt;get-item &lt;STRONG&gt;-&lt;/STRONG&gt;path &lt;STRONG&gt;$TeamsMediaPath&lt;/STRONG&gt;&lt;STRONG&gt;).&lt;/STRONG&gt;CreationTime&lt;STRONG&gt;)&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;if&lt;/STRONG&gt;&lt;STRONG&gt;(&lt;/STRONG&gt; &lt;STRONG&gt;$TeamsMediaCreationTime&lt;/STRONG&gt; &lt;STRONG&gt;-&lt;/STRONG&gt;lt &lt;STRONG&gt;$TeamsCreationTime&lt;/STRONG&gt;&lt;STRONG&gt;)&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;{&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;$totalFolders&lt;/STRONG&gt; &lt;STRONG&gt;=&lt;/STRONG&gt; &lt;STRONG&gt;$totalFolders&lt;/STRONG&gt; &lt;STRONG&gt;-&lt;/STRONG&gt;1&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;}&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;STRONG&gt;}&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;elseif&lt;/STRONG&gt;&lt;STRONG&gt;(&lt;/STRONG&gt; &lt;STRONG&gt;$TeamsPathExist&lt;/STRONG&gt; &lt;STRONG&gt;-&lt;/STRONG&gt;eq &lt;STRONG&gt;$false&lt;/STRONG&gt;&lt;STRONG&gt;)&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;{&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;$totalFolders&lt;/STRONG&gt; &lt;STRONG&gt;=&lt;/STRONG&gt; &lt;STRONG&gt;$totalFolders&lt;/STRONG&gt; &lt;STRONG&gt;-&lt;/STRONG&gt;1&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;}&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;$TeamsUserPath&lt;/STRONG&gt; &lt;STRONG&gt;=&lt;/STRONG&gt; "C:\ProgramData\" &lt;STRONG&gt;+&lt;/STRONG&gt; &lt;STRONG&gt;$eachfolder&lt;/STRONG&gt;&lt;STRONG&gt;.&lt;/STRONG&gt;name &lt;STRONG&gt;+&lt;/STRONG&gt; "\Microsoft\Teams"&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;$TeamsUserUpdateExePath&lt;/STRONG&gt; &lt;STRONG&gt;=&lt;/STRONG&gt; &lt;STRONG&gt;$TeamsUserPath&lt;/STRONG&gt; &lt;STRONG&gt;+&lt;/STRONG&gt; "\Update.exe"&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;$TeamsUserUpdateExist&lt;/STRONG&gt; &lt;STRONG&gt;=&lt;/STRONG&gt; Test-Path &lt;STRONG&gt;-&lt;/STRONG&gt;Path &lt;STRONG&gt;$TeamsUserUpdateExePath&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;$TeamsUserPathExist&lt;/STRONG&gt; &lt;STRONG&gt;=&lt;/STRONG&gt; Test-Path &lt;STRONG&gt;-&lt;/STRONG&gt;Path &lt;STRONG&gt;$TeamsUserPath&lt;/STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;if&lt;/STRONG&gt; &lt;STRONG&gt;(&lt;/STRONG&gt; &lt;STRONG&gt;$TeamsUserUpdateExist&lt;/STRONG&gt; &lt;STRONG&gt;-&lt;/STRONG&gt;eq &lt;STRONG&gt;$True&lt;/STRONG&gt; &lt;STRONG&gt;)&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;{&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;$TeamsCreationTime&lt;/STRONG&gt; &lt;STRONG&gt;=&lt;/STRONG&gt; get-date &lt;STRONG&gt;(&lt;/STRONG&gt; &lt;STRONG&gt;(&lt;/STRONG&gt;get-item &lt;STRONG&gt;-&lt;/STRONG&gt;path &lt;STRONG&gt;$TeamsUserPath&lt;/STRONG&gt;&lt;STRONG&gt;).&lt;/STRONG&gt;LastWriteTime&lt;STRONG&gt;)&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;$TeamsMediaCreationTime&lt;/STRONG&gt; &lt;STRONG&gt;=&lt;/STRONG&gt; get-date &lt;STRONG&gt;(&lt;/STRONG&gt; &lt;STRONG&gt;(&lt;/STRONG&gt;get-item &lt;STRONG&gt;-&lt;/STRONG&gt;path &lt;STRONG&gt;$TeamsMediaPath&lt;/STRONG&gt;&lt;STRONG&gt;).&lt;/STRONG&gt;CreationTime&lt;STRONG&gt;)&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;if&lt;/STRONG&gt;&lt;STRONG&gt;(&lt;/STRONG&gt; &lt;STRONG&gt;$TeamsMediaCreationTime&lt;/STRONG&gt; &lt;STRONG&gt;-&lt;/STRONG&gt;lt &lt;STRONG&gt;$TeamsCreationTime&lt;/STRONG&gt;&lt;STRONG&gt;)&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;{&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;$totalFolders&lt;/STRONG&gt; &lt;STRONG&gt;=&lt;/STRONG&gt; &lt;STRONG&gt;$totalFolders&lt;/STRONG&gt; &lt;STRONG&gt;-&lt;/STRONG&gt;1&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;}&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;}&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;elseif&lt;/STRONG&gt;&lt;STRONG&gt;(&lt;/STRONG&gt;&lt;STRONG&gt;$TeamsUserPathExist&lt;/STRONG&gt; &lt;STRONG&gt;-&lt;/STRONG&gt;eq &lt;STRONG&gt;$false&lt;/STRONG&gt;&lt;STRONG&gt;)&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;{&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;$totalFolders&lt;/STRONG&gt; &lt;STRONG&gt;=&lt;/STRONG&gt; &lt;STRONG&gt;$totalFolders&lt;/STRONG&gt; &lt;STRONG&gt;-&lt;/STRONG&gt; 1&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;}&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;}&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;$TeamsReg&lt;/STRONG&gt; &lt;STRONG&gt;=&lt;/STRONG&gt; "HKCU:\Software\Microsoft\Office\Teams"&lt;/P&gt;
&lt;P&gt;#if this registry key is existing, it will block user profile Teams installation by Teams machine-wide installer.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;$TeamRegExist&lt;/STRONG&gt; &lt;STRONG&gt;=&lt;/STRONG&gt; test-path &lt;STRONG&gt;-&lt;/STRONG&gt;path &lt;STRONG&gt;$TeamsReg&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;if&lt;/STRONG&gt;&lt;STRONG&gt;(&lt;/STRONG&gt;&lt;STRONG&gt;$TeamRegExist&lt;/STRONG&gt; &lt;STRONG&gt;-&lt;/STRONG&gt;eq &lt;STRONG&gt;$True&lt;/STRONG&gt;&lt;STRONG&gt;)&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;{&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;$PreventInstallStateKey&lt;/STRONG&gt; &lt;STRONG&gt;=&lt;/STRONG&gt; Get-Item &lt;STRONG&gt;-&lt;/STRONG&gt;Path &lt;STRONG&gt;$TeamsReg&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;$preventInstall&lt;/STRONG&gt; &lt;STRONG&gt;=&lt;/STRONG&gt; &lt;STRONG&gt;$PreventInstallStateKey&lt;/STRONG&gt;&lt;STRONG&gt;.&lt;/STRONG&gt;GetValue&lt;STRONG&gt;(&lt;/STRONG&gt;"PreventInstallationFromMsi"&lt;STRONG&gt;)&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;STRONG&gt;}&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;else&lt;/STRONG&gt; &lt;STRONG&gt;{&lt;/STRONG&gt; &lt;STRONG&gt;$preventInstall&lt;/STRONG&gt; &lt;STRONG&gt;=&lt;/STRONG&gt; &lt;STRONG&gt;$null&lt;/STRONG&gt;&lt;STRONG&gt;}&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;STRONG&gt;if&lt;/STRONG&gt;&lt;STRONG&gt;((&lt;/STRONG&gt;&lt;STRONG&gt;$totalFolders&lt;/STRONG&gt; &lt;STRONG&gt;-&lt;/STRONG&gt;eq 0&lt;STRONG&gt;)&lt;/STRONG&gt; &lt;STRONG&gt;-&lt;/STRONG&gt;and &lt;STRONG&gt;(&lt;/STRONG&gt;&lt;STRONG&gt;$preventInstall&lt;/STRONG&gt; &lt;STRONG&gt;-&lt;/STRONG&gt;eq &lt;STRONG&gt;$null&lt;/STRONG&gt;&lt;STRONG&gt;))&lt;/STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;{&lt;/STRONG&gt; write-host "Compliant"&amp;nbsp;&amp;nbsp;&lt;STRONG&gt;exit 0&lt;/STRONG&gt;&lt;STRONG&gt;}&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;else&lt;/STRONG&gt; &lt;STRONG&gt;{&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;write-host “Not Compliant”&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;exit 1&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;}&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;}&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;else&lt;/STRONG&gt; &lt;STRONG&gt;{&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp; write-host “Not Compliant”&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp; exit 1&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;}&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Remediation Script&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;#===========================================================================&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;# Script Name:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UninstallTeams_InstallMediaOptimization.ps1&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;# Description:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Uninstall user profile Teams and Install Teams media #optimizatio.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;#==========================================================================&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;$folders&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;=&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;SPAN data-contrast="none"&gt;Get-ChildItem&lt;/SPAN&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;-&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;Path C&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;\users &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;-&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;Directory &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;-&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;force &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;-&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;ErrorAction SilentlyContinue &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;|&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;select&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt; fullname&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;,&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;name&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;$TeamsReg&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;=&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;SPAN data-contrast="none"&gt;"HKCU:\Software\Microsoft\Office\Teams"&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;$TeamRegExist&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;=&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;SPAN data-contrast="none"&gt;test-path&lt;/SPAN&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;-&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;path &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;$TeamsReg&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;try&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;{&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;foreach&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;(&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;$eachfolder&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;in&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;$folders&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;)&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;{&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;$TeamsPath&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;=&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;$eachfolder&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;Fullname &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;+&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;SPAN data-contrast="none"&gt;"\AppData\Local\Microsoft\Teams"&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;$TeamsUpdateExePath&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;=&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;$TeamsPath&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;+&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;SPAN data-contrast="none"&gt;"\Update.exe"&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;$TeamsUserPath&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;=&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;SPAN data-contrast="none"&gt;"C:\ProgramData\"&lt;/SPAN&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;+&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;$eachfolder&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;name &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;+&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;SPAN data-contrast="none"&gt;"\Microsoft\Teams"&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;$TeamsUserUpdateExePath&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;=&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;$TeamsUserPath&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;+&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;SPAN data-contrast="none"&gt;"\Update.exe"&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;if&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;(&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;Test-Path&lt;/SPAN&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;-&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;Path &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;$TeamsUpdateExePath&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;)&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;{&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;Write-Host&lt;/SPAN&gt; &lt;SPAN data-contrast="none"&gt;"Uninstalling Teams process"&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;# Uninstall Teams from user profile&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;$proc&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;=&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt; Start-Process &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;-&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;FilePath &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;$TeamsUpdateExePath&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;-&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;ArgumentList &lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;"-uninstall -s"&lt;/SPAN&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;-&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;PassThru&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;$proc&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;WaitForExit&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;()&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;}&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;if&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;(&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;Test-Path&lt;/SPAN&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;-&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;Path &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;$TeamsPath&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;)&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;{&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;Write-Host&lt;/SPAN&gt; &lt;SPAN data-contrast="none"&gt;"Deleting Teams directory"&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;Remove-Item&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt; –Path &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;$TeamsPath&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;-&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;Recurse&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;}&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;if&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;(&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;Test-Path&lt;/SPAN&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;-&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;Path &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;$TeamsUserUpdateExePath&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;)&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;{&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;Write-Host&lt;/SPAN&gt; &lt;SPAN data-contrast="none"&gt;"Uninstalling Teams process in ProgramData folder"&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;# Uninstall Teams from programdata folder&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;$proc&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;=&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt; Start-Process &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;-&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;FilePath &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;$TeamsUserUpdateExePath&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;-&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;ArgumentList &lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;"-uninstall -s"&lt;/SPAN&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;-&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;PassThru&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;$proc&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;WaitForExit&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;()&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;}&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;if&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;(&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;Test-Path&lt;/SPAN&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;-&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;Path &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;$TeamsUserPath&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;)&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;{&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;Write-Host&lt;/SPAN&gt; &lt;SPAN data-contrast="none"&gt;"Deleting Teams directory"&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;Remove-Item&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt; –Path &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;$TeamsUserPath&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;-&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;Recurse&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;}&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;}&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;# if this Teams preventinstallationFromMsi is existing, remove it to make user profile Teams installation&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;# be triggered by Teams machine-wide installer&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;if&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;(&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;$TeamRegExist&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;-&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;eq &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;$True&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;)&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;{&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;$PreventInstallStateKey&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;=&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;SPAN data-contrast="none"&gt;Get-Item&lt;/SPAN&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;-&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;Path &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;$TeamsReg&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;$preventInstall&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;=&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;$PreventInstallStateKey&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;GetValue&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;(&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;"PreventInstallationFromMsi"&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;)&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;if&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;(&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;$preventInstall&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;-&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;ne &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;$null&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;)&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;{&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;Remove-ItemProperty&lt;/SPAN&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;-&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;Path &lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;"HKCU:\Software\Microsoft\Office\Teams"&lt;/SPAN&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;-&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;Name &lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;"PreventInstallationFromMsi"&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;}&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;}&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;#Install Teams media optimization&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;#Create a directory to save download files&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;$tempCreated&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;=&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;$false&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;if&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;(!(&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;Test-Path&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt; C&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;\temp&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;))&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;{&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;New-Item&lt;/SPAN&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;-&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;Path C&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;\ &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;-&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;ItemType Directory &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;-&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;Name temp&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;$tempCreated&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;=&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;$true&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;}&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;# Add registry Key&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; reg add &lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;"HKLM\SOFTWARE\Microsoft\Teams"&lt;/SPAN&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;/&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;v IsWVDEnvironment &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;/&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;t REG_DWORD &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;/&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;d &lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;1&lt;/SPAN&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;/&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;f &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;/&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;reg&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;64&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;#Download C++ Runtime&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; invoke-WebRequest &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;-&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;Uri https&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;://&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;aka&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;ms&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;/&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;vs&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;/&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;16&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;/&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;release&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;/&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;vc_redist&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;x64&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;exe &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;-&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;OutFile &lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;"C:\temp\vc_redist.x64.exe"&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;#Download WebRTC&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; invoke-WebRequest &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;-&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;Uri https&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;://&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;query&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;prod&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;cms&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;rt&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;microsoft&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;com&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;/&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;cms&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;/&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;api&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;/&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;am&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;/&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;binary&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;/&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;RE4AQBt &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;-&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;OutFile &lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;"C:\temp\MsRdcWebRTCSvc_HostSetup_1.0.2006.11001_x64.msi"&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;#Install C++ runtime&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp; &amp;nbsp;Start-Process &lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;"C:\temp\vc_redist.x64.exe"&lt;/SPAN&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;-&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;ArgumentList @&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;(&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;'/q'&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;,&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;SPAN data-contrast="none"&gt;'/norestart'&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;)&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;-&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;NoNewWindow &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;-&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;Wait &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;-&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;PassThru&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;#Install MSRDCWEBTRCSVC&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Start-Process msiexec&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;exe &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;-&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;ArgumentList &lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;'/i C:\temp\MsRdcWebRTCSvc_HostSetup_1.0.2006.11001_x64.msi /q /n'&lt;/SPAN&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;-&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;Wait&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;if&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;(&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;$tempCreated&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;)&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;{&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;#Remove temp folder&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;Remove-Item&lt;/SPAN&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;-&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;Path C&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;\temp\ &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;-&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;Recurse&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;}&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;else&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;{&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;#Remove downloaded C++ Runtime file&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;Remove-Item&lt;/SPAN&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;-&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;Path C&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;\temp\vc_redist&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;x64&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;exe&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;#Remove downloaded WebRTC file&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;Remove-Item&lt;/SPAN&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;-&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;Path C&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;\temp\MsRdcWebRTCSvc_HostSetup_1&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;.0.2006.11001&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;_x64&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;msi&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;}&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;Write-host&lt;/SPAN&gt; &lt;SPAN data-contrast="none"&gt;"Media Optimization Installed"&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit &lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;0&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;}&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;catch&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;{&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;Write-Error&lt;/SPAN&gt; &lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;-&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;ErrorRecord &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;$_&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;/&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="none"&gt;b &lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;1&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;}&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559731&amp;quot;:720,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Verify and test the media optimization&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;After the above remediation script has been run successfully in Windows 365, users should log in to their Windows 365. Teams per user installation will be triggered automatically by Teams machine-wide installer. After the Teams pops up, go to Teams user profile, click “About”, choose “Version”, below “WVD Media Optimized” should be displayed.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335551550&amp;quot;:2,&amp;quot;335551620&amp;quot;:2,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335551550&amp;quot;:2,&amp;quot;335551620&amp;quot;:2,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="3" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Go to Teams user profile, click “Settings”, choose “Devices”, you should see “Audio devices” is set to “Custom Setup”. Speaker, Microphone, and Camera available locally will be enumerated in the device menu as the below screenshot. If the menu shows “Remote Audio”, please sign out and sign in to try again.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134233279&amp;quot;:true,&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;134233279&amp;quot;:true,&amp;quot;201341983&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="3" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;If above verifications are done, you can use Teams in Windows 365 with local audio and video to participate in meetings. The performance of the audio and video quality will be the same as when you are using Teams in your physical PC.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134233279&amp;quot;:true,&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Troubleshooting&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559685&amp;quot;:360,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;If users don’t see media optimization as &lt;/SPAN&gt;&lt;SPAN&gt;in the &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;above screenshots or Teams doesn’t automatically start after users log in Windows 365:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559685&amp;quot;:360,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="3" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Check if below registry key has been created in Windows 365:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134233279&amp;quot;:true,&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;I&gt;&lt;SPAN data-contrast="none"&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Teams\&lt;/SPAN&gt;&lt;/I&gt;&lt;SPAN data-ccp-props="{&amp;quot;134233117&amp;quot;:true,&amp;quot;134233118&amp;quot;:true,&amp;quot;201341983&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;I&gt;&lt;SPAN data-contrast="none"&gt;Name&lt;/SPAN&gt;&lt;/I&gt;&lt;/STRONG&gt;&lt;I&gt;&lt;SPAN data-contrast="none"&gt;: IsWVDEnvironment&lt;/SPAN&gt;&lt;/I&gt;&lt;SPAN&gt;&amp;nbsp;&lt;BR /&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;I&gt;&lt;SPAN data-contrast="none"&gt;Type&lt;/SPAN&gt;&lt;/I&gt;&lt;/STRONG&gt;&lt;I&gt;&lt;SPAN data-contrast="none"&gt;: REG_DWORD&lt;/SPAN&gt;&lt;/I&gt;&lt;SPAN&gt;&amp;nbsp;&lt;BR /&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;I&gt;&lt;SPAN data-contrast="none"&gt;Value&lt;/SPAN&gt;&lt;/I&gt;&lt;/STRONG&gt;&lt;I&gt;&lt;SPAN data-contrast="none"&gt;: 1&lt;/SPAN&gt;&lt;/I&gt;&lt;SPAN data-ccp-props="{&amp;quot;134233117&amp;quot;:true,&amp;quot;134233118&amp;quot;:true,&amp;quot;201341983&amp;quot;:0,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="3" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Check if media optimization and Teams machine-wide installer have been installed in Windows 365:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134233279&amp;quot;:true,&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="3" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Check SquirrelSetup.log in %LocalAppData%\SquirrelTemp. The system automatically starts Teams when a user logs in if Teams machine-wide installer is healthy in the device. If the Teams doesn’t start after user logs in, all the failures about Teams installation and updates are recorded in SquirrelSetup.log.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134233279&amp;quot;:true,&amp;quot;201341983&amp;quot;:0,&amp;quot;335551550&amp;quot;:6,&amp;quot;335551620&amp;quot;:6,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Note:&amp;nbsp;This script/function is provided AS IS without warranty of any kind. Author(s) disclaim all implied warranties including, without limitation, any implied warranties of merchantability or of fitness for a particular purpose. The entire risk arising out of the use or performance of the sample scripts and documentation remains with you. In no event shall author(s) be held liable for any damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, or other pecuniary loss) arising out of the use of or inability to use the script or documentation.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335551550&amp;quot;:6,&amp;quot;335551620&amp;quot;:6,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 13 Jan 2022 00:20:05 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/device-management-in-microsoft/deploy-teams-media-optimization-with-intune-proactive/ba-p/3040850</guid>
      <dc:creator>ClaudiaZH2021</dc:creator>
      <dc:date>2022-01-13T00:20:05Z</dc:date>
    </item>
    <item>
      <title>Zero Trust Networking and the Cloud heavy ConfigMgr – Part 1</title>
      <link>https://techcommunity.microsoft.com/t5/device-management-in-microsoft/zero-trust-networking-and-the-cloud-heavy-configmgr-part-1/ba-p/3039843</link>
      <description>&lt;P&gt;This 2-part blog covers changes to the Cloud Management Gateway (CMG) infrastructure in the internal Microsoft environment to align with Zero Trust Networking (ZTN) standards. The second part of this series covers the management and migration of Cloud Service Classic CMGs to Virtual Machine Scale Sets (VMSS), aka CMGv2.&lt;/P&gt;
&lt;P&gt;In a previous&amp;nbsp;&lt;A href="https://techcommunity.microsoft.com/t5/device-management-in-microsoft/cloud-management-gateways-in-the-microsoft-environment/ba-p/1381205" target="_blank" rel="noopener"&gt;blog post&lt;/A&gt;, we had alluded to how moving portions of our ConfigMgr client traffic in specific regions to CMGs allowed us to lower the burden on VPN Gateways. We had also mentioned how those actions helped us pilot a model that embraced architectural elements of Zero Trust. Well, not long after, the directive to align with Microsoft’s internal push to Zero Trust Networking standards landed on our team and we then set out to migrate &lt;EM&gt;&lt;STRONG&gt;&lt;U&gt;all&lt;/U&gt;&lt;/STRONG&gt;&lt;/EM&gt; ConfigMgr client traffic to be internet-first/CMG-first and route through the CMGs.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;ZTN and ConfigMgr&lt;/H3&gt;
&lt;P&gt;There are many salient features of Zero Trust and this post cannot do justice to describe entirely the ZTN shift at Microsoft, so we’ll refer those interested in the details to the following posts by our peers in the Microsoft Digital team:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;A href="https://www.microsoft.com/en-us/insidetrack/transitioning-to-modern-access-architecture-with-zero-trust" target="_blank" rel="noopener"&gt;Transitioning to modern access architecture with Zero Trust&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;A href="https://www.microsoft.com/insidetrack/blog/using-a-zero-trust-strategy-to-secure-microsofts-network-during-remote-work/" target="_blank" rel="noopener"&gt;Using a Zero Trust strategy to secure Microsoft’s network during remote work&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;A href="https://www.microsoft.com/en-us/insidetrack/lessons-learned-in-engineering-zero-trust-networking/" target="_blank" rel="noopener"&gt;Lessons learned in Zero Trust networking&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;One of the core tenets of the ZTN model is the shift away from the traditional flat Corporate network and focus on network perimeter security to one with greater focus on identity, device-health evaluation, segmentation and tight controls on network access. The internet-first model also prefers cloud based or app proxy-based access to Apps in favor of Corpnet/VPN based access. The resulting networking impact to a ConfigMgr client/end-user is that instead of the device in an office location being on a traditional Corpnet, it is instead on an unprivileged/internet-based network that prioritizes access to Cloud resources with the shortest network path. This therefore meant that Clients would eventually lose traditional on-prem based connectivity to ConfigMgr Site Systems. ConfigMgr as an app stood out clearly on the list of candidate apps to migrate to internet-first due to the high number of hits a client would generate for daily actions such as machine policy, BGB/online status etc. The in-box availability of an internet-first routing mechanism via the CMG also made it a prime candidate for migration.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;Client Traffic Migration&lt;/H3&gt;
&lt;P&gt;We decided to follow an East-&amp;gt;West regional approach to migrate clients to CMG-first as at the time offices in the Eastern regions were in various stages of reopening and we wanted to understand if the increase in Internet traffic at any location would cause any management issues for networking teams. We then considered two migration methods – replacing on-prem Site Systems with CMGs in Boundary Groups and converting clients to AlwaysInternet mode. After some consultation with our partners in the ConfigMgr Dev team, we decided on the Boundary Group based method as in general it is a tried/tested foundational feature over the years and if any client does consider itself as being on the Intranet, it would be able to leverage Peer Cache even when using the CMG. This option would not have been available if the client were in an Internet-only mode.&lt;/P&gt;
&lt;P&gt;We examined our existing client traffic trends and arrived at a ballpark number for the number of concurrent connections our CMGs would need to support and scaled up existing CMGs to meet the requirements (roughly 4x the previous VM instances). We used the published guidance on &lt;A href="https://docs.microsoft.com/en-us/mem/configmgr/core/clients/manage/cmg/perf-scale" target="_blank" rel="noopener"&gt;CMG performance and scale&lt;/A&gt; to arrive at VM instance counts. As we have a Primary Site in Asia, we configured CMGs in East Asia and SE Asia Azure regions to manage the regional traffic load. The remaining CMGs based in US regions were linked to our Proxy Connectors at Redmond Primary Sites to manage the traffic load for all other regions.&lt;/P&gt;
&lt;P&gt;We migrated clients by adjusting our Boundary Groups across various waves and tracking the progress via a Power BI report. Although this is not an instantaneous change on client side and generally the next Location Request performed by the client would register the boundary change, we exercised a bit of caution with our largest boundaries. The devices in these boundary groups were broken up further by creating new IPv6 prefix-based boundary groups and adopting the VPN boundary group.&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;The SQL queries that help us derive data are mainly sourced against v_CombinedDeviceResources &lt;EM&gt;(for heavy report volume consider BGB_ResStatus/BGB_LiveData_Boundary tables – data is per client/per boundary however)&lt;/EM&gt;:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="sql"&gt;--Device count based on Boundary Group
SELECT cdr.BoundaryGroups, COUNT(cdr.MachineID) as 'Total Count',
SUM(CASE WHEN cdr.CNAccessMP LIKE N'%CCM_Proxy%' THEN 1 ELSE 0 END) as 'CMG',
SUM(CASE WHEN cdr.CNAccessMP NOT LIKE N'%CCM_Proxy%' THEN 1 ELSE 0 END) as 'Intranet MP',
SUM(CAST(cdr.CNIsOnline as int)) as 'Online'
FROM v_CombinedDeviceResources cdr WITH (NOLOCK)
GROUP BY cdr.BoundaryGroups
ORDER BY 'Total Count' DESC&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The migration was completed without any significant issues and some bugs were filed for scenarios relating to roaming/default boundaries where some clients would continue to leverage the Intranet MP path. The net benefit was an ~86% reduction in ConfigMgr traffic over the VPN towards the later stages of the migration.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;Post Migration Changes&lt;/H3&gt;
&lt;P&gt;With CMGs now providing access to Management Points/Software Update Points and serving out content to all clients – the case to retain on-prem Distribution Points dwindled. We therefore decommissioned all on-prem Distribution Points and the cost savings were able to make up for additional bandwidth costs incurred with the migration.&lt;/P&gt;
&lt;P&gt;Additionally, with no on-prem Distribution Points in place, we were able to stop downloading monthly updates for our Software Update packages as these deployments could just be targeted with the fallback to Microsoft Update enabled. It is not worth replicating this content to the CMGs anyway as the CMG is considered lower priority for content acquisition and the client will prefer Microsoft Update sources if the below option is enabled:&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;For those wondering about scale/performance – we recently uncovered a nasty bug in the 2107 Hotfix Rollup candidate (pre public release). We were able to leverage a Run Script action and remediate &amp;gt;100k domain joined online clients in a matter of minutes and mitigate a production outage.&lt;/P&gt;
&lt;P&gt;An additional tip of the hat here is due to the Proactive Remediations feature in Intune. Not only does it give us another tool in the arsenal to evaluate health and remediate issues with the ConfigMgr client, but it is especially useful in the CMG-first configuration. We specifically encountered an issue causing some devices to inherit an incorrect legacy IBCM MP configuration, in effect breaking ConfigMgr client functionality and were able to remediate impacted devices by a simple script in Proactive Remediation.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;Conclusion&lt;/H3&gt;
&lt;P&gt;We hope this post helps demonstrate the case for the more cloud connected ConfigMgr. But it goes without saying that enabling modern management with Intune and being able to rely on the tools made available via Co-management and Proactive Remediations help us take on more cloud centric postures in ConfigMgr and continue to derive value from it with additional infrastructure simplification. Part 2 of this post follows..&lt;/P&gt;</description>
      <pubDate>Wed, 05 Jan 2022 18:13:56 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/device-management-in-microsoft/zero-trust-networking-and-the-cloud-heavy-configmgr-part-1/ba-p/3039843</guid>
      <dc:creator>Bankim Patel</dc:creator>
      <dc:date>2022-01-05T18:13:56Z</dc:date>
    </item>
    <item>
      <title>AD Joined Hybrid Windows 365 management in Intune</title>
      <link>https://techcommunity.microsoft.com/t5/device-management-in-microsoft/ad-joined-hybrid-windows-365-management-in-intune/ba-p/3036227</link>
      <description>&lt;P&gt;&lt;SPAN data-contrast="none"&gt;The&amp;nbsp;Microsoft&amp;nbsp;Windows 365&amp;nbsp;provides all the benefits of Windows, without&amp;nbsp;any of the&amp;nbsp;traditional hardware limitations. It is the most optimized Microsoft 365 powered compute experience&amp;nbsp;delivered from &lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;Azure&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt; and managed by Microsoft Endpoint Manager&amp;nbsp;interfaces – portal and associated Graph APIs. It is Microsoft’s best expression of Windows and &lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;M365&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt; and is always secure and up to date.&amp;nbsp;The&amp;nbsp;Windows&amp;nbsp;365&amp;nbsp;is&amp;nbsp;SaaS virtual desktops/apps&amp;nbsp;which is&amp;nbsp;provisioned&amp;nbsp;instantly for licensed users. It&amp;nbsp;can be accessed anywhere from any device and can scale with a&amp;nbsp;user’s changing compute&amp;nbsp;needs.&amp;nbsp;AD Joined Hybrid Windows 365 machines have connectivity to customer’s on-premises network. In order to align with this&amp;nbsp;feature, Windows 365 service&amp;nbsp;needs of&amp;nbsp;sight into the customer’s virtual network in Azure subscription that must&amp;nbsp;have the connectivity to&amp;nbsp;customer on-premises network.&amp;nbsp;Hybrid AD joined windows&amp;nbsp;365 solution will be replaced by Azure AD joined&amp;nbsp;zero trust architecture&amp;nbsp;in future market soon.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;Prerequisites&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;134233117&amp;quot;:true,&amp;quot;134233118&amp;quot;:true,&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;To manage AD-joined Hybrid&amp;nbsp;Windows 365&amp;nbsp;in Intune, be sure the following&amp;nbsp;criteria&amp;nbsp;are met:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134233117&amp;quot;:true,&amp;quot;134233118&amp;quot;:true,&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="none"&gt;Azure subscription has been created for&amp;nbsp;Windows 365&amp;nbsp;on-premises network connection.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134233117&amp;quot;:true,&amp;quot;134233118&amp;quot;:true,&amp;quot;134233279&amp;quot;:true,&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="none"&gt;The&amp;nbsp;Windows 365&amp;nbsp;service needs line of sight into the customer’s virtual network (Vnet on the Azure subscription) that has connectivity to the customer’s on-prem domain.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134233117&amp;quot;:true,&amp;quot;134233118&amp;quot;:true,&amp;quot;134233279&amp;quot;:true,&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="2" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="none"&gt;Service&amp;nbsp;account&amp;nbsp;in&amp;nbsp;on-premises domain should be created and synchronized to Azure AD.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134233117&amp;quot;:true,&amp;quot;134233118&amp;quot;:true,&amp;quot;134233279&amp;quot;:true,&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;Create on-premises network connection&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;134233117&amp;quot;:true,&amp;quot;134233118&amp;quot;:true,&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;Navigate to Microsoft Endpoint Manager Admin Center, go to “Devices\Windows 365” blade, choose “On Premises network connections”, Click “Create connection”, Input the connection name, choose Azure subscription in prerequisites,&amp;nbsp;create&amp;nbsp;or choose an existing valid resource group, choose Virtual network in prerequisites, input AD domain full name and service account,&amp;nbsp;after “review and create”, the connection will be created successfully.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134233117&amp;quot;:true,&amp;quot;134233118&amp;quot;:true,&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;134233117&amp;quot;:true,&amp;quot;134233118&amp;quot;:true,&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;134233117&amp;quot;:true,&amp;quot;134233118&amp;quot;:true,&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;134233117&amp;quot;:true,&amp;quot;134233118&amp;quot;:true,&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;If the connection is created successfully, it will be showing “Status” as “Checks successful”.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;Create Provisioning policies&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;Provisioning policy defines which on-premises network connections and what version Windows OS the&amp;nbsp;Windows 365&amp;nbsp;provisioning process will pick up. Navigate to “Devices\Windows 365” blade, go to “Provisioning policies” tab, click&amp;nbsp;“Create policy”, input policy name, choose the correct On-premises network connection which was created in pervious steps.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;After click “next”, choose image type as below:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;The final step&amp;nbsp;is&amp;nbsp;to target this provisioning policy to a security group as assignments, the security group will be added with&amp;nbsp;Windows 365&amp;nbsp;licensed user alias as members.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;After the provisioning policy is created successfully, under “Provisioning policies” table, the provisioning policy should be listed.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Now it is ready to provisiong&amp;nbsp;Windows 365. If licensed user alias is added to above provisioning policy assignments security group in AAD, the provisioning process&amp;nbsp;is kicked off right away without delaying.&amp;nbsp;If there is no Azure deployments congestion, normally a&amp;nbsp;Windows 365&amp;nbsp;can be provisioned successfully from 20-40 minutes.&amp;nbsp;If the user alias is removed from the security group, the provisioned device will be in “Grace” period for 7 days and will be fully decommissioned after that.&amp;nbsp;&amp;nbsp;After the&amp;nbsp;Windows 365&amp;nbsp;is provisioned successfully, the&amp;nbsp;User will see the&amp;nbsp;Windows 365&amp;nbsp;connection in remote desktop app as below:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;The successfully provisioned&amp;nbsp;Windows 365s show up&amp;nbsp;in&amp;nbsp;Windows 365&amp;nbsp;blade. These devices can be managed same as other physical devices in Intune.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Deploy apps&amp;nbsp;and policies&amp;nbsp;to&amp;nbsp;Windows 365&amp;nbsp;from Intune&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Since&amp;nbsp;Windows 365s are all AD-joined Hybrid devices, Apps&amp;nbsp;and policies&amp;nbsp;deployment in Intune needs the&amp;nbsp;deployment&amp;nbsp;workload to be shifted from SCCM to Intune.&amp;nbsp;Windows 365&amp;nbsp;doesn’t&amp;nbsp;have&amp;nbsp;identifier in AD domain attributes or properties, so we only can use device name convention to create configuration manager collection filter rule, then nest&amp;nbsp;Windows 365&amp;nbsp;collections to&amp;nbsp;co-management collections to shift policy and apps deployment to Intune:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Name convention query:&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;select SMS_R_SYSTEM.ResourceID,SMS_R_SYSTEM.ResourceType,SMS_R_SYSTEM.Name,SMS_R_SYSTEM.SMSUniqueIdentifier,SMS_R_SYSTEM.ResourceDomainORWorkgroup,SMS_R_SYSTEM.Client from&amp;nbsp;SMS_R_System&amp;nbsp;inner join&amp;nbsp;SMS_Client_ComanagementState&amp;nbsp;on&amp;nbsp;SMS_Client_ComanagementState.ResourceId&amp;nbsp;=&amp;nbsp;SMS_R_System.ResourceId&amp;nbsp;where&amp;nbsp;SMS_Client_ComanagementState.Name&amp;nbsp;like "CPC-%-%"&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:259}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Sat, 11 Dec 2021 00:18:19 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/device-management-in-microsoft/ad-joined-hybrid-windows-365-management-in-intune/ba-p/3036227</guid>
      <dc:creator>ClaudiaZH2021</dc:creator>
      <dc:date>2021-12-11T00:18:19Z</dc:date>
    </item>
    <item>
      <title>Client Management</title>
      <link>https://techcommunity.microsoft.com/t5/device-management-in-microsoft/client-management/ba-p/2995389</link>
      <description>&lt;P&gt;Today we will discuss how client management is done internally at Microsoft. At a high level we will share how clients are onboarded, managed, and the custom reports used for tracking SLAs and KPIs.&lt;/P&gt;
&lt;H1&gt;&amp;nbsp;&lt;/H1&gt;
&lt;H1&gt;Onboarding:&lt;/H1&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;We have two environments so to speak; devices that are joined to a domain (AD) and devices that are joined to Azure Active Directory (AAD).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Domain Joined:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;A Logon script deployed via group policy is used as the primary and only method for installing Configuration Manager client. Given that we support multiple regions, ADM templates are used to stamp regional specific parameters required for installing agent.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Command line: &lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt;CCMSetup.exe /MP:XXXXXXXXXXX /MP:XXXXXXXXXXXX SMSSITECODE=XXX FSP=XXXXXXXXXXX CCMLOGMAXSIZE=2000000 CCMLOGLEVEL=1 DISABLESITEOPT=TRUE DISABLECACHEOPT=TRUE CCMLOGMAXHISTORY=10 SMSCACHESIZE=10000 IGNOREAPPVVERSIONCHECK=TRUE CCMEVALSENDALWAYS=TRUE&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;All domain joined devices with Windows OS version RS3 and above will onboard to Intune for leveraging Co-Management (Co-Mgmt) capabilities. ConfigMgr is used as primary management authority in this scenario except for the workloads like Compliance policies transitioned to Intune.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P class="lia-align-left"&gt;Fig 1: Current workload configuration&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Azure AD devices:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;All devices connected to AAD are onboard into Intune for management. Intune is the primary management authority in this scenario. We also deploy ConfigMgr client via App for supporting deploying win32 applications and to benefit from rich reporting capabilities.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Command line: &lt;/EM&gt;&lt;/STRONG&gt;&lt;EM&gt;msiexec /i "ccmsetup.msi" CCMSETUPCMD="CCMHOSTNAME=XXXXXXXXX.CLOUDAPP.NET/CCM_Proxy_MutualAuth/XXXXXXXXX SMSSiteCode=XXX CCMLOGLEVEL=1 CCMLOGMAXHISTORY=5 SMSCACHESIZE=10000 FSP=XXXXXXXXXXXXX /nocrlcheck" /qn&lt;/EM&gt;&lt;/P&gt;
&lt;H1&gt;&amp;nbsp;&lt;/H1&gt;
&lt;H1&gt;Monitoring and Metrics:&lt;/H1&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Monitoring ConfigMgr health is a critical aspect of client management. We track various metrics for monitoring agent health and reach daily. We also have to auto detect and remediate known issues – we keep expanding the functionality based on issues detected during investigations – if mitigation is safe, and issues can be detected programmatically. These remediations are performed using a logon script for domain joined devices. This method is used for tackling both client install failures and health issues. Below are a few most frequently triggered remediations:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;WMI repository remediation&lt;/LI&gt;
&lt;LI&gt;Policy provider issues&lt;/LI&gt;
&lt;LI&gt;Provisioning mode configuration&lt;/LI&gt;
&lt;LI&gt;Client registration issues&lt;/LI&gt;
&lt;LI&gt;Dependent service misconfiguration (we see these often given the nature of our environment)&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;We recently started expanding this functionality to use &lt;A href="https://docs.microsoft.com/en-us/mem/analytics/proactive-remediations" target="_blank" rel="noopener"&gt;Proactive remediation scripts&lt;/A&gt; in Intune to target Co-Managed devices. We capture telemetry via these scripts to understand issues as well as track effectiveness of these scripts and make improvements. You can refer to the &lt;A href="https://techcommunity.microsoft.com/t5/device-management-in-microsoft/how-to-collect-custom-inventory-from-azure-ad-joined-devices/ba-p/2280850" target="_blank" rel="noopener"&gt;blog&lt;/A&gt; my colleague recently wrote about how these capabilities can be used to various scenarios.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Agent Reach:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;To ensure the coverage of ConfigMgr client meets the SLA (95%), we closely track over all reach by comparing it against overall discovered devices. For AAD devices, we compare them against overall devices registered to AAD. We use a few reports to track this, examples of the datapoints we monitor – figure 2 and 3 below.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P class="lia-align-left"&gt;Fig 2: Report to track client install status per domain in the last 24 hours&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P class="lia-align-left"&gt;Fig 3: Reports for tracking onboarding methods. In this case most of them are auto upgrade since site is going through upgrade&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Agent Health:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;For tracking agent health, we look at several aspects like policy, heartbeat, and hardware inventory for tracking day to day trends; we call these operational metrics. For reporting health numbers, we rely on CCMEVAL data. We use a Power BI dashboard (fig:4) during daily standup calls for tracking and triggering investigations accordingly. Note that these are custom dashboards built on top of Power BI using transformations that aggregate data into Azure SQL.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P class="lia-align-left"&gt;Fig 4: Dashboard for tracking operational metrics&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Co-Mgmt enables us to look at different data points proactively and remediate issues from Intune. Given that these devices are communicating both with ConfigMgr and Intune, it enables us to look at interesting datapoints like devices that are active in one system and not in the other and vice versa. We use the dashboard below to track some of these aspects. We will be expanding to add more datapoints to this in the future. In fig:5, Intune CoMgmt means Intune is primary management authority and SCCM CoMgmt means Configuration Manager is primary management authority.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P class="lia-align-left"&gt;Fig 5: Co-Mgmt. Devices data points&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;On a weekly basis we track below insights and share it with leadership, partners, and broader teams.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P class="lia-align-left"&gt;Fig 6: Weekly Insights&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;Log Collection:&lt;/H1&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;As everyone can relate to, having the ability to capture logs is critical for understanding the issues at hand. In our environment we use various methods for capturing required logs without contacting users.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Using ConfigMgr Console using &lt;A href="https://docs.microsoft.com/en-us/mem/configmgr/core/clients/manage/client-notification#client-diagnostics" target="_blank" rel="noopener"&gt;Client Diagnostics&lt;/A&gt;, this can be used for both domain joined and AADJ (Azure Active Directory join) devices&lt;/LI&gt;
&lt;LI&gt;Through Just Enough Access (JEA)&lt;/LI&gt;
&lt;LI&gt;Through &lt;A href="https://docs.microsoft.com/en-us/mem/intune/remote-actions/collect-diagnostics" target="_self"&gt;Intune Client Diagnostics&lt;/A&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;STRONG&gt;JEA – &lt;/STRONG&gt;Just Enough Access functionality for getting restricted access to remote machines. We implemented a custom module to enable a few functionalities like log copy and client remediations. Refer to&lt;A href="https://docs.microsoft.com/en-us/powershell/scripting/learn/remoting/jea/overview?view=powershell-7.1" target="_self"&gt; JEA public documentation&lt;/A&gt; for additional information.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;Conclusion:&lt;/H1&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I hope this blog gave high level understanding of how we track and address Client health and reach trends internally. Most of the reporting we have is built in-house using ETLs and ADF pipelines to capture aggregated data from both ConfigMgr and Intune to determine the trends, setup alerting and take appropriate actions. This is unique to our environment and will take considerable hours to maintain which is outside the scope of this post. We plan to cover in a future blog post. We are working towards expanding health and reach for devices managed by Intune as primary management authority across all platforms. We will plan to blog about it once operationalize it. Thank you for reading! Please do share feedback in comments section.&lt;/P&gt;</description>
      <pubDate>Tue, 23 Nov 2021 15:18:13 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/device-management-in-microsoft/client-management/ba-p/2995389</guid>
      <dc:creator>saratc</dc:creator>
      <dc:date>2021-11-23T15:18:13Z</dc:date>
    </item>
    <item>
      <title>Dynamic Scaling of ConfigMgr Site Systems in Azure</title>
      <link>https://techcommunity.microsoft.com/t5/device-management-in-microsoft/dynamic-scaling-of-configmgr-site-systems-in-azure/ba-p/2337346</link>
      <description>&lt;P&gt;This post covers the vertical scaling of ConfigMgr Site Systems in Azure – to realize efficiency gains made available by the elasticity of the Azure Cloud.&amp;nbsp;The migration of the internal ConfigMgr infrastructure at Microsoft from on-prem to Azure has been described in a previous &lt;A href="https://www.microsoft.com/en-us/itshowcase/migrating-system-center-configuration-manager-on-premises-infrastructure-to-microsoft-azure" target="_blank" rel="noopener"&gt;case study&lt;/A&gt;. We aim to describe in this post the efficiencies we have been able to drive by scaling ConfigMgr Site Systems such as the Management Point, Distribution Point and Software Update Point to “right size” based on client traffic and compute demands.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;As the global scale of the Azure cloud continually expands, our team has been able to reap the associated benefits by seamlessly switching to newer VM SKUs. These typically offer better specs in the form of latest gen CPUs or potentially lower cost tiers, as seen with AMD SKUs. The VM resize involves a reboot/redeployment to the newer SKUs with little downtime and in some cases a prior request to Azure support to increase regional quota allocations. For our ConfigMgr Site Systems, this meant moving from the older F-series SKUs to the Fs_v2 series SKUs.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Client Traffic in the internal Microsoft environment typically follows a cyclical pattern where we observe CPU and Concurrent Connection Peaks early in the business day followed by a leveling off typically around afternoon hours. The rightsizing was aimed with this traffic pattern in mind, but our team initially limited the scope of the scaling solution to evenings and weekends to gather operational insights. Considering the example of Management Points, this meant that at the start of the business day our Site Systems would be scaled up to F8s_v2 to meet peak demands and when average CPU had been measured to be at a lower baseline level in the evening hours, the Site System would be scaled down to F4s_v2 or lower based on CPU load.&amp;nbsp;The sections below describe the high-level design details of the scaling solution.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;Runbook Overview&lt;/H3&gt;
&lt;P&gt;We use an Azure Automation PowerShell runbook to monitor various Virtual Machine groups. Each group typically has 3-8 VMs based on the Site System type and ConfigMgr Site/Region the VMs are located. For example, to handle client traffic in the Southeast Asia region, we have three VM groups for the DPs, MPs, and SUPs. The basic outline of the Runbook is located below:&lt;/P&gt;
&lt;DIV id="tinyMceEditorBankim Patel_0" class="mceNonEditable lia-copypaste-placeholder"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;For each VM group, the runbook will sequentially evaluate CPU load and the current SKU against a set of scale up and scale down thresholds. If the CPU is higher than the defined scale up threshold, say 90%, the automation will scale the VM up to the next SKU. Likewise, if the CPU is lower than the scale down threshold, say 40%, the automation will scale the VM down to the next lower SKU, else no changes are made.&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;The scaling logic allows us to ensure that there is only one VM per Site System type and ConfigMgr Site/Region that might be unavailable at a time. It also lets us set different configurations based on the Site System type.&amp;nbsp;To allow multiple VMs to scale simultaneously and lower the time to fully execute the Runbook, we modified the logic to process each VM group in parallel. This allows VMs from separate groups to scale simultaneously while still adhering to the downtime requirement described previously.&amp;nbsp;For more information about parallel execution, check out &lt;A href="https://devblogs.microsoft.com/powershell/powershell-foreach-object-parallel-feature/" target="_blank" rel="noopener"&gt;PowerShell Parallel Execution &lt;/A&gt;or &lt;A href="https://docs.microsoft.com/en-us/azure/automation/automation-powershell-workflow#:~:text=One%20advantage%20of%20Windows%20PowerShell%20Workflows%20is%20the,script%20block%20with%20multiple%20commands%20that%20run%20concurrently." target="_blank" rel="noopener"&gt;PowerShell Workflows for Automation Runbooks.&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Based on historical CPU and Connection trends, we found it useful to scale the Management Point VMs to F8s_v2 during business day mornings (around 6 am) to prepare for the inevitable traffic. Rather than letting each VM inevitably scale up during peak traffic resulting in VM downtime, we took a proactive approach by scaling up a few hours before peak traffic to ensure all client needs would be handled without those associated downtimes. Once the traffic decreases, the VMs would dynamically scale to a lower SKU as needed.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;Log Analytics Query&lt;/H3&gt;
&lt;P&gt;At present, the most important metric for our Scaling algorithm is the current CPU load for the VM. Our current source of this data is a Log Analytics Workspace where the associated Perf counter is logged every 60 seconds. After querying for the data, we average the results over a specified timespan which gives a single numerical average for the CPU. We have found the CPU load a useful indicator of the utilization of a virtual machine and have not had to consider any alternate metrics such as Current Connections yet. Listed below is a sample Log Analytics query for getting the CPU load of a VM.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="powerquery"&gt;Perf
| where Computer contains '&amp;lt;VmName&amp;gt;'
| where (CounterName == '% Processor Time') and InstanceName == '_Total'
| where ObjectName == 'Processor' 
| summarize CPU = percentile(CounterValue, 95) by bin(TimeGenerated, 1m), Computer, CounterName&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;
&lt;H3&gt;Scaling a Virtual Machine&lt;/H3&gt;
&lt;P&gt;When performing the scale up/down operation, we initially suppress alerts for the VM, update the VM and log the VM Name, CPU load, Old Size, New Size, Start Time, and End Time in a SQL Table. We have observed the average downtime for a VM performing a size change to be around 1-2 minutes, with services coming online in the next 30 seconds. A great blog post to read for more information about resizing VMs can be found here: &lt;A href="https://docs.microsoft.com/en-us/azure/virtual-machines/windows/resize-vm" target="_blank" rel="noopener"&gt;Resize a Windows VM in Azure - Azure Virtual Machines | Microsoft Docs&lt;/A&gt;. As each environment has its own business/availability requirements and Site System configuration, we are sharing a basic version of the Runbook code we implemented in the following &lt;A href="https://github.com/microsoft/Intune-DeviceAdmins/blob/bba9cdff85252000bc027405d44a9526e5b5514b/AutoScaling/AutoScalingCode" target="_blank" rel="noopener"&gt;link&lt;/A&gt;. The code can be modified as needed, but the crux of the scaling solution centers around the following snippet:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="powershell"&gt;Get-AzVM -ResourceGroupName $resourceGroup -VMName $vmName
if($cpu -ge 90) {
    $vm.HardwareProfile.vmsize = "&amp;lt;HigherVMSize&amp;gt;"
}
elseif($cpu -le 40) {
    $vm.HardwareProfile.vmsize = "&amp;lt;LowerVMSize&amp;gt;"
}
Update-AzVM -VM $vm -ResourceGroupName $resourceGroup&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;
&lt;H3&gt;A Typical Automation Day&lt;/H3&gt;
&lt;P&gt;A typical day sees the MP groups with the most scaling events and our DPs and SUPs rarely see scale changes. We’ve mentioned how the MPs in a region (say Redmond) would be forced to scale up to 6 AM. As the day progresses, each MP can downsize to F4s_v2 or F2s_v2 if the CPU falls below a threshold. By the end of the business day, the MPs will almost always downsize to F4s_v2 as CPU load decreases and may even downsize again to F2s_v2 during the night when activity is lowest. At 6 AM the next morning, the cycle repeats, bringing the MPs back to the baseline size of F8s_v2.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The number of size changes that occur throughout the day will depend on how often you run the Scaling Automation runbook. You want to be responsive to changing client traffic and varying CPU loads, so we run ours every 12 minutes. The minimum amount of time allowed when linking the Automation runbook to a schedule in Azure is 1 hour, but we use a workaround to call it more often. We call the runbook from a webhook using a Scheduled Task on a VM.&amp;nbsp;More information regarding this solution can be found in the following blog post: &lt;A href="https://docs.microsoft.com/en-us/azure/automation/automation-webhooks" target="_blank" rel="noopener"&gt;Start an Azure Automation runbook from a webhook&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;Auto Scale Power BI Report&lt;/H3&gt;
&lt;P&gt;To track the history of VM changes, we created a Power BI report that pulls data from the SQL table where each SKU change is stored. This report allows us to filter across different parameters and track detailed VM SKU change events. This report allows us to monitor abnormal automation behaviors in a way that is visually appealing.&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;Cost Savings&lt;/H3&gt;
&lt;P&gt;Over the past few months, we have seen steadily increasing savings rates for the VMs due to adding more VM groups to the scaling runbook and refining the logic for our specific needs.&amp;nbsp; In the month of March 2021, we were able to cut the costs of using VMs by 43%. To calculate this savings percentage, the predicted cost was based on how we handled VMs before implementing the autoscaling runbook, keeping all VMs at a specific SKU for the entire month. By comparing this to our actual costs for the month, which were 57% of that predicted value, we calculated a savings of 43%.&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;Future Goals/Conclusion&lt;/H3&gt;
&lt;P&gt;We aim to improve our scaling efficiency by investigating a switch to native Azure metrics and piloting the new Azure Monitor agent (preview). This would also enable us to overcome any potential latency issues when ingesting data into Log Analytics.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;We hope you’ve found this post useful, especially if you are leveraging a cloud provider for your ConfigMgr Infrastructure. We’ve tuned the solution to meet our business requirements and shifting a portion of our Co-Management workloads to Intune has allowed us to tolerate brief periods of downtime on individual VMs during business hours. We realize complexity and requirements will vary across environments, but there may be cost savings to generate even if similar scaling is restricted to nights or weekends.&lt;/P&gt;</description>
      <pubDate>Wed, 02 Jun 2021 16:40:35 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/device-management-in-microsoft/dynamic-scaling-of-configmgr-site-systems-in-azure/ba-p/2337346</guid>
      <dc:creator>Bankim Patel</dc:creator>
      <dc:date>2021-06-02T16:40:35Z</dc:date>
    </item>
    <item>
      <title>How to collect custom inventory from Azure AD Joined devices</title>
      <link>https://techcommunity.microsoft.com/t5/device-management-in-microsoft/how-to-collect-custom-inventory-from-azure-ad-joined-devices/ba-p/2280850</link>
      <description>&lt;P&gt;Kubilay Dagdelen on my team worked with several other folks to pull together a method for doing some custom inventory collection with Intune.&amp;nbsp; There are some performance delays that can be encountered if over-used, but it can be handy at times.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;ConfigMgr admins love extending hardware inventory and collecting data from Windows devices.&lt;BR /&gt;Did you know Intune can do the same?!&lt;BR /&gt;The answer is Intune PowerShell scripts! Also known as SideCar… IME… Intune Management Extensions…&lt;/P&gt;
&lt;P&gt;Well, IME is just another channel that runs parallel to MDM that sort of acts like the ConfigMgr client. We deliver different features over this channel: PowerShell scripts, Win32 apps, Proactive Remediation scripts, Win32 app log collection…&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;&lt;STRONG&gt;Can you give us an example?&lt;/STRONG&gt;&lt;BR /&gt;Maybe you are interested to know more about Win32_BIOS. &lt;BR /&gt;Run the following PowerShell one-liner on a device&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="powershell"&gt;Get-WmiObject -Class Win32_BIOS |
select CurrentLanguage,
Description,
EmbeddedControllerMajorVersion,
EmbeddedControllerMinorVersion,
Manufacturer,
ReleaseDate,
SerialNumber | ConvertTo-Json -Compress&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;Script outputs the following:&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Beautified:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="yaml"&gt;{
"CurrentLanguage": "en-US",
"Description": "N2EET43W (1.25 )",
"EmbeddedControllerMajorVersion": 1,
"EmbeddedControllerMinorVersion": 13,
"Manufacturer": "LENOVO",
"ReleaseDate": "20191028000000.000000+000",
"SerialNumber": "12345678"
}&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;Let’s create an Intune PowerShell script and deploy it to some users/devices to demonstrate Win32_BIOS data as an example.&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;Tip: &amp;lt;scriptId&amp;gt; is stored in the URL&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;You can access the data via the following Graph endpoint in graph explorer&lt;BR /&gt;&lt;A href="https://graph.microsoft.com/beta/deviceManagement/deviceManagementScripts/&amp;lt;scriptID&amp;gt;/deviceRunStates?$expand=managedDevice" target="_blank" rel="noopener"&gt;https://graph.microsoft.com/beta/deviceManagement/deviceManagementScripts/&amp;lt;scriptID&amp;gt;/deviceRunStates?$expand=managedDevice&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;It turns out that we store the above-mentioned script output in a property on the service side. If you are familiar with Graph Explorer, then you can take a look at the results&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;In the property “resultMessage”:&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;&lt;STRONG&gt;How do I see the data from all devices?&lt;/STRONG&gt;&lt;BR /&gt;Prerequisites:&lt;BR /&gt;Install-Module -Name Microsoft.Graph.Intune&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;You need one more script to retrieve your results from Graph…&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="powershell"&gt;Update-MSGraphEnvironment -SchemaVersion 'beta'
Connect-MSGraph

$result = Invoke-MSGraphRequest -HttpMethod GET -Url 'deviceManagement/deviceManagementScripts/b113448a-528a-4beb-b7d5-381a117d5184/deviceRunStates?$expand=managedDevice' | Get-MSGraphAllPages
$success = $result| Where-Object -Property errorCode -EQ 0
$resultMessage = $success.resultMessage 
$objResultMessage = $resultMessage | ConvertFrom-Json
$objResultMessage | Out-GridView 
&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;You can store the data in Log Analytics, SQL etc and visualize the way you want.&lt;BR /&gt;Enjoy!&lt;/P&gt;</description>
      <pubDate>Thu, 03 Jun 2021 15:14:08 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/device-management-in-microsoft/how-to-collect-custom-inventory-from-azure-ad-joined-devices/ba-p/2280850</guid>
      <dc:creator>MikeGriz</dc:creator>
      <dc:date>2021-06-03T15:14:08Z</dc:date>
    </item>
    <item>
      <title>So long, NAA</title>
      <link>https://techcommunity.microsoft.com/t5/device-management-in-microsoft/so-long-naa/ba-p/1821237</link>
      <description>&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;This post covers retirement of Network Access accounts&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;(NAA)&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;in the internal Microsoft environment, aided&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;by&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;simplified&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;authentication&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;to Management Point and Distribution Points in the form of Enhanced&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;HTTP&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;and related access scenarios.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:256}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Network access&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;accounts have&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;been&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;used for several years now in&amp;nbsp;current&amp;nbsp;and past releases of&amp;nbsp;Configuration&amp;nbsp;Man&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;a&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;ger&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;,&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;as&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;service accounts&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;used&amp;nbsp;by clients to&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;get&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;content from Distribution Points&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;ConfigMgr&amp;nbsp;Consultants&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;and&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Support Engineers&amp;nbsp;can&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;likely&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;recite&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;in their sleep&amp;nbsp;the&amp;nbsp;standard&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://docs.microsoft.com/en-us/mem/configmgr/core/plan-design/hierarchy/accounts#network-access-account" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;best practices&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;of&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;configuring&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;a low rights service account&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;for the NAA&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;and not&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;using&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;the same&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;account&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;for&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;Client Push&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;purposes.&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:256}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;The arrival of&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://docs.microsoft.com/en-us/mem/configmgr/core/plan-design/hierarchy/enhanced-http" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;Enhanced HTTP&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;was&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;well received&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;by our ops teams&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;as it&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;brought with it the prospect of&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;dropping&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;the NAA in favor of&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;token-based authentication.&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;In a zero&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;-&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;OSD, all Autopilot world, this becam&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;e&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;o&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;ne less&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;credential&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;to&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;manage&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;/rotate in our Key Vaults and&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;yet&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;another site-specific setting to no longer configure.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;It is important to&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;mention this is&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;a secondary&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;benefit&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;,&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;as the ability to&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;secure client communication without the&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;o&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;ver&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;head&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;of&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;PKI&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;certs is&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;the core&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;value add of E-HTTP&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;, amongst other&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://docs.microsoft.com/en-us/mem/configmgr/core/plan-design/hierarchy/enhanced-http#features" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;benefits&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;.&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Note: our colleagues on the dev team did caution us about&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;“&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Run from&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;DP&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;” scenarios in legac&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;y Packages&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;likely not&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;functioning&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;with the absence of the NAA,&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;but as we&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;main&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;ly leverage&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;Applications which&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;use&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;download/execute by default – this was not of much concern.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:256}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;The&amp;nbsp;docs&amp;nbsp;team has documented&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;in detail&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;the&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://docs.microsoft.com/en-us/mem/configmgr/core/clients/manage/azure-ccmsetup" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;workflow&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;a device&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;follows to authenticate via&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Azure&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;AD&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;user or device token.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;But what&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;about&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;devices that&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;cannot&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;leverage AAD/PKI?&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;This scenario is also supported&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;by&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;E-HTTP&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;and&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;the 2002 build&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;extended this further by&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;introduc&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;ing&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;the concept of&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;an&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;added&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://docs.microsoft.com/en-us/mem/configmgr/core/clients/deploy/deploy-clients-cmg-token" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;Management Point issued&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;token&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;that a client can&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;also&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;use for&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;CMG&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;communication&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;. This token can also&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;be bulk provisioned for&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;devices&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;with no corporate network connectivity&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:256}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;I&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;n classic&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;9&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;5&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;/&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;5&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;(80/20 for&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Sysadmins &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;), the&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;prospect of&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;NAA&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;removal&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;after enabling E-HTTP&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;in our environment required some&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;validation&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;to ensure that even&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;a pure Workgroup device would&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;not be&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;affected&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:256}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;In a lab&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;enabled for E-HTTP&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;with&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;two Site Systems:&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;MP1&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;(&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;MP&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;with&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;ConfigMgr&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;SSL Binding)&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;and&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;MP&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;DP&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;2&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;(&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;PKI based&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;HTTPS MP/DP&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;)&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;we see even&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;during client setup (ccmsetup.log) that with no PKI&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;cert&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;, the&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Workgroup&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;client&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;gets&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;site configuration&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;/DP&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;information from MP1 and&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;uses&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;token-based&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;authentication&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;against the MPDP2&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;(HTTPS)&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;to&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;get&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;content.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:256}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;We install the client on the device using this c&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;ommand: ccmsetup.exe SMSSITECODE=CM1 /mp:MP1.sccmtest.loc&amp;nbsp;SMSMP=MP1.sccmtest.loc&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:256}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Examining log snippets, we see the following:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:256}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;CCMSetup.log:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="html"&gt;Sending location request to 'MP1.sccmtest.loc' with payload '&amp;lt;SiteInformationRequest SchemaVersion="1.00"&amp;gt;&amp;lt;SiteCode Name="CM1"/&amp;gt;&amp;lt;/SiteInformationRequest&amp;gt;' 

Host=MPDP2.sccmtest.loc, Path=/CCMTOKENAUTH_SMS_DP_SMSPKG$/CM100002, Port=443, Protocol=https, CcmTokenAuth=0, Flags=0x11304, Options=0xe0 &lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Post&amp;nbsp;client&amp;nbsp;install, we see&amp;nbsp;in ClientIDMgrStartup.log&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;completion of client registration and&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;indication&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;that the self-prove token is now available. This&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;is the build 2002 feature mentioned above&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:256}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="html"&gt;[RegTask] - Client is registered. Server assigned ClientID is GUID:A-B-C-D-E. Approval status 1 

Updated registration hint. 

Self-prove token is renewed. &lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;In ClientLocation&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;.log&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;, we see the client&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;also&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;rotating over to the HTTPS Site System (MPDP2), despite the absence of&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;a local&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;PKI&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;cert&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;At this point the client retrieves the CCM Token&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;:&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:256}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="html"&gt;Getting CCM Token from STS server 'MPDP2.sccmtest.loc' 

Getting CCM Token from https://MPDP2.sccmtest.loc/CCM_STS 

Host=MPDP2.sccmtest.loc, Path=/CCM_STS, Port=443, Protocol=https, CcmTokenAuth=0, Flags=0x11204, Options=0x5c0 &lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;CCM_STS&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;.log&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;on&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;MPDP2 shows entries&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;indicating&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;validation of the&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;PreAuth&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;/&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;SelfProve&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;token&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:256}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="html"&gt;Incoming request URL: https://MPDP2.sccmtest.loc/CCM_STS  

Validated PreAuth SelfProve token. UniqueId: GUID:A-B-C-D-E. ClientKey: XYZ 

Validated CCM Auth header for client 'GUID: A-B-C-D-E’ 

Created SCCM token from self-prove pre-auth token  &lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Now for a Content Request&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;perhaps for&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;Software Center based app&amp;nbsp;install.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;CAS.log&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;on the client&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;displays the various DP&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;URLs&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;returned:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:256}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="html"&gt;Download started for content Content_8811d5c2-6028-4c53-bc15-032c212bc676.1 

Location update from CTM for content Content_8811d5c2-6028-4c53-bc15-032c212bc676.1 and request {B10D4C07-1B97-4EDB-9A95-D3ACF97FC97A} 

Matching DP location found 0 - http://MPDP2.sccmtest.loc/sms_dp_smspkg$/content_8811d5c2-6028-4c53-bc15-032c212bc676.1 (Locality: SUBNET) 

Matching DP location found 1 - http://MPDP2.sccmtest.loc/nocert_sms_dp_smspkg$/content_8811d5c2-6028-4c53-bc15-032c212bc676.1 (Locality: SUBNET) 

Matching DP location found 2 - https://MPDP2.sccmtest.loc/ccmtokenauth_sms_dp_smspkg$/content_8811d5c2-6028-4c53-bc15-032c212bc676.1 (Locality: SUBNET) &lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;And ContentTransferManager&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;.log shows client&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;switch&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;ing&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;over to the correct&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;HTTPS&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;URL&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;and&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;us&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;ing&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;the&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;CCM token:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="html"&gt;CTM job {E97B1E9D-CA16-4E86-82E1-BE6EE5BACB44} (corresponding DTS job {A14CFFE4-C27E-4DB1-B2EB-B9FE4C043994}) started download from 'http://MPDP2.sccmtest.loc/SMS_DP_SMSPKG$/Content_8811d5c2-6028-4c53-bc15-032c212bc676.1' for full content download. 

CTM job {E97B1E9D-CA16-4E86-82E1-BE6EE5BACB44} switched to location 'https://MPDP2.sccmtest.loc/CCMTOKENAUTH_SMS_DP_SMSPKG$/Content_8811d5c2-6028-4c53-bc15-032c212bc676.1' 

CTM job {E97B1E9D-CA16-4E86-82E1-BE6EE5BACB44} entered phase CCM_DOWNLOADSTATUS_DOWNLOADING_MANIFEST 

CTM job {E97B1E9D-CA16-4E86-82E1-BE6EE5BACB44} entered phase CCM_DOWNLOADSTATUS_PROCESSING_MANIFEST 

CTM job {E97B1E9D-CA16-4E86-82E1-BE6EE5BACB44} entered phase CCM_DOWNLOADSTATUS_PREPARING_DOWNLOAD 

CTM job {E97B1E9D-CA16-4E86-82E1-BE6EE5BACB44} entered phase CCM_DOWNLOADSTATUS_DOWNLOADING_DATA 

CTM job {E97B1E9D-CA16-4E86-82E1-BE6EE5BACB44} successfully processed download completion. &lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Note that in this scenario as well, the PKI based&amp;nbsp;HTTPS&amp;nbsp;DP is&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;used&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;.&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;So,&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;there you have it – evidence that the client leverages E-HTTP at the start and can&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;then&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;even&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;communicate&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;with PKI based Site Systems via&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;token-based&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;authentication.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;The inner workings are&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;likely best&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;left&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;for discussions&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;with the dev team at&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;an upcoming&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;AMA/conference, but&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;the log snippets and the previously documented workflow&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;essentially reveal&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;the CCM Token to be the primary identity token for the client. The device/user could present either AAD, bulk registration or self-&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;prove/PreAuth&amp;nbsp;token to the MP and get back the CCM token.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Any&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;other&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;content access tokens can be acquired thereafter.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559739&amp;quot;:160,&amp;quot;335559740&amp;quot;:240}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 27 Oct 2020 00:27:27 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/device-management-in-microsoft/so-long-naa/ba-p/1821237</guid>
      <dc:creator>Bankim Patel</dc:creator>
      <dc:date>2020-10-27T00:27:27Z</dc:date>
    </item>
  </channel>
</rss>

