Script di individuazione della conformità personalizzati per Microsoft Intune

Prima di poter utilizzare le impostazioni personalizzate per la conformità con Microsoft Intune, è necessario creare uno script che individua le impostazioni di conformità personalizzate nei dispositivi. Lo script da usare dipende dalla piattaforma:

  • I dispositivi Windows usano uno script di PowerShell.
  • I dispositivi Linux possono eseguire script in qualsiasi lingua, purché nel dispositivo sia installato e configurato l'interprete corrispondente.

Lo script di individuazione viene distribuito ai dispositivi come parte dei criteri di conformità personalizzati. Quando la conformità viene eseguita in un dispositivo, lo script individua le impostazioni definite nel file JSON fornito durante la creazione del criterio di conformità.

Tutti gli script di individuazione:

  • vengono aggiunti a Intune prima della creazione di un criterio di conformità. Dopo aver aggiunto uno script, è possibile selezionarlo quando si creano criteri di conformità con impostazioni personalizzate.
    • Ogni script di individuazione può essere usato con un solo criterio di conformità e ogni criterio di conformità può includere un solo script di individuazione.
    • Non è possibile eliminare gli script di individuazione assegnati a un criterio di conformità finché non si annulla l'assegnazione dello script dal criterio.
  • Esecuzione in un dispositivo che riceve i criteri di conformità. Lo script valuta le condizioni del file JSON caricato durante la creazione di un criterio di conformità personalizzato.
  • Identifica una o più impostazioni, come definite in JSON, e restituisci un elenco dei valori individuati per tali impostazioni.

Inoltre, lo script di PowerShell per Windows:

  • Deve essere compresso per restituire i risultati in una singola riga. Ad esempio, lo script seguente deve includere return $hash | ConvertTo-Json -Compress come ultima riga:

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

Limiti

Per restituire correttamente i dati di conformità a Intune, gli script devono rispettare i limiti seguenti:

  • Gli script non possono essere più grandi di 1 megabyte (MB) ciascuno.
  • L'output generato da ogni script non può essere più grande di 1 MB.
  • Gli script devono avere un tempo di esecuzione limitato:
    • In Linux, l'esecuzione degli script deve richiedere al massimo cinque minuti.
    • In Windows, l'esecuzione degli script deve richiedere 10 minuti o meno.

Script di individuazione di esempio per Windows

L'esempio seguente è un esempio di script di PowerShell che è possibile usare per i dispositivi Windows:

$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

L'esempio seguente mostra l'output dello script di esempio per Windows:

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

Script di individuazione di esempio per Linux

Nota

In Linux, gli script di individuazione vengono eseguiti nel contesto dell'utente. Non è possibile controllare le impostazioni a livello di sistema che richiedono l'elevazione. Un esempio di questa limitazione è il state/hash/etc/sudoers del file.

Gli script di individuazione per Linux possono chiamare qualsiasi interprete che soddisfi le tue esigenze. Assicurarsi che l'interprete scelto sia installato e configurato correttamente nel dispositivo di destinazione prima di distribuire lo script. Per specificare l'interprete per uno script, includere una riga shebang nella parte superiore dello script, che indica il percorso al binario dell'interprete.

Ad esempio, se lo script deve usare la shell Bash come interprete, aggiungere la riga seguente all'inizio dello script:

#!/bin/bash

Per usare Python, specificare il percorso dell'interprete. Ad esempio, aggiungi la seguente riga all'inizio dello script: #!/usr/bin/python3 oppure #!/usr/bin/env python3

Consiglio

Per gestire gli interrupt o i segnali di annullamento, implementa meccanismi di terminazione normale nei tuoi script. Quando uno script gestisce questi segnali, può eseguire attività di pulizia e uscire normalmente, assicurando che le risorse vengano rilasciate correttamente. Ad esempio, cattura segnali come SIGINT (segnale di interruzione) o SIGTERM (segnale di terminazione) e definisci azioni personalizzate da eseguire quando vengono ricevuti. Queste azioni possono includere la chiusura di file aperti, il rilascio di blocchi acquisiti o la pulizia di risorse temporanee.

Per altre informazioni, vedere la guida Intune Linux Esempi di conformità personalizzati.

Aggiungere uno script di individuazione a Intune

Prima di distribuire lo script in produzione, testarlo in un ambiente isolato per assicurarsi che la sintassi utilizzata si comporti come previsto.

Nota

Il flusso di lavoro di caricamento degli script non supporta i tag di ambito. È necessario disporre del tag di ambito predefinito per creare, modificare o visualizzare script di individuazione della conformità personalizzati.

  1. Accedi all'interfaccia di amministrazione di Microsoft Intune e vai a Sicurezza degli endpoint>Aggiunta script>di conformità> dei dispositivi. Quindi scegli la piattaforma.

  2. In Nozioni di base, immetti un nome descrittivo per lo script.

  3. In Impostazioni, aggiungi lo script a Script di rilevamento. Esamina attentamente lo script. Intune non convalida lo script per errori di sintassi o di programmazione.

  4. Solo per Windows - In Impostazioni, configurare il comportamento seguente per lo script di PowerShell:

    • Eseguire questo script usando le credenziali di accesso – Per impostazione predefinita, lo script viene eseguito nel contesto di sistema nel dispositivo. Impostare questo valore su per fare in modo che venga eseguito nel contesto dell'utente connesso. Se l'utente non è connesso, per impostazione predefinita lo script torna al contesto di sistema.
    • Applicare il controllo della firma degli script : per altre informazioni, vedere about_Signing nella documentazione di PowerShell.
    • Eseguire lo script nell'host di PowerShell a 64 bit : per impostazione predefinita, lo script viene eseguito usando l'host di PowerShell a 32 bit. Impostare questo valore su per forzare l'esecuzione dello script usando invece l'host a 64 bit.
  5. Completa il processo di creazione dello script. Lo script viene visualizzato nel riquadro Script ed è disponibile per la selezione durante la configurazione dei criteri di conformità.

Passaggi successivi