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
- Windows-Dienste mit PowerShell verwalten
- Das PowerShell Skript
- Das Skript via Intune verteilen
- Service mit Proactive Remediations überwachen
- Was Intune (noch) nicht kann
- Wrapping Up
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
- 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:
- Geh zu Endpoint Analytics > Proactive Remediations
- 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.