Microsoft Intune 的自訂合規性探索指令碼

在您可以使用自訂設定來符合 Microsoft Intune 之前,您必須建立可探索裝置上自訂合規性設定的指令碼。 您使用的指令碼取決於平台:

  • Windows 裝置使用 PowerShell 指令碼。
  • Linux 設備可以使用任何語言運行腳本,只要在設備上安裝和配置相應的解釋器即可。

探索指令碼會部署到裝置,做為自訂合規性原則的一部分。 當合規性在裝置上執行時,指令碼會探索您在建立合規性原則時提供的 JSON 檔案中定義的設定。

所有探索指令碼:

  • 在建立合規性原則之前,已新增至 Intune。 新增指令碼之後,可在使用自訂設定建立合規性原則時加以選取。
    • 每個探索指令碼只能與一個合規性原則搭配使用,且每個合規性原則只能包含一個探索指令碼。
    • 在從原則取消指派指令碼之前,您無法刪除指派給合規性原則的探索指令碼。
  • 在收到合規性原則的裝置上執行。 該指令碼會在建立自訂合規性原則時評估您上傳的 JSON 檔案條件。
  • 識別 JSON 中定義的一或多個設定,並傳回這些設定的探索到值清單。

此外,適用於 Windows 的 PowerShell 指令碼:

  • 必須壓縮才能以單行輸出結果。 例如,下列指令碼必須包含 return $hash | ConvertTo-Json -Compress 為最後一行:

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

限制

若要成功將合規性資料傳回至 Intune,您的指令碼必須保持在下列限制內:

  • 每個指令碼大小不能超過 1 MB (MB) 。
  • 每個指令碼產生的輸出不能大於 1 MB。
  • 指令碼必須有有限的執行時間:
    • 在 Linux 上,指令碼必須需要五分鐘或更短的時間才能執行。
    • 在 Windows 上,指令碼必須花費 10 分鐘或更短的時間才能執行。

適用於 Windows 的範例探索指令碼

下列範例是可用於 Windows 裝置的 PowerShell 指令碼範例:

$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

下列範例顯示 Windows 範例指令碼的輸出:

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

適用於 Linux 的範例探索指令碼

注意事項

在 Linux 上,探索指令碼會在使用者的內容中執行。 他們無法檢查需要提升權限的系統層級設定。 此限制的範例是 state/hash 檔案的 /etc/sudoers 。

適用於 Linux 的探索指令碼可以呼叫任何符合您需求的解釋器。 在部署腳本之前,請確保所選口譯器在目標裝置上正確安裝和配置。 若要指定指令碼的解釋器,請在指令碼頂部包含一條 shebang 行,指示解釋器二進位檔的路徑。

例如,如果您的指令碼應該使用 Bash shell 做為解釋器,請在指令碼頂端新增以下行:

#!/bin/bash

若要使用 Python,請指定解釋器路徑。 例如,將下列行新增至指令碼的頂端: #!/usr/bin/python3 或 #!/usr/bin/env python3

提示

若要處理中斷或取消訊號,請在指令碼中實作平滑終止機制。 當腳本處理這些訊號時,它可以執行清理任務並正常退出,確保正確釋放資源。 例如,攔截 SIGINT (中斷訊號) 或 SIGTERM 等訊號 (終止訊號) ,並定義收到自訂動作時要執行的自訂動作。 這些動作可能包括關閉開啟的檔案、釋放取得的鎖定或清除暫存資源。

如需詳細資訊,請參閱 Intune Linux 自訂合規性範例指南。

將探索指令碼新增至 Intune

在生產環境中部署腳本之前,請在隔離的環境中進行測試,以確保您使用的語法如預期般運作。

注意事項

指令碼上傳工作流程不支援範圍標籤。 您必須獲派預設範圍標記才能建立、編輯或檢視自訂合規性探索指令碼。

  1. 登入 Microsoft Intune 系統管理中心,然後移至 [端點安全性>] 裝置合規性>指令碼>新增。 然後選擇您的平台。

  2. 在 [基本] 上,輸入指令碼的描述 性名稱 。

  3. 在 [設定] 上,將您的指令碼新增至 偵測指令碼。 請仔細檢閱您的腳本。 Intune 不會驗證指令碼是否有語法或程式設計錯誤。

  4. 僅限 Windows - 在 [設定] 中,針對 PowerShell 指令碼設定下列行為:

    • 使用登入的認證執行此指令碼 – 根據預設,指令碼會在裝置上的系統內容中執行。 將此值設定為 Yes ,使其在登入使用者的內容中執行。 如果使用者未登入,指令碼會預設回到系統內容。
    • 強制執行指令碼簽章檢查 – 如需詳細資訊,請參閱 PowerShell 文件中的 about_Signing 。
    • 在 64 位元 PowerShell 主機中執行指令碼 – 根據預設,指令碼會使用 32 位元 PowerShell 主機執行。 將此值設定為 Yes ,強制改用 64 位元主機執行指令碼。
  5. 完成指令碼建立程序。 指令碼會出現在 [指令碼 ] 窗格中,可在設定合規性原則時加以選取。

後續步驟