Поделиться через


Логические функции для шаблонов ARM

Resource Manager предоставляет ряд функций для выполнения сравнений в шаблонах Azure Resource Manager (шаблон ARM):

Совет

Bicep рекомендуется, так как он предлагает те же возможности, что и шаблоны ARM, и синтаксис проще использовать. Дополнительные сведения см. в разделе логических bool функций и логических операторов.

и

and(arg1, arg2, ...)

Проверяет, являются ли все значения параметров истинными.

Функция and не поддерживается в Bicep. Вместо этого используйте оператор &>.

Параметры

Параметр Обязательное поле Type Описание
arg1 Да boolean Первое значение, которое необходимо проверить, имеет ли значение true.
arg2 Да boolean Второе значение, которое необходимо проверить, имеет ли значение true.
дополнительные аргументы No boolean Дополнительные аргументы, чтобы проверить, верно ли они.

Возвращаемое значение

Возвращает результат True, если все значения соответствуют истине. В противном случае — False.

Примеры

В следующем примере показано, как использовать функцию logical :

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "andExampleOutput": {
      "type": "bool",
      "value": "[and(bool('true'), bool('false'))]"
    },
    "orExampleOutput": {
      "type": "bool",
      "value": "[or(bool('true'), bool('false'))]"
    },
    "notExampleOutput": {
      "type": "bool",
      "value": "[not(bool('true'))]"
    }
  }
}

Выходные данные из предыдущего примера:

Имя. Type значение
andExampleOutput Bool False
orExampleOutput Bool Истина
notExampleOutput Bool False

bool

bool(arg1)

Преобразует параметр в логическое значение.

В Bicep используйте логическую функцию bool.

Параметры

Параметр Обязательное поле Type Описание
arg1 Да строка или целое число Значение, которое необходимо преобразовать в логическое.

Возвращаемое значение

Логическое выражение преобразованного значения.

Замечания

Для получения логических значений также можно использовать операторы true () и false ().

Примеры

В следующем примере показано, как использовать bool строку или целое число:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "trueString": {
      "type": "bool",
      "value": "[bool('true')]"
    },
    "falseString": {
      "type": "bool",
      "value": "[bool('false')]"
    },
    "trueInt": {
      "type": "bool",
      "value": "[bool(1)]"
    },
    "falseInt": {
      "type": "bool",
      "value": "[bool(0)]"
    }
  }
}

Выходные данные значений по умолчанию из предыдущего примера:

Имя. Type значение
trueString Bool Истина
falseString Bool False
trueInt Bool Истина
falseInt Bool False

false

false()

Возвращает значение false.

Функция false недоступна в Bicep. Вместо этого используйте ключевое слово false.

Параметры

Функция false не принимает никаких параметров.

Возвращаемое значение

Логическое значение, которое всегда является ложным.

Пример

В следующем примере возвращается ложное выходное значение:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "falseOutput": {
      "type": "bool",
      "value": "[false()]"
    }
  }
}

Выходные данные из предыдущего примера:

Имя. Type значение
falseOutput Bool False

if

if(condition, trueValue, falseValue)

Возвращает значение в зависимости от того, имеет ли условие значение true или false.

Функция if не поддерживается в Bicep. Вместо нее используйте оператор ?:.

Параметры

Параметр Обязательное поле Type Описание
condition Да boolean Значение, указывающее, имеет ли значение true или false.
trueValue Да строка, целое число, объект или массив Возвращаемое значение, если условие выполняется.
falseValue Да строка, целое число, объект или массив Возвращаемое значение, если условие не выполняется.

Возвращаемое значение

Возвращает второй параметр, если первый параметр имеет значение True (Истина). В противном случае возвращает третий параметр.

Замечания

Для условия True вычисляется только истинное значение. Для условия False вычисляется только ложное значение. С помощью функции if можно включать выражения, которые являются только условно допустимыми. Например, можно сослаться на ресурс, который существует при одном условии, но не существует при другом. Пример условной оценки выражений показан в следующем разделе.

Обратите внимание, что приведенное выше правило применяется только в том случае, если условие можно оценить в начале процесса развертывания шаблона. Например, нельзя использовать reference() в условии.

Примеры

В следующем примере показано, как использовать функцию if :

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [
  ],
  "outputs": {
    "yesOutput": {
      "type": "string",
      "value": "[if(equals('a', 'a'), 'yes', 'no')]"
    },
    "noOutput": {
      "type": "string",
      "value": "[if(equals('a', 'b'), 'yes', 'no')]"
    },
    "objectOutput": {
      "type": "object",
      "value": "[if(equals('a', 'a'), json('{\"test\": \"value1\"}'), json('null'))]"
    }
  }
}

Выходные данные из предыдущего примера:

Имя. Type значение
yesOutput Строка yes
noOutput Строка no
objectOutput Object { "test": "value1" }

В следующем примере шаблона показано использование этой функцию с выражениями, которые являются только условно допустимыми.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "vmName": {
      "type": "string"
    },
    "location": {
      "type": "string"
    },
    "logAnalytics": {
      "type": "string",
      "defaultValue": ""
    }
  },
  "resources": [
   {
      "condition": "[not(empty(parameters('logAnalytics')))]",
      "type": "Microsoft.Compute/virtualMachines/extensions",
      "apiVersion": "2025-04-01",
      "name": "[format('{0}/omsOnboarding', parameters('vmName'))]",
      "location": "[parameters('location')]",
      "properties": {
        "publisher": "Microsoft.EnterpriseCloud.Monitoring",
        "type": "MicrosoftMonitoringAgent",
        "typeHandlerVersion": "1.0",
        "autoUpgradeMinorVersion": true,
        "settings": {
          "workspaceId": "[if(not(empty(parameters('logAnalytics'))), reference(parameters('logAnalytics'), '2015-11-01-preview').customerId, null())]"
        },
        "protectedSettings": {
          "workspaceKey": "[if(not(empty(parameters('logAnalytics'))), listKeys(parameters('logAnalytics'), '2015-11-01-preview').primarySharedKey, null())]"
        }
      }
    }
  ],
  "outputs": {
    "mgmtStatus": {
      "type": "string",
      "value": "[if(not(empty(parameters('logAnalytics'))), 'Enabled monitoring for VM!', 'Nothing to enable')]"
    }
  }
}

not

not(arg1)

Преобразует логическое значение в противоположное ему значение.

Функция not не поддерживается в Bicep. Вместо нее используйте оператор !.

Параметры

Параметр Обязательное поле Type Описание
arg1 Да boolean Преобразуемое значение .

Возвращаемое значение

Возвращает значение True (Истина), если параметр имеет значение False (Ложь). Возвращает значение False (Ложь), если параметр имеет значение True (Истина).

Примеры

В следующем примере показано, как использовать функцию logical :

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "andExampleOutput": {
      "type": "bool",
      "value": "[and(bool('true'), bool('false'))]"
    },
    "orExampleOutput": {
      "type": "bool",
      "value": "[or(bool('true'), bool('false'))]"
    },
    "notExampleOutput": {
      "type": "bool",
      "value": "[not(bool('true'))]"
    }
  }
}

Выходные данные из предыдущего примера:

Имя. Type значение
andExampleOutput Bool False
orExampleOutput Bool Истина
notExampleOutput Bool False

В следующем примере используются notравные значения:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [
  ],
  "outputs": {
    "checkNotEquals": {
      "type": "bool",
      "value": "[not(equals(1, 2))]"
    }
  }
}

Выходные данные из предыдущего примера:

Имя. Type значение
checkNotEquals Bool Истина

or

or(arg1, arg2, ...)

Проверяет, имеет ли значение параметра значение true.

Функция or не поддерживается в Bicep. Вместо нее используйте оператор ||.

Параметры

Параметр Обязательное поле Type Описание
arg1 Да boolean Первое значение, которое необходимо проверить, имеет ли значение true.
arg2 Да boolean Второе значение, которое необходимо проверить, имеет ли значение true.
дополнительные аргументы No boolean Дополнительные аргументы, чтобы проверить, верно ли они.

Возвращаемое значение

Возвращает результат True, если какое-либо значение соответствует истине. В противном случае — False.

Примеры

В следующем примере показано, как использовать функцию logical :

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "andExampleOutput": {
      "type": "bool",
      "value": "[and(bool('true'), bool('false'))]"
    },
    "orExampleOutput": {
      "type": "bool",
      "value": "[or(bool('true'), bool('false'))]"
    },
    "notExampleOutput": {
      "type": "bool",
      "value": "[not(bool('true'))]"
    }
  }
}

Выходные данные из предыдущего примера:

Имя. Type значение
andExampleOutput Bool False
orExampleOutput Bool Истина
notExampleOutput Bool False

true

true()

Возвращает значение true.

Функция true недоступна в Bicep. Вместо этого используйте ключевое слово true.

Параметры

Функция true не принимает никаких параметров.

Возвращаемое значение

Логическое значение, которое всегда верно.

Пример

В следующем примере возвращается истинное выходное значение:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "trueOutput": {
      "type": "bool",
      "value": "[true()]"
    }
  }
}

Выходные данные из предыдущего примера:

Имя. Type значение
trueOutput Bool Истина

Следующие шаги