共用方式為


Microsoft Intune 的自定義合規性探索腳本

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

  • Windows 裝置會使用 PowerShell 腳本。
  • Linux 裝置可以以任何語言執行腳本,只要在裝置上安裝並設定了對應的解釋器即可。

探索指令碼會部署至裝置,作為自訂合規性原則的一部分。 當合規性在裝置上執行時,指令碼會探索您也透過自訂合規性原則提供的 JSON 檔案所定義的設定。

所有探索指令碼:

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

此外,適用於 Windows 的 PowerShell 腳本:

  • 必須壓縮以單行輸出結果。
  • 例如: $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 中的探索指令碼會在使用者的內容中執行,因此無法檢查需要提高權限的系統層級設定。 這方面的一個例子是檔案的/etc/sudoersstate/hash

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

例如,如果您的腳本應該使用 Bash shell 作為解釋器,請在腳本頂部添加以下行:

[ !/bin/bash ]

如果您想要將 Python 用於指令碼,請指出解譯器的安裝位置。 例如,將下列內容新增至指令碼頂端: [ !/usr/bin/python3 ][ !/usr/bin/env python ]

建議的最佳實務:若要讓您的指令碼能夠處理中斷或取消訊號等案例,請實作正常終止機制。 當腳本正確快取並處理這些訊號時,腳本可以執行清理任務並正常退出,確保資源正確釋放。 例如,您可以捕獲特定信號,例如 SIGINT (中斷信號) 或 SIGTERM (終止信號) ,並定義在接收到這些信號時運行的自定義操作。 這些操作可能包括關閉開啟的檔案、釋放取得的鎖定或清理臨時資源。 正確處理訊號有助於維護腳本完整性並改善整體使用者體驗。

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

將探索腳本新增至 Intune

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

  1. 登入 Intune 系統管理中心Microsoft 然後移至 端點安全性>裝置合規性腳>>新增> (選擇您的平臺)

  2. [基本] 上,提供 [名稱]。

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

  4. 僅適用於 Windows - 在 [設定] 上,設定 PowerShell 腳本的下列行為:

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

由於將這些腳本上傳至 Microsoft Intune 系統管理中心的工作流程不支援範圍標籤,因此您必須指派預設範圍標籤,才能建立、編輯或查看自定義合規性探索腳本。

後續步驟