You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Azure二级逻辑应用仅在VM启用时段触发夜间启停操作?

解决方案

你的表达式存在两个问题:一是括号语法不匹配,二是跨年度日期的比较逻辑错误(greaterOrEquals(utcNow('MMdd'), '1201') and lessOrEquals(utcNow('MMdd'), '0101')永远为false,因为字符串'1201'比'0101'大,没有日期能同时满足这两个条件)。以下是修正后的可行方案:

核心逻辑梳理

首先明确VM的启用时段:

  • 4月整月(0401-0430)
  • 12月1日至次年1月31日

正确的触发条件表达式

方案1:按月份简化判断(推荐)

直接判断是否处于4月、12月或1月,逻辑简洁且覆盖所有启用时段:

@or(
    and(greaterOrEquals(utcNow('MMdd'), '0401'), lessOrEquals(utcNow('MMdd'), '0430')),
    or(equals(utcNow('MM'), '12'), equals(utcNow('MM'), '01'))
)

方案2:精确到日期区间(含跨年处理)

如果需要严格匹配12月1日至1月31日的日期范围,可使用以下表达式,通过拆分跨年度的区间来避免字符串比较的逻辑错误:

@or(
    and(greaterOrEquals(utcNow('MMdd'), '0401'), lessOrEquals(utcNow('MMdd'), '0430')),
    greaterOrEquals(utcNow('MMdd'), '1201'),
    lessOrEquals(utcNow('MMdd'), '0131')
)

配置步骤

  1. 给第二个逻辑应用添加** recurrence 触发器**(比如设置为每天定时触发,对应夜间关闭、白天开启的时间点)
  2. 找到触发器的「Run only if」选项,将上述表达式粘贴进去
  3. 保存配置后,触发器只会在VM启用时段内触发,避免在VM应关闭的时段执行操作

注意事项

如果你的VM启用时段是基于本地时间而非UTC时间,需要用convertTimeZone函数转换时间,以北京时间为例:

@or(
    and(greaterOrEquals(convertTimeZone(utcNow(), 'UTC', 'China Standard Time', 'MMdd'), '0401'), lessOrEquals(convertTimeZone(utcNow(), 'UTC', 'China Standard Time', 'MMdd'), '0430')),
    or(equals(convertTimeZone(utcNow(), 'UTC', 'China Standard Time', 'MM'), '12'), equals(convertTimeZone(utcNow(), 'UTC', 'China Standard Time', 'MM'), '01'))
)

内容的提问来源于stack exchange,提问作者Jerry T.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 04:13:15