Windows-Dienste zu verwalten, gehört zu den klassischen Aufgaben in der Systemadministration. Aber was, wenn Du das über Service Intune tun willst? Leider bietet die Intune-Oberfläche keine direkte Option, um Starttypen oder den Status von Diensten zu steuern. Die Lösung? PowerShell-Skripte und Proaktive Remediation.

Ich musste sicherstellen, dass der Smart Card Removal Policy Dienst (SCPolicySvc) immer auf "Automatisch" steht und auch läuft. Der Hintergrund ist simpel: Dieser Dienst sperrt den PC, wenn jemand eine Smartcard entfernt – ein wichtiger Sicherheitsaspekt.

Ich zeig Dir jetzt Schritt für Schritt, wie ich das Ganze mit einem Plattform-Skript in Intune gelöst habe.

Table of Contents

Warum ich das gebraucht habe

Ich war an einer Smartcard-Implementierung dran und habe gemerkt, dass der Dienst auf manchen Geräten deaktiviert oder nur manuell gestartet war. Dadurch funktionierte die Sicherheitsrichtlinie nicht zuverlässig.

Um das Verhalten zu vereinheitlichen, habe ich ein PowerShell-Skript geschrieben und es über Intune als Plattform-Skript verteilt.

Windows-Dienste mit PowerShell verwalten

Bevor wir zu Intune springen, schauen wir uns kurz an, wie man Windows-Dienste lokal mit PowerShell verwaltet. Das gleiche Prinzip verwenden wir später in unserem Intune-Skript.

Den Dienstnamen finden

Um alle Dienste aufzulisten:

Get-Service | Sort-Object DisplayName | Out-GridView

Oder nach einem bestimmten Begriff suchen:

Get-Service | Where-Object { $_.DisplayName -like '*smart card*' }

So findest Du den technischen Namen des Dienstes – der ist entscheidend für PowerShell und Intune.

Startup Type setzen

Mit Set-Service kannst Du den Starttyp festlegen:

Set-Service -Name "<ServiceName>" -StartupType Automatic

Mögliche Starttypen:

  • Automatic
  • Manual
  • Disabled

Und so startest oder stoppst Du den Dienst:

Start-Service -Name "<ServiceName>"
Stop-Service -Name "<ServiceName>"

Das ist die Grundlage für das anschliessende Intune-Skript.

Das PowerShell Skript

Hier ist das Skript, das ich verwende. Es stellt den Starttyp auf "Automatisch" und startet den Dienst, falls er nicht läuft:

$ScriptName = "WIN-S-D-ServiceAutostart_SmartCardRemovalPolicy"
Start-Transcript -Path "$env:ProgramData\Microsoft\IntuneManagementExtension\Logs\$ScriptName.log" -Force

# Define service name
$ServiceName = "SCPolicySvc" # https://learn.microsoft.com/en-us/windows/security/identity-protection/smart-cards/smart-card-removal-policy-service

# Check if the service exists before modifying it
if (Get-Service -Name $ServiceName -ErrorAction SilentlyContinue) {
    try {
        Set-Service -Name $ServiceName -StartupType Automatic -ErrorAction Stop
        Write-Output "Successfully set $ServiceName to Automatic startup."

        # Start service if not running
        if ($Service.Status -ne 'Running') {
            Start-Service -Name $ServiceName -ErrorAction Stop
            Write-Output "Successfully started $ServiceName."
        } else {
            Write-Output "$ServiceName is already running."
        }

    } catch {
        Write-Error "Error while configuring $ServiceName : $_"
    }
} else {
    Write-Warning "Service $ServiceName not found."
}

Stop-Transcript

Das Skript erledigt drei wichtige Dinge:

  • Erstellt ein Log mit Start-Transcript für bessere Nachverfolgbarkeit
  • Setzt den Dienst auf "Automatisch"
  • Startet den Dienst, wenn er noch nicht läuft

Ich füge übrigens immer einen Microsoft Learn Link als Kommentar ein – direkt beim Dienstnamen.
Damit sieht jeder sofort, wofür der Dienst gut ist und kann die Doku einfach überprüfen.

Das Skript via Intune verteilen

So verteilst Du das PowerShell-Skript über Intune:

  • Gehe zu Intune Admin Center > Geräte > Windows > Skripte / Plattformskripte
  • Klick auf Hinzufügen
Intune, create new platform script
  • Vergib einen passenden Namen
  • Lade die Skriptdatei hoch und stelle sicher, dass sie nicht als aktueller Benutzer ausgeführt wird – Dienste brauchen Systemrechte
  • Weise das Skript einer Gruppe zu
  • Fertig ✅ (warte ein paar Minuten, bis es angewendet wird 😉)

Service mit Proactive Remediations überwachen

Falls Du sicherstellen willst, dass der Dienst auch in Zukunft korrekt läuft, setz auf Proaktive Remediations:

  1. Geh zu Endpoint Analytics > Proactive Remediations
  2. Erstelle ein neues Paket mit den selben Einstelungen wie im Platform Skript.

Ich hab dir das fertige Remediation-Paket dafür auf GitHub abglegt – einfach downloaden und loslegen:

Was Intune (noch) nicht kann

Im Moment kannst Du in Intune keine Windows-Dienste direkt konfigurieren – also Starttyp oder Status ändern. Deshalb brauchst Du Skripte.

Hoffentlich kommt da mal was von Microsoft. Aber bis dahin: wir scripten.

Wrapping Up

Wenn Du einen Windows-Dienst über Service Intune verwalten willst, brauchst Du PowerShell und die passenden Intune-Features. Bei mir sorgt das Skript dafür, dass der SCPolicySvc immer aktiv ist – und damit die Smartcard-Richtlinie sauber greift.

Du kannst das Prinzip natürlich auf jeden anderen Dienst anwenden. Einfach den Namen im Skript austauschen und los geht’s.