<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Automation on Eriteach | Microsoft Cloud Tech</title><link>https://blog.eriteach.com/tags/automation/</link><description>Recent content in Automation on Eriteach | Microsoft Cloud Tech</description><generator>Hugo -- 0.155.1</generator><language>no</language><copyright>2024-2026 Robel Mehari. All rights reserved.</copyright><lastBuildDate>Thu, 23 Apr 2026 12:28:16 +0200</lastBuildDate><atom:link href="https://blog.eriteach.com/tags/automation/index.xml" rel="self" type="application/rss+xml"/><item><title>Jakten på zombie-programvare: Slik automatiserer jeg fjerning av uautoriserte og utdaterte apper</title><link>https://blog.eriteach.com/posts/zombie-apps-removal-intune-proactive-remediation/</link><pubDate>Wed, 15 Apr 2026 10:00:00 +0200</pubDate><guid>https://blog.eriteach.com/posts/zombie-apps-removal-intune-proactive-remediation/</guid><description>Min tilnærming til å bruke KQL i Defender for å finne uautorisert programvare, og hvordan jeg bruker Intune Proactive Remediations for å rydde opp automatisk.</description><content:encoded><![CDATA[<p>Shadow IT er den naturlige fienden til et rent programvareinventar. I mitt miljø har brukere med historiske lokaladministrator-rettigheter installert det de selv ønsket—uautoriserte nettlesere, utdaterte bilderedigeringsprogrammer og &ldquo;kjekke&rdquo; verktøy. Disse appene ble raskt en hodepine, spesielt når Microsoft Defender for Endpoint flagget dem som End-of-Life (EOL) eller End-of-Support (EOS).</p>
<p>I stedet for å bruke tid på å manuelt bla gjennom apper i portalen, har jeg utviklet en arbeidsflyt som starter med en dyp jakt i Defender og ender med automatisert fjerning via Intune.</p>
<h2 id="problemet-shadow-it-og-defender-alarmer">Problemet: Shadow IT og Defender-alarmer</h2>
<p>Jeg har sett det gang på gang: Defenders sårbarhetshåndtering viser 50 enheter med en utdatert versjon av GIMP eller en tilfeldig nettleser som Yandex. Dette er ikke apper vi har rullet ut; de er &ldquo;zombie-programvare&rdquo;—apper som ikke burde være der, som ikke får sikkerhetsoppdateringer, og som skaper unødvendig støy i sikkerhetsrapportene våre.</p>
<h2 id="steg-1-jakt-i-stor-skala-med-kql">Steg 1: Jakt i stor skala med KQL</h2>
<p>Jeg kaster ikke bort tid på å bla gjennom programvareoversikten i portalen app for app. I stedet bruker jeg <strong>KQL (Kusto Query Language)</strong> i Advanced Hunting for å få umiddelbar oversikt over hele flåten.</p>
<p>Jeg har utviklet dette skriptet for å kategorisere apper etter risiko (Høy/Medium/Lav), koble dem mot kjente sårbarheter (CVE-er) og beregne en <strong>Exposure Score</strong>. Dette er metoden jeg bruker for å bestemme hva som må fjernes umiddelbart og hva som kan vente.</p>
<p>Du finner mine komplette KQL-skript her: <a href="https://github.com/Thugney/eriteach-scripts/blob/main/intune/hunting/unwanted-apps.kql">unwanted-apps.kql</a> og <a href="https://github.com/Thugney/eriteach-scripts/blob/main/intune/hunting/eos-and-unwanted-summary.kql">eos-and-unwanted-summary.kql</a>.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">// MIN UNWANTED APP HUNTER - Eksempel på liste
</span></span><span class="line"><span class="cl">let HighRiskApps = dynamic([&#34;utorrent&#34;, &#34;anydesk&#34;, &#34;app_eksempel_1&#34;]);
</span></span><span class="line"><span class="cl">let MediumRiskApps = dynamic([&#34;steam&#34;, &#34;bluestacks&#34;, &#34;app_eksempel_2&#34;]);
</span></span><span class="line"><span class="cl">let LowRiskApps = dynamic([&#34;ccleaner&#34;, &#34;app_eksempel_3&#34;]);
</span></span><span class="line"><span class="cl">let UnwantedRegex = strcat(@&#34;(?i)(&#34;, strcat_array(HighRiskApps, &#34;|&#34;), &#34;|&#34;, strcat_array(MediumRiskApps, &#34;|&#34;), &#34;|&#34;, strcat_array(LowRiskApps, &#34;|&#34;), &#34;)&#34;);
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">// Inventar &amp; CVE Korrelering
</span></span><span class="line"><span class="cl">DeviceTvmSoftwareInventory
</span></span><span class="line"><span class="cl">| where isnotempty(SoftwareName)
</span></span><span class="line"><span class="cl">| extend MatchTarget = tolower(strcat(coalesce(SoftwareVendor, &#34;&#34;), &#34; &#34;, SoftwareName))
</span></span><span class="line"><span class="cl">| where MatchTarget matches regex UnwantedRegex
</span></span><span class="line"><span class="cl">| join kind=leftouter (
</span></span><span class="line"><span class="cl">    DeviceTvmSoftwareVulnerabilities
</span></span><span class="line"><span class="cl">    | summarize CveCount = dcount(CveId), MaxCvss = max(todouble(CvssScore)) by DeviceId, SoftwareName
</span></span><span class="line"><span class="cl">) on DeviceId, SoftwareName
</span></span><span class="line"><span class="cl">| extend ExposureScore = case(MatchTarget matches regex @&#34;(?i)(utorrent|bittorrent|anydesk)&#34;, 80.0, 40.0) // Min logikk for vekting
</span></span><span class="line"><span class="cl">| project DeviceName, SoftwareName, SoftwareVersion, CveCount, MaxCvss, ExposureScore
</span></span><span class="line"><span class="cl">| order by ExposureScore desc
</span></span></code></pre></div><p>Dette KQL-skriptet gir meg &ldquo;hitlisten&rdquo;. Når jeg har identifisert målene via spørringen, går jeg videre til automatisering.</p>
<h2 id="steg-2-automatisere-fjerningen-med-intune">Steg 2: Automatisere fjerningen med Intune</h2>
<p>Når KQL-jakten har identifisert målene, bruker jeg en &ldquo;Master Script&rdquo;-tilnærming i Intune Proactive Remediations. Jeg lager ikke egne pakker for hver enkelt app; jeg bruker en sentralisert liste basert på funnene fra KQL.</p>
<h3 id="strategien">Strategien</h3>
<p>Systemet bruker to skript: et <strong>Detection</strong>-skript som identifiserer om programvareen fra KQL-jakten finnes på enheten, og et <strong>Remediation</strong>-skript som fjerner den.</p>
<p>Jeg målretter disse &ldquo;zombiene&rdquo; ved hjelp av tre metoder:</p>
<ol>
<li><strong>Register-GUID-er:</strong> Finne den spesifikke MSI- eller installasjons-GUID-en.</li>
<li><strong>Wildcard i registeret:</strong> Finne nøkler som <code>HKLM:\... \Uninstall\Opera*</code>.</li>
<li><strong>Filstier:</strong> Sjekke etter spesifikke kjørbare filer.</li>
</ol>
<p>Viktigst av alt er at skriptene mine håndterer <strong>per-bruker-installasjoner</strong> ved å skanne <code>HKEY_USERS</code> (HKU). Dette sikrer at apper som skjuler seg i brukerens lokale profil ikke slipper unna.</p>
<h2 id="implementering-master-skriptene">Implementering: Master-skriptene</h2>
<p>Jeg har lagt ut de fullstendige skriptene i mitt <a href="https://github.com/Thugney/eriteach-scripts/tree/main/intune/remediations">GitHub-repositorium</a>.</p>
<h3 id="1-deteksjonsskriptet-detection">1. Deteksjonsskriptet (Detection)</h3>
<p>Skriptet går gjennom en <code>$zombieTargets</code>-matrise. Hvis et mål identifisert i KQL-jakten blir funnet på en enhet, avsluttes det med <strong>Exit 1</strong>, noe som trigger remedieringen.</p>
<h3 id="2-remedieringsskriptet-remediation">2. Remedieringsskriptet (Remediation)</h3>
<p>Når det trigges, prøver skriptet en lydløs avinstallering via registeret. Hvis det feiler (noe som ofte skjer med &ldquo;hjemmesnekrede&rdquo; installasjoner), stopper det tvangsmessig alle kjørende prosesser og sletter programmappen fullstendig.</p>
<h2 id="verifisering-slutte-sirkelen">Verifisering: Slutte sirkelen</h2>
<p>Etter at remedieringen er rullet ut, sjekker jeg resultatene slik:</p>
<ol>
<li><strong>Intune-konsollen:</strong> Overvåker &ldquo;Issue fixed&rdquo;-status i Proactive Remediations.</li>
<li><strong>Lokale logger:</strong> Sjekker <code>C:\ProgramData\Eriteach\Logs\</code> hvis jeg trenger å se hvorfor en spesifikk avinstallering feilet.</li>
<li><strong>Defender for Endpoint:</strong> Kjører KQL-spørringen på nytt etter noen dager for å se eksponeringsscoren falle etter hvert som zombie-appene forsvinner.</li>
</ol>
<h2 id="oppsummering">Oppsummering</h2>
<p>Jeg lar ikke uautorisert og utdatert programvare blåse opp sårbarhetsrapportene mine. Ved å starte med en KQL-jakt for å identifisere risikoen, og følge opp med Intune-automatisering, holder jeg miljøet rent uten manuelt arbeid.</p>
]]></content:encoded></item><item><title>Fjerning av Firefox i stor skala: Min tilnærming med Intune Proactive Remediation</title><link>https://blog.eriteach.com/posts/intune-proactive-remediation-remove-firefox/</link><pubDate>Mon, 02 Feb 2026 00:00:00 +0000</pubDate><guid>https://blog.eriteach.com/posts/intune-proactive-remediation-remove-firefox/</guid><description>Slik rydder jeg opp i uautoriserte Firefox-installasjoner på tvers av organisasjonen ved hjelp av Intune og Defender KQL.</description><content:encoded><![CDATA[<p>Når Mozilla Firefox markeres som usanksjonert i vårt miljø, er mitt neste trekk å rydde opp i eksisterende installasjoner på alle administrerte enheter.</p>
<p>Før vi standardiserte nettleserne våre, stod brukerne fritt til å installere det de ville, noe som førte til at Firefox ble spredt over hundrevis av maskiner. Jeg kaster ikke bort tid på manuell opprydding; jeg har automatisert hele prosessen.</p>
<h2 id="kartlegging-i-stor-skala-med-kql">Kartlegging i stor skala med KQL</h2>
<p>Jeg starter med å få et klart bilde av omfanget. Jeg bruker <strong>KQL (Kusto Query Language)</strong> i Defender Advanced Hunting for å se nøyaktig hvilke versjoner som finnes og hvor mange enheter som er berørt:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">// Min spørring for Firefox-kartlegging
</span></span><span class="line"><span class="cl">DeviceTvmSoftwareInventory
</span></span><span class="line"><span class="cl">| where SoftwareName contains &#34;Firefox&#34;
</span></span><span class="line"><span class="cl">| summarize DeviceCount = dcount(DeviceName), Versions = make_set(SoftwareVersion) by SoftwareName
</span></span><span class="line"><span class="cl">| order by DeviceCount desc
</span></span></code></pre></div><p>Denne spørringen gir meg umiddelbar oversikt over antall enheter og versjoner, noe jeg bruker for å målrette Intune-utbedringene mine effektivt.</p>
<h2 id="strategien-automatisere-oppryddingen">Strategien: Automatisere oppryddingen</h2>
<p>Jeg bruker Intune Proactive Remediation med et to-skripts system:</p>
<ul>
<li><strong>Deteksjon</strong>: Finner Firefox i registeret, Program Files og brukerprofiler.</li>
<li><strong>Utbedring (Remediation)</strong>: Fjerner alt—prosesser, filer, snarveier, tjenester og planlagte oppgaver.</li>
</ul>
<h3 id="deteksjonslogikk">Deteksjonslogikk</h3>
<p>Skriptet mitt skanner tre hovedområder hvor Firefox liker å gjemme seg:</p>
<ol>
<li><strong>Registeret</strong> - 64-bit/32-bit avinstalleringsnøkler og per-bruker installasjoner.</li>
<li><strong>Program Files</strong> - Standard installasjonsplasseringer.</li>
<li><strong>Brukerprofiler</strong> - AppData-mapper.</li>
</ol>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-powershell" data-lang="powershell"><span class="line"><span class="cl"><span class="nv">$findings</span> <span class="p">=</span> <span class="vm">@</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"><span class="nv">$uninstallPaths</span> <span class="p">=</span> <span class="vm">@</span><span class="p">(</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall&#34;</span>
</span></span><span class="line"><span class="cl"><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">foreach</span> <span class="p">(</span><span class="nv">$path</span> <span class="k">in</span> <span class="nv">$uninstallPaths</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="k">if</span> <span class="p">(</span><span class="nb">Test-Path</span> <span class="nv">$path</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nv">$apps</span> <span class="p">=</span> <span class="nb">Get-ItemProperty</span> <span class="s2">&#34;</span><span class="nv">$path</span><span class="s2">\*&#34;</span> <span class="n">-ErrorAction</span> <span class="n">SilentlyContinue</span> <span class="p">|</span>
</span></span><span class="line"><span class="cl">            <span class="nb">Where-Object</span> <span class="p">{</span> <span class="nv">$_</span><span class="p">.</span><span class="py">DisplayName</span> <span class="o">-like</span> <span class="s2">&#34;*Firefox*&#34;</span> <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="k">foreach</span> <span class="p">(</span><span class="nv">$app</span> <span class="k">in</span> <span class="nv">$apps</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nv">$findings</span> <span class="p">+=</span> <span class="s2">&#34;Registry: </span><span class="p">$(</span><span class="nv">$app</span><span class="p">.</span><span class="n">DisplayName</span><span class="p">)</span><span class="s2">&#34;</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">if</span> <span class="p">(</span><span class="nv">$findings</span><span class="p">.</span><span class="py">Count</span> <span class="o">-gt</span> <span class="mf">0</span><span class="p">)</span> <span class="p">{</span> <span class="n">exit</span> <span class="mf">1</span> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span> <span class="n">exit</span> <span class="mf">0</span> <span class="p">}</span>
</span></span></code></pre></div><p>Komplett skript: <a href="https://github.com/Thugney/eriteach-scripts/blob/main/intune/remediations/firefox-removal-detection.ps1">firefox-removal-detection.ps1</a></p>
<h2 id="selve-fjerningen-remediation">Selve fjerningen: Remediation</h2>
<p>Utbedringsskriptet mitt er designet for å være grundig. Det stopper alle aktive prosesser før det prøver å avinstallere, for å sikre at ingen filer er låst.</p>
<ol>
<li><strong>Stopp prosesser</strong> - Firefox, plugin-container og oppdateringsprogrammer.</li>
<li><strong>Avinstaller</strong> - Bruker avinstalleringsstrengen fra registeret (håndterer både helper.exe og msiexec).</li>
<li><strong>Opprydding</strong> - Sletter mapper i Program Files, ProgramData og AppData.</li>
<li><strong>Siste finpuss</strong> - Fjerner snarveier, tjenesten MozillaMaintenance og oppdateringsoppgaver.</li>
</ol>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-powershell" data-lang="powershell"><span class="line"><span class="cl"><span class="c"># Min liste over prosesser som skal stoppes</span>
</span></span><span class="line"><span class="cl"><span class="nv">$firefoxProcesses</span> <span class="p">=</span> <span class="vm">@</span><span class="p">(</span><span class="s2">&#34;firefox&#34;</span><span class="p">,</span> <span class="s2">&#34;firefox-esr&#34;</span><span class="p">,</span> <span class="s2">&#34;plugin-container&#34;</span><span class="p">,</span> <span class="s2">&#34;crashreporter&#34;</span><span class="p">,</span> <span class="s2">&#34;updater&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="k">foreach</span> <span class="p">(</span><span class="nv">$proc</span> <span class="k">in</span> <span class="nv">$firefoxProcesses</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="nb">Get-Process</span> <span class="n">-Name</span> <span class="nv">$proc</span> <span class="n">-ErrorAction</span> <span class="n">SilentlyContinue</span> <span class="p">|</span> <span class="nb">Stop-Process</span> <span class="n">-Force</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p>Komplett skript: <a href="https://github.com/Thugney/eriteach-scripts/blob/main/intune/remediations/firefox-removal-remediation.ps1">firefox-removal-remediation.ps1</a></p>
<h2 id="resultat-og-verifisering">Resultat og verifisering</h2>
<p>Jeg overvåker fremdriften direkte i Intune-portalen under <strong>Devices</strong> &gt; <strong>Scripts and remediations</strong>.</p>
<p>Suksess betyr at enhetene får status &ldquo;fixed&rdquo;. Jeg sjekker også mine egne logger på <code>C:\ProgramData\Eriteach\Logs\</code> hvis jeg ser installasjoner som krever en manuell titt.</p>
<h2 id="erfaringer">Erfaringer</h2>
<ul>
<li><strong>Brukerprofiler</strong> - Skriptet rydder alle profiler på maskinen. Jeg varsler alltid brukerne om at bokmerker og lagrede passord vil forsvinne.</li>
<li><strong>Tvangslukking</strong> - Siden jeg tvinger prosessen til å avslutte, kjører jeg denne utbedringen i vedlikeholdsvinduer for å minimere forstyrrelser.</li>
</ul>
<h2 id="relaterte-lenker">Relaterte lenker</h2>
<ul>
<li><a href="/posts/intune-proactive-remediation-firefox-update/">Auto-oppdater Firefox med Intune</a> - Min arbeidsflyt når jeg skal beholde Firefox, men holde den oppdatert.</li>
<li><a href="https://learn.microsoft.com/en-us/mem/intune/fundamentals/remediations">Intune Remediations oversikt</a></li>
<li><a href="https://learn.microsoft.com/en-us/defender-endpoint/software-inventory">Microsoft Defender programvareoversikt</a></li>
</ul>
]]></content:encoded></item><item><title>Fjerning av uautoriserte apper: Min arbeidsflyt med Intune Proactive Remediation</title><link>https://blog.eriteach.com/posts/remove-unauthorized-apps-intune-proactive-remediation/</link><pubDate>Sun, 01 Feb 2026 00:00:00 +0000</pubDate><guid>https://blog.eriteach.com/posts/remove-unauthorized-apps-intune-proactive-remediation/</guid><description>Slik bruker jeg Intune Proactive Remediation til å finne og fjerne uautoriserte apper som ble installert da brukerne hadde administratorrettigheter.</description><content:encoded><![CDATA[<p>I mitt miljø etterlot overgangen fra lokaladministrator til standardbruker seg et spor av &ldquo;shadow IT&rdquo;—Zoom, personlige verktøy og gammel programvare som ikke burde være der.</p>
<p>Jeg sjekker ikke hver enkelt enhet manuelt. I stedet har jeg bygget en arbeidsflyt som finner disse appene på tvers av hele flåten og fjerner dem automatisk.</p>
<h2 id="kartlegging-jakt-i-hele-flåten-med-kql">Kartlegging: Jakt i hele flåten med KQL</h2>
<p>Før jeg kan fjerne noe, må jeg vite nøyaktig hvor problemene ligger. Jeg bruker <strong>Microsoft Defender for Endpoint (MDE)</strong> for å finne disse appene på sekunder. I stedet for å bla i portalen, kjører jeg en KQL-spørring i Advanced Hunting for å identifisere høyrisiko-programvare:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">// Min spørring for kartlegging (Eksempel)
</span></span><span class="line"><span class="cl">DeviceTvmSoftwareInventory
</span></span><span class="line"><span class="cl">| where SoftwareName has_any (&#34;utorrent&#34;, &#34;anydesk&#34;, &#34;ccleaner&#34;)
</span></span><span class="line"><span class="cl">| project DeviceName, SoftwareName, SoftwareVersion
</span></span></code></pre></div><p>Dette gir meg &ldquo;hitlisten&rdquo; min. For en mer aggressiv tilnærming som også håndterer EOL- og EOS-programvare, bruker jeg arbeidsflyten for <a href="https://blog.eriteach.com/posts/zombie-apps-removal-intune-proactive-remediation/">Jakten på zombie-programvare</a>.</p>
<h2 id="automatisering-intune-proactive-remediation">Automatisering: Intune Proactive Remediation</h2>
<p>Når jeg har målene klare, bruker jeg Intune Proactive Remediation. Oppsettet mitt består av to skript:</p>
<ol>
<li><strong>Deteksjon</strong> - Sjekker om appen finnes (exit 1 = funnet, som trigger fjerning)</li>
<li><strong>Utbedring (Remediation)</strong> - Lydløs fjerning</li>
</ol>
<h3 id="min-konfigurasjon">Min konfigurasjon</h3>
<p>Jeg målretter apper via registeret, WMI eller programlisten. Vanligvis konfigurerer jeg deteksjonen ved å sette disse variablene:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-powershell" data-lang="powershell"><span class="line"><span class="cl"><span class="nv">$AppDisplayName</span> <span class="p">=</span> <span class="s2">&#34;Zoom&#34;</span>
</span></span><span class="line"><span class="cl"><span class="nv">$AppPublisher</span> <span class="p">=</span> <span class="s2">&#34;&#34;</span>
</span></span><span class="line"><span class="cl"><span class="nv">$AppProductCode</span> <span class="p">=</span> <span class="s2">&#34;{86B70A45-00A6-4CBD-97A8-464A1254D179}&#34;</span>
</span></span><span class="line"><span class="cl"><span class="nv">$UsePartialMatch</span> <span class="p">=</span> <span class="vm">$true</span>
</span></span></code></pre></div><p>Komplett skript: <a href="https://github.com/Thugney/eriteach-scripts/blob/main/proactive-remediation/Detect-UnwantedApp.ps1">Detect-UnwantedApp.ps1</a></p>
<h3 id="utbedringen-remediation">Utbedringen (Remediation)</h3>
<p>Når appen er oppdaget, henter utbedringsskriptet mitt avinstalleringsstrengen fra registeret eller bruker MSI-produktkoden for å fjerne appen lydløst.</p>
<p>Komplett skript: <a href="https://github.com/Thugney/eriteach-scripts/blob/main/proactive-remediation/Remove-UnwantedApp.ps1">Remove-UnwantedApp.ps1</a></p>
<h2 id="detaljer-om-utrulling">Detaljer om utrulling</h2>
<p>Slik har jeg satt det opp i min tenant:</p>
<ol>
<li><strong>Intune</strong> → <strong>Enheter</strong> → <strong>Utbedringer</strong></li>
<li><strong>Opprett skriptpakke</strong>: &ldquo;Fjern [AppNavn]&rdquo;</li>
<li><strong>Innstillinger</strong>:
<ul>
<li>Kjør skript i 64-bit PowerShell: <strong>Ja</strong></li>
<li>Kjør med påloggede legitimasjoner: <strong>Nei</strong> (kjører som SYSTEM)</li>
</ul>
</li>
<li><strong>Tidsplan</strong>: Daglig (jeg vil ha disse bort så fort som mulig)</li>
</ol>
<h2 id="erfaringer-og-avveininger">Erfaringer og avveininger</h2>
<ul>
<li><strong>Pilot først</strong> - Jeg kjører alltid deteksjon på en pilotgruppe før jeg aktiverer utbedring.</li>
<li><strong>Produktkoder endres</strong> - Jeg har lært at ulike versjoner ofte har ulike koder; KQL hjelper meg å finne alle variantene først.</li>
<li><strong>Risiko med delvis treff</strong> - Jeg bruker <code>$UsePartialMatch = $true</code> med forsiktighet for å unngå å fjerne tilleggsprogrammer (plugins) som jeg faktisk vil beholde.</li>
</ul>
<h2 id="relaterte-lenker">Relaterte lenker</h2>
<ul>
<li><a href="https://learn.microsoft.com/en-us/mem/intune/fundamentals/remediations">Microsoft: Proactive Remediations</a></li>
<li><a href="https://learn.microsoft.com/en-us/mem/intune/apps/intune-management-extension">Intune skriptkrav</a></li>
</ul>
]]></content:encoded></item></channel></rss>