Anpassade skript för efterlevnadsidentifiering för Microsoft Intune

Innan du kan använda anpassade inställningar för kompatibilitet med Microsoft Intune måste du skapa ett skript som identifierar anpassade kompatibilitetsinställningar på enheter. Vilket skript du använder beror på plattformen:

  • Windows-enheter använder ett PowerShell-skript.
  • Linux enheter kan köra skript på valfritt språk så länge motsvarande tolk har installerats och konfigurerats på enheten.

Identifieringsskriptet distribueras till enheter som en del av dina anpassade efterlevnadsprinciper. När efterlevnad körs på en enhet identifierar skriptet de inställningar som definierats i JSON-filen som du anger när du skapar efterlevnadsprincipen.

Alla identifieringsskript:

  • Läggs till i Intune innan du skapar en efterlevnadsprincip. När du har lagt till ett skript kan du välja när du skapar en efterlevnadsprincip med anpassade inställningar.
    • Varje identifieringsskript kan bara användas med en efterlevnadsprincip, och varje efterlevnadsprincip kan bara innehålla ett identifieringsskript.
    • Du kan inte ta bort identifieringsskript som har tilldelats en efterlevnadsprincip förrän du tar bort tilldelningen av skriptet från principen.
  • Kör på en enhet som tar emot efterlevnadsprincipen. Skriptet utvärderar villkoren för JSON-filen som du laddar upp när du skapar en anpassad efterlevnadsprincip.
  • Identifiera en eller flera inställningar, enligt definitionen i JSON, och returnera en lista över identifierade värden för dessa inställningar.

Dessutom powershell-skriptet för Windows:

  • Måste komprimeras till utdata resulterar i en enda rad. Följande skript måste till exempel innehålla return $hash | ConvertTo-Json -Compress som den sista raden:

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

Gränser

Om du vill returnera efterlevnadsdata till Intune måste skripten hålla sig inom följande gränser:

  • Skript får inte vara större än 1 MB vardera.
  • Utdata som genereras av varje skript får inte vara större än 1 MB.
  • Skript måste ha en begränsad körningstid:
    • På Linux måste skripten ta fem minuter eller mindre att köra.
    • Det måste ta 10 minuter eller mindre att köra skript i Windows.

Exempel på identifieringsskript för Windows

Följande exempel är ett PowerShell-exempelskript som du kan använda för Windows-enheter:

$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

I följande exempel visas utdata från exempelskriptet för Windows:

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

Exempel på identifieringsskript för Linux

Obs!

På Linux körs identifieringsskript i användarens kontext. De kan inte söka efter inställningar på systemnivå som kräver utökade privilegier. Ett exempel på den här begränsningen state/hash/etc/sudoers är filen.

Identifieringsskript för Linux kan anropa alla tolker som uppfyller dina krav. Kontrollera att den valda tolken är korrekt installerad och konfigurerad på målenheten innan du distribuerar skriptet. Om du vill ange tolken för ett skript inkluderar du en shebang-rad överst i skriptet, som anger sökvägen till tolkens binärfil.

Om skriptet till exempel ska använda Bash-gränssnittet som tolk lägger du till följande rad överst i skriptet:

#!/bin/bash

Om du vill använda Python anger du tolksökvägen. Lägg till exempel till följande rad överst i skriptet: #!/usr/bin/python3 eller #!/usr/bin/env python3

Tips

Om du vill hantera avbrott eller annulleringssignaler implementerar du en korrekt avslutningsmekanism i dina skript. När ett skript hanterar dessa signaler kan det utföra rensningsuppgifter och avslutas korrekt, så att resurserna släpps korrekt. Fånga till exempel signaler som SIGINT (avbrottssignal) eller SIGTERM (avslutningssignal) och definiera anpassade åtgärder som ska köras när de tas emot. Dessa åtgärder kan omfatta att stänga öppna filer, frigöra förvärvade lås eller rensa tillfälliga resurser.

Mer information finns i guiden Intune Linux anpassade efterlevnadsexempel.

Lägga till ett identifieringsskript i Intune

Innan du distribuerar skriptet i produktion testar du det i en isolerad miljö för att säkerställa att syntaxen du använder fungerar som förväntat.

Obs!

Arbetsflödet för skriptuppladdning stöder inte omfångstaggar. Du måste tilldelas standardomfångstaggen för att skapa, redigera eller visa anpassade identifieringsskript för efterlevnad.

  1. Logga in på Microsoft Intune administrationscenter och gå till Lägg till skript förenhetsefterlevnad> för slutpunktssäkerhet>>. Välj sedan din plattform.

  2. I Grundläggande anger du ett beskrivande namn för skriptet.

  3. Lägg till skriptet i Identifieringsskript iInställningar. Granska skriptet noggrant. Intune validerar inte skriptet för syntax- eller programmeringsfel.

  4. Endast för Windows – På inställningar konfigurerar du följande beteende för PowerShell-skriptet:

    • Kör det här skriptet med de inloggade autentiseringsuppgifterna – Som standard körs skriptet i systemkontexten på enheten. Ställ in det här värdet på Ja så att det körs i kontexten för den inloggade användaren. Om användaren inte är inloggad återgår skriptet som standard till systemkontexten.
    • Framtvinga signaturkontroll för skript – Mer information finns i about_Signing i PowerShell-dokumentationen.
    • Kör skript i 64-bitars PowerShell-värd – Som standard körs skriptet med hjälp av 32-bitars PowerShell-värden. Ställ in det här värdet på Ja för att tvinga skriptet att köras med 64-bitarsvärden i stället.
  5. Slutför processen för att skapa skript. Skriptet visas i fönstret Skript och kan väljas när du konfigurerar efterlevnadsprinciper .

Nästa steg