Benutzerdefinierte Konformitätsermittlungsskripts für Microsoft Intune

Bevor Sie benutzerdefinierte Einstellungen für die Konformität mit Microsoft Intune verwenden können, müssen Sie ein Skript erstellen, das benutzerdefinierte Konformitätseinstellungen auf Geräten ermittelt. Das verwendete Skript hängt von der Plattform ab:

  • Windows-Geräte verwenden ein PowerShell-Skript.
  • Linux Geräte können Skripts in jeder Sprache ausführen, solange der entsprechende Interpreter auf dem Gerät installiert und konfiguriert ist.

Das Ermittlungsskript wird im Rahmen Ihrer benutzerdefinierten Konformitätsrichtlinien auf Geräten bereitgestellt. Wenn die Konformität auf einem Gerät ausgeführt wird, ermittelt das Skript die Einstellungen, die in der JSON-Datei definiert sind, die Sie beim Erstellen der Konformitätsrichtlinie angeben.

Alle Ermittlungsskripts:

  • Werden Intune hinzugefügt, bevor Sie eine Konformitätsrichtlinie erstellen. Nachdem Sie ein Skript hinzugefügt haben, kann es ausgewählt werden, wenn Sie eine Konformitätsrichtlinie mit benutzerdefinierten Einstellungen erstellen.
    • Jedes Ermittlungsskript kann nur mit einer Konformitätsrichtlinie verwendet werden, und jede Konformitätsrichtlinie kann nur ein Ermittlungsskript enthalten.
    • Sie können Ermittlungsskripts, die einer Konformitätsrichtlinie zugewiesen sind, erst löschen, wenn Sie die Zuweisung des Skripts aus der Richtlinie aufheben.
  • Führen Sie auf einem Gerät aus, das die Konformitätsrichtlinie empfängt. Das Skript wertet die Bedingungen der JSON-Datei aus, die Sie beim Erstellen einer benutzerdefinierten Konformitätsrichtlinie hochladen.
  • Identifizieren Sie eine oder mehrere Einstellungen, wie im JSON-Code definiert, und geben Sie eine Liste der ermittelten Werte für diese Einstellungen zurück.

Darüber hinaus kann das PowerShell-Skript für Windows:

  • Muss komprimiert werden, um Ergebnisse in einer einzelnen Zeile auszugeben. Beispielsweise muss das folgende Skript als letzte Zeile enthalten return $hash | ConvertTo-Json -Compress sein:

    $hash = @{ Manufacturer = $WMI_ComputerSystem.Manufacturer; BiosVersion = $WMI_BIOS.SMBIOSBIOSVersion; TPMChipPresent = $TPM.TPMPresent}
    return $hash | ConvertTo-Json -Compress
    

Einschränkungen

Damit Compliancedaten erfolgreich an Intune zurückgegeben werden können, müssen Ihre Skripts die folgenden Grenzwerte einhalten:

  • Skripts dürfen nicht größer als 1 MB sein.
  • Die von jedem Skript generierte Ausgabe darf nicht größer als 1 MB sein.
  • Skripts müssen über eine begrenzte Laufzeit verfügen:
    • Auf Linux dauert die Ausführung von Skripts maximal fünf Minuten.
    • Unter Windows muss die Ausführung von Skripts maximal 10 Minuten dauern.

Beispiel für ein Ermittlungsskript für Windows

Das folgende Beispiel ist ein PowerShell-Beispielskript, das Sie für Windows-Geräte verwenden können:

$WMI_ComputerSystem = Get-WMIObject -class Win32_ComputerSystem
$WMI_BIOS = Get-WMIObject -class Win32_BIOS
$TPM = Get-Tpm

$hash = @{ Manufacturer = $WMI_ComputerSystem.Manufacturer; BiosVersion = $WMI_BIOS.SMBIOSBIOSVersion; TPMChipPresent = $TPM.TPMPresent}
return $hash | ConvertTo-Json -Compress

Das folgende Beispiel zeigt die Ausgabe des Beispielskripts für Windows:

{"BiosVersion":"1.24","Manufacturer":"Microsoft Corporation","TPMChipPresent":true}

Beispiel für ein Ermittlungsskript für Linux

Hinweis

Auf Linux werden Ermittlungsskripts im Kontext des Benutzers ausgeführt. Sie können nicht nach Einstellungen auf Systemebene suchen, die eine Erhöhung erfordern. Ein Beispiel für diese Einschränkung ist die state/hash datei /etc/sudoers .

Ermittlungsskripts für Linux können jeden Interpreter aufrufen, der Ihre Anforderungen erfüllt. Stellen Sie sicher, dass der ausgewählte Interpreter ordnungsgemäß auf dem Zielgerät installiert und konfiguriert ist, bevor Sie das Skript bereitstellen. Um den Interpreter für ein Skript anzugeben, fügen Sie oben im Skript eine Shebang-Linie ein, die den Pfad zur Interpreter-Binärdatei angibt.

Wenn Ihr Skript beispielsweise die Bash-Shell als Interpreter verwenden soll, fügen Sie die folgende Zeile oben im Skript hinzu:

#!/bin/bash

Um Python zu verwenden, geben Sie den Interpreterpfad an. Fügen Sie beispielsweise die folgende Zeile am Anfang Ihres Skripts hinzu: #!/usr/bin/python3 oder #!/usr/bin/env python3

Tipp

Um Interrupts oder Abbruchsignale zu verarbeiten, implementieren Sie ordnungsgemäße Beendigungsmechanismen in Ihren Skripts. Wenn ein Skript diese Signale verarbeitet, kann es Bereinigungsaufgaben ausführen und ordnungsgemäß beenden, um sicherzustellen, dass Ressourcen ordnungsgemäß freigegeben werden. Beispielsweise können Sie Signale wie SIGINT (Interruptsignal) oder SIGTERM (Beendigungssignal) abfangen und benutzerdefinierte Aktionen definieren, die beim Empfang ausgeführt werden sollen. Diese Aktionen können das Schließen geöffneter Dateien, das Freigeben von erworbenen Sperren oder das Bereinigen temporärer Ressourcen umfassen.

Weitere Informationen finden Sie im Leitfaden Intune Linux Benutzerdefinierte Compliancebeispiele.

Hinzufügen eines Ermittlungsskripts zu Intune

Bevor Sie Ihr Skript in der Produktion bereitstellen, testen Sie es in einer isolierten Umgebung, um sicherzustellen, dass sich die verwendete Syntax wie erwartet verhält.

Hinweis

Der Skriptuploadworkflow unterstützt keine Bereichstags. Ihnen muss das Standardbereichstag zugewiesen sein, um benutzerdefinierte Konformitätsermittlungsskripts erstellen, bearbeiten oder anzeigen zu können.

  1. Melden Sie sich beim Microsoft Intune Admin Center an, und wechseln Sie zu Endpunktsicherheit>Gerätekonformität>Skripts>Hinzufügen. Wählen Sie dann Ihre Plattform aus.

  2. Geben Sie unter Grundlagen einen beschreibenden Namen für das Skript ein.

  3. Fügen Sie unter Einstellungen Ihr Skript zum Erkennungsskript hinzu. Überprüfen Sie Ihr Skript sorgfältig. Intune überprüft das Skript nicht auf Syntax- oder Programmierfehler.

  4. Nur Für Windows : Konfigurieren Sie unter Einstellungen das folgende Verhalten für das PowerShell-Skript:

    • Ausführen dieses Skripts mit den angemeldeten Anmeldeinformationen : Standardmäßig wird das Skript im Systemkontext auf dem Gerät ausgeführt. Legen Sie diesen Wert auf Ja fest, damit er im Kontext des angemeldeten Benutzers ausgeführt wird. Wenn der Benutzer nicht angemeldet ist, wird das Skript standardmäßig auf den Systemkontext zurückgesetzt.
    • Überprüfung der Skriptsignatur erzwingen – Weitere Informationen finden Sie unter about_Signing in der PowerShell-Dokumentation.
    • Ausführen eines Skripts im 64-Bit-PowerShell-Host : Standardmäßig wird das Skript mit dem 32-Bit-PowerShell-Host ausgeführt. Legen Sie diesen Wert auf Ja fest, um die Ausführung des Skripts mithilfe des 64-Bit-Hosts zu erzwingen.
  5. Schließen Sie den Skripterstellungsprozess ab. Das Skript wird im Bereich Skripts angezeigt und kann beim Konfigurieren von Konformitätsrichtlinien ausgewählt werden.

Nächste Schritte