條件運算式是用於定義何時啟用藍圖配置的語法。每個條件運算式會評估裝置屬性或 Jamf 定義的屬性,以決定配置是否在裝置上啟用。當條件運算式為 true 時,配置即會啟用。當條件運算式為 false 時,配置在該裝置上保持非啟用狀態。您可以使用邏輯運算子連接多個運算式,以建立更複雜的條件。
狀態項目條件結構
每個條件運算式由三個部分組成:狀態項目、運算子和值。
注意:狀態項目是特定的 Apple 宣告式裝置管理項目。如需使用 Jamf 定義的屬性
@property(jamf.device.groups) 的相關資訊,請參閱 Jamf 屬性表。| 元素 | 語法 | 備註 |
|---|---|---|
| 狀態項目 | @status(item.name) | 裝置自行回報的事實。一律封裝於@status(item.name)中。 |
| 字串值 | 'iPhone' | 必須以單引號包裝。 |
| 布林值 | true / false | 無需引號。僅限小寫。 |
| 無條件 | (留空) | 藍圖會啟用範圍內所有裝置。 |
範例:
@status(device.model.family) == 'iPhone'常用狀態項目
狀態項目是可用於條件運算式中的裝置事實。如需完整清單,請參閱 GitHub 上的 apple/device-management/declarative/status 存放庫。
| 狀態項目 | 類型 | 範例值 |
|---|---|---|
device.model.family | 字串 | iPhone, iPad, Mac, AppleTV |
device.model.identifier | 字串 | iPhone15,2 |
device.os.version | 字串 | 17.4.1 |
device.identifier | 字串 | 裝置 UDID |
passcode.is-compliant | 布林 | true, false |
device.is-supervised | 布林 | true, false |
支援的運算子
| 運算子 | 含義 | 範例 |
|---|---|---|
== | 等於 | @status(device.model.family) == 'iPhone' |
!= | 不等於 | @status(device.model.family) != 'Mac' |
IN {…} | 符合清單中的任何值 | @status(device.model.family) IN {'iPhone', 'iPad'} |
< > <= >= | 數值/版本比較 | @status(device.os.version) >= '17.0' |
用於連接條件的邏輯運算子
| 關鍵字 | 含義 | 範例 |
|---|---|---|
AND | 兩個條件均須為 true | @status(device.model.family) == 'iPhone' AND @status(passcode.is-compliant) == true |
OR | 其中一個條件為 true 即可 | @status(device.model.family) == 'iPhone' OR @status(device.model.family) == 'iPad' |
NOT | 條件必須為 false | NOT @status(device.model.family) == 'Mac' |
狀態項目條件範例
| 場景 | 條件運算式 |
|---|---|
| 僅限 iPhone 裝置 | @status(device.model.family) == 'iPhone' |
| iPhone 或 iPad 裝置 | @status(device.model.family) IN {'iPhone', 'iPad'} |
| 具備合規密碼的受監管 iPhone 裝置 | @status(device.model.family) == 'iPhone' AND @status(device.is-supervised) == true AND @status(passcode.is-compliant) == true |
| iOS 17 或更新版本 | @status(device.os.version) >= '17.0' |
| Mac 電腦以外的所有裝置 | @status(device.model.family) != 'Mac' |
常見編寫錯誤
| 錯誤 | 不正確 | 正確 |
|---|---|---|
| 使用單等號而非雙等號 | @status(device.model.family) = 'iPhone' | @status(device.model.family) == 'iPhone' |
| 字串值缺少單引號 | @status(device.model.family) == iPhone | @status(device.model.family) == 'iPhone' |
| 字串值大小寫錯誤 | @status(device.model.family) == 'iphone' | @status(device.model.family) == 'iPhone' |
| 多個值使用 OR 鏈結而非 IN | ... == 'iPhone' OR ... == 'iPad' | ... IN {'iPhone', 'iPad'} |
| 布林值包含引號 | @status(passcode.is-compliant) == 'true' | @status(passcode.is-compliant) == true |
Jamf 屬性
使用 @property(jamf.device.groups) 根據裝置的裝置群組成員資格來鎖定裝置。裝置群組是在 Jamf 中定義的,並非 Apple 宣告式裝置管理的狀態項目。您無法搭配使用 @property(jamf.device.groups) 和 @status(jamf.device.groups)。
| 運算子 | 含義 | 範例 |
|---|---|---|
ANY … IN {…} | 裝置屬於所列群組中至少一個群組 | ANY @property(jamf.device.groups) IN {'groupA', 'groupB'} |
NONE … IN {…} | 裝置不屬於所列的任何群組 | NONE @property(jamf.device.groups) IN {'groupA', 'groupB'} |