在您可以使用 自定義設定來符合 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/sudoers。state/hash
適用於 Linux 的探索指令碼可以呼叫任何符合您需求的解譯器。 在部署指令碼之前,請確定在目標裝置上正確安裝和設定所選的解釋器。 若要指定指令碼的解譯器,請在指令碼頂端包含 shebang 行,指出解譯器二進位檔的路徑。
例如,如果您的腳本應該使用 Bash shell 作為解釋器,請在腳本頂部添加以下行:
[ !/bin/bash ]
如果您想要將 Python 用於指令碼,請指出解譯器的安裝位置。 例如,將下列內容新增至指令碼頂端: [ !/usr/bin/python3 ] 或 [ !/usr/bin/env python ]
建議的最佳實務:若要讓您的指令碼能夠處理中斷或取消訊號等案例,請實作正常終止機制。 當腳本正確快取並處理這些訊號時,腳本可以執行清理任務並正常退出,確保資源正確釋放。 例如,您可以捕獲特定信號,例如 SIGINT (中斷信號) 或 SIGTERM (終止信號) ,並定義在接收到這些信號時運行的自定義操作。 這些操作可能包括關閉開啟的檔案、釋放取得的鎖定或清理臨時資源。 正確處理訊號有助於維護腳本完整性並改善整體使用者體驗。
如需詳細資訊,請參閱 Intune Linux 自訂合規性範例 指南。
將探索腳本新增至 Intune
在生產環境中部署腳本之前,請在隔離的環境中進行測試,以確保您使用的語法如預期般運作。
登入 Intune 系統管理中心Microsoft 然後移至 端點安全性>裝置合規性腳>本>新增> (選擇您的平臺) 。
在 [基本] 上,提供 [名稱]。
在 [設定] 上,將您的指令碼新增至 偵測指令碼。 仔細檢查您的腳本。 Intune 不會驗證腳本是否有語法或程式設計錯誤。
僅適用於 Windows - 在 [設定] 上,設定 PowerShell 腳本的下列行為:
- 使用登入的認證執行此腳本 – 根據預設,腳本會在裝置上的系統內容中執行。 將此值設定為 [是 ],以使其在登入使用者的內容中執行。 如果使用者未登入,指令碼預設會回到系統內容。
- 強制執行指令碼簽章檢查 — 如需詳細資訊,請參閱 PowerShell 文件中的 about_Signing 。
- 在 64 位 PowerShell 主機中執行指令碼 – 根據預設,指令碼會使用 32 位 PowerShell 主機執行。 將此值設定為 Yes ,以強制改用 64 位元主機執行指令碼。
完成指令碼建立程序。 腳本現在會顯示在 Microsoft Intune 系統管理中心的 [腳本] 窗格中,而且可在設定合規性原則時選取。
由於將這些腳本上傳至 Microsoft Intune 系統管理中心的工作流程不支援範圍標籤,因此您必須指派預設範圍標籤,才能建立、編輯或查看自定義合規性探索腳本。