Microsoft Entra Connect Sync:计划程序
本主题介绍 Microsoft Entra Connect Sync(同步引擎)中的内置计划程序。
2016 年 2 月版本 1.1.105.0 引入了此功能。
概述
Microsoft Entra Connect Sync 使用调度程序来同步本地目录中发生的更改。 有两个计划程序进程,一个用于密码同步,另一个用于对象/属性同步和维护任务。 本主题介绍后者。
在早期版本中,对象和属性的调度程序位于同步引擎外部。 它使用 Windows 任务计划程序或单独的 Windows 服务来触发同步过程。 计划程序在同步引擎的内置 1.1 版本中,并允许进行一些自定义。 新的默认同步频率为 30 分钟。
计划程序负责执行两项任务:
- 同步周期。 导入、同步和导出更改的过程。
- 维护任务。 续订密码重置和设备注册服务的密钥和证书(DRS)。 清除操作日志中的旧条目。
计划程序本身始终正在运行,但它可以配置为仅运行其中一个或没有这些任务。 例如,如果需要自己的同步周期过程,则可以在计划程序中禁用此任务,但仍运行维护任务。
重要
默认情况下,每 30 分钟运行一次同步周期。 如果修改了同步周期,则需要确保每 7 天至少运行一次同步周期。
- 增量同步需要在上次增量同步后的 7 天内发生。
- 需要自上次完全同步完成后 7 天内进行增量同步(紧随完全同步)。
如果未这样做,则可能会导致同步问题,而你需要运行完全同步才能解决该问题。 这也适用于暂存模式下的服务器。
计划程序配置
若要查看当前的配置设置,请转到 PowerShell 并运行 Get-ADSyncScheduler
。 它显示的内容将如此图所示:
如果在运行此 cmdlet 时看到“同步命令或 cmdlet 不可用”,则说明 PowerShell 模块未加载。 如果在域控制器或具有比默认设置更高的 PowerShell 限制级别的服务器上运行 Microsoft Entra Connect,则可能会出现此问题。 如果看到此错误,请运行 Import-Module ADSync
以使 cmdlet 可用。
- AllowedSyncCycleInterval。 Microsoft Entra ID 允许的同步周期之间的最短时间间隔。 无法进行比此设置更频繁的同步,否则将不受支持。
- CurrentlyEffectiveSyncCycleInterval。 当前实施的时间表。 它的值与 CustomizedSyncInterval 相同(如果已设置),如果该值不比 AllowedSyncInterval 更频繁。 如果使用版本低于 1.1.281,并且更改了 CustomizedSyncCycleInterval,则此更改将在下一个同步周期完成后生效。 从版本 1.1.281 起,更改将立即生效。
- CustomizedSyncCycleInterval。 如果希望计划程序以默认 30 分钟以外的任何其他频率运行,请配置此设置。 在前图中,计划程序改为设置为每小时运行一次。 如果将此设置设置为低于 AllowedSyncInterval 的值,则使用后者。
- NextSyncCyclePolicyType。 Delta 或 Initial。 定义下次运行是只应处理增量更改,还是应执行完全导入和同步。后者也会重新处理任何新的或已更改的规则。
- NextSyncCycleStartTimeInUTC。 计划程序将启动下一个同步周期的时间。
- PurgeRunHistoryInterval。 应保留时间操作日志。 可以在同步服务管理器中查看这些日志。 默认值为保留这些日志 7 天。
- SyncCycleEnabled。 指示计划程序是否在其操作过程中运行导入、同步和导出进程。
- MaintenanceEnabled。 显示是否启用了维护过程。 它更新证书/密钥并清除操作日志。
- StagingModeEnabled。 显示是否启用了暂存模式。 如果启用此设置,将会阻止导出运行,但仍然运行导入和同步。
- SchedulerSuspended。 在升级期间由 Connect 进行设置,以暂时阻止调度程序运行。
可以使用 Set-ADSyncScheduler
更改其中一些设置。 可以修改以下参数:
- CustomizedSyncCycleInterval
- NextSyncCyclePolicyType
- PurgeRunHistoryInterval
- SyncCycleEnabled
- MaintenanceEnabled
在早期版本的 Microsoft Entra Connect 中,已在 Set-ADSyncScheduler 中公开 isStagingModeEnabled。 不支持设置此属性。 应只有 Connect 能修改属性 SchedulerSuspended。 不支持 直接使用 PowerShell 设置此功能。
计划程序配置存储在 Microsoft Entra ID 中。 如果你有临时服务器,主服务器上的任何更改也会影响临时服务器(IsStagingModeEnabled 除外)。
CustomizedSyncCycleInterval
语法:Set-ADSyncScheduler -CustomizedSyncCycleInterval d.HH:mm:ss
d - 天,HH - 小时,mm - 分钟,秒 - 秒
示例:Set-ADSyncScheduler -CustomizedSyncCycleInterval 03:00:00
将调度程序更改为每 3 小时运行一次。
示例:Set-ADSyncScheduler -CustomizedSyncCycleInterval 1.0:0:0
这些更改将计划程序更改为每天运行一次。
禁用计划程序
如果需要进行配置更改,则需要禁用计划程序。 例如,要配置筛选或对同步规则进行更改。
若要禁用计划程序,请运行 Set-ADSyncScheduler -SyncCycleEnabled $false
。
进行更改时,不要忘记使用 Set-ADSyncScheduler -SyncCycleEnabled $true
重新启用调度程序。
启动调度程序
计划程序默认每隔 30 分钟运行一次。 在某些情况下,可能需要在计划周期之间运行同步周期,或者需要运行其他类型。
增量同步周期
增量同步周期包括以下步骤:
- 在所有连接器上增量导入
- 在所有连接器上增量同步
- 在所有连接器上导出
完全同步周期
完整同步周期包括以下步骤:
- 在所有连接器上完全导入
- 在所有连接器上完全同步
- 在所有连接器上导出
可能是你有一个必须立即同步的紧急更改,这就是为什么需要手动运行循环的原因。
如果需要手动运行同步周期,则从 PowerShell 运行 Start-ADSyncSyncCycle -PolicyType Delta
。
若要启动完全同步周期,请从 PowerShell 提示符运行 Start-ADSyncSyncCycle -PolicyType Initial
。
运行完整同步周期可能非常耗时,请阅读下一部分,了解如何优化此过程。
不同配置更改所需的同步步骤
不同的配置更改需要不同的同步步骤,以确保更改正确应用于所有对象。
- 添加了更多要从源目录导入的对象或属性(通过添加/修改同步规则)
- 对于该源目录,连接器需要完全导入
- 对同步规则进行了更改
- 为适应已更改的同步规则,连接器需要执行全部同步。
- 更改了筛选设置,因此应包含不同的对象数
- 每个 AD 连接器都要求完全导入。 例外情况是基于已导入同步引擎的属性使用基于属性的筛选
自定义同步周期会运行增量同步和完全同步步骤的正确组合
若要避免运行完全同步周期,可以使用以下 cmdlet 标记特定连接器以运行完整步骤。
Set-ADSyncSchedulerConnectorOverride -Connector <ConnectorGuid> -FullImportRequired $true
Set-ADSyncSchedulerConnectorOverride -Connector <ConnectorGuid> -FullSyncRequired $true
Get-ADSyncSchedulerConnectorOverride -Connector <ConnectorGuid>
示例:如果更改了无需任何新导入的属性的连接器“AD Forest A”的同步规则,则可以运行以下 cmdlet 来运行增量同步周期,该周期也会对该连接器执行完全同步步骤。
Set-ADSyncSchedulerConnectorOverride -ConnectorName “AD Forest A” -FullSyncRequired $true
Start-ADSyncSyncCycle -PolicyType Delta
示例:如果你更改了连接器“AD Forest A”的同步规则,于是它们现在需要导入新属性,则可运行以下 cmdlet 以运行增量同步周期,该周期也会对该连接器执行完全导入、完全同步步骤。
Set-ADSyncSchedulerConnectorOverride -ConnectorName “AD Forest A” -FullImportRequired $true
Set-ADSyncSchedulerConnectorOverride -ConnectorName “AD Forest A” -FullSyncRequired $true
Start-ADSyncSyncCycle -PolicyType Delta
停止调度器
如果计划程序当前正在运行同步周期,则可能需要停止它。 例如,如果启动安装向导并收到此错误:
同步周期运行时,无法进行配置更改。 可以等到计划程序完成该过程,但也可以停止该过程,以便可以立即进行更改。 停止当前周期并不有害,待处理的更改将在下次运行时处理。
先要使用 PowerShell cmdlet
Stop-ADSyncSyncCycle
指示计划程序停止其当前周期。如果您使用的是版本 1.1.281 之前的构建,则停止调度程序不会停止当前连接器的正在进行的任务。 若要强制连接器停止,请执行以下操作:
- 从“开始”菜单启动 同步服务。 转到“连接器”,突出显示状态为“正在运行”的连接器,并从“操作”中选择“停止”。
调度器仍然处于活动状态,并将在下一个机会时再次启动。
自定义计划程序
本部分所述的 cmdlet 仅在内部版本 1.1.130.0 及更高版本中提供。
如果内置计划程序不满足要求,则可以使用 PowerShell 计划连接器。
Invoke-ADSyncRunProfile
可以用这种方式为连接器启动配置文件:
Invoke-ADSyncRunProfile -ConnectorName "name of connector" -RunProfileName "name of profile"
用于连接器名称和运行配置文件名称的名称可以在同步服务管理器 UI 中找到。
Invoke-ADSyncRunProfile
cmdlet 是同步的,也就是说,在 Connector 成功完成操作或出错之前,它不会交还控制权。
计划连接器时,建议按以下顺序安排它们:
- 从本地目录(如 Active Directory)中(完全/增量)导入
- 从 Microsoft Entra ID(完全/增量)导入
- 从本地目录(如 Active Directory)(完全/增量)同步
- 从 Microsoft Entra ID(完全/增量)同步
- 导出到 Microsoft Entra ID
- 导出到本地目录,例如 Active Directory
内置调度器用此顺序运行连接器。
Get-ADSyncConnectorRunStatus
还可以监视同步引擎,以查看它是否繁忙或空闲。 如果同步引擎处于空闲状态且未运行连接器,则此 cmdlet 将返回空结果。 如果连接器正在运行,它将返回连接器的名称。
Get-ADSyncConnectorRunStatus
在上图中,第一行来自同步引擎处于空闲的状态。 第二行来自 Microsoft Entra 连接器正在运行时。
计划程序和安装向导
如果启动安装向导,则计划程序将暂时暂停。 此行为是因为假定你进行了配置更改,如果同步引擎正在主动运行,则无法应用这些设置。 因此,请勿使安装向导保持打开状态,因为它停止同步引擎执行任何同步操作。
后续步骤
详细了解 Microsoft Entra Connect Sync 配置。
详细了解如何将本地标识与 Microsoft Entra ID 集成。