了解应用程序部署客户端组件

适用于: Configuration Manager(current branch)

应用程序部署评估和强制操作由客户端上的 DCM 代理和 CI 代理组件处理。 本文介绍典型的 DCM 和 CI 代理作业的工作原理。

DCM 代理

DCM 代理是负责评估配置项目(包括应用程序)的高级客户端组件。 激活或强制实施部署时,会创建一个 DCM 代理作业,该作业读取分配策略并确定需要执行的操作。 可以使用 DCM 代理作业 ID 在客户端的 DCMAgent.log 中跟踪此活动,该 ID 可通过查找应用程序唯一 ID 进行标识。

设备部署

  • 对于 “必需 部署”,DCMAgent.log 将显示适用的操作。 这些操作可能会有所不同,具体取决于部署截止时间是否已过。

    # Evaluation Job example:
    DCMAgentJob({A9E850E2-91B0-4122-94FD-D14EDF925AF7}): CDCMAgentJob::PopulateCIsFromAssignment - CI policy Id:ScopeId_B63CEBE7-8A69-4FBE-994F-5AD0A8488D27/RequiredApplication_fc76ef0a-3ab0-4110-8cce-1addc36d0225 version:3 with actions: Evaluation, Content Download
    
    # Enforcement Job example:
    DCMAgentJob({4C8A9F6E-390B-450E-B505-B5698DB68EDD}): CDCMAgentJob::PopulateCIsFromAssignment - CI policy Id:ScopeId_B63CEBE7-8A69-4FBE-994F-5AD0A8488D27/RequiredApplication_fc76ef0a-3ab0-4110-8cce-1addc36d0225 version:3 with actions: Evaluation, Install, Uninstall, Update, Look-ahead Install, Look-ahead Uninstall, Look-ahead Update
    
  • 对于 可用 部署,DCMAgent.log 显示部署 is not mandatory。 对于这些部署,应用程序评估已完成,但除非用户启动安装,否则会跳过强制实施。

    # Evaluation Job example:
    DCMAgentJob({E353BF94-D7ED-4ADD-AF0F-9273F6A67FC1}): CDCMAgentJob::PopulateCIsFromAssignment - [SCAN] CI policy Id :ScopeId_B63CEBE7-8A69-4FBE-994F-5AD0A8488D27/RequiredApplication_fc76ef0a-3ab0-4110-8cce-1addc36d0225 version:3 - Assignment:{3AC57DFE-3F87-4C59-930B-B9F57CB41B91} is not mandatory.
    
    # Enforcement Job (user initiated) example:
    Request to enforce application ConfigMgr Toolkit(ScopeId_B63CEBE7-8A69-4FBE-994F-5AD0A8488D27/Application_fc76ef0a-3ab0-4110-8cce-1addc36d0225.3) immediately for target: machine with action(s): Evaluation, Install, Update
    CDCMAgentJobMgr::CreateInteractiveJob - Queuing new job: {D331249E-F7DE-481B-A497-8E8B5E7B91C3}
    
    

用户部署

  • 对于 “必需 部署”,DCMAgent.log 将显示适用的操作。 这些操作可能会有所不同,具体取决于部署截止时间是否已过。

    # Evaluation Job example:
    DCMAgentJob({65D9688D-1781-4DA3-B07A-193D481251C6}): CDCMAgentJob::PopulateCIsFromAssignment - CI policy Id:ScopeId_C8F7EAE6-DBA8-4970-B3FF-47ED706868DE/RequiredApplication_6b39398b-fd20-47ca-bd68-074274509f98 version:2 with actions: Evaluation, Content Download
    
    # Enforcement Job example:
    DCMAgentJob({2B0DA272-FC65-4F31-9557-C4D840D650F1}): CDCMAgentJob::PopulateCIsFromAssignment - CI policy Id:ScopeId_C8F7EAE6-DBA8-4970-B3FF-47ED706868DE/RequiredApplication_6b39398b-fd20-47ca-bd68-074274509f98 version:2 with actions: Evaluation, Install, Uninstall, Update, Look-ahead Install, Look-ahead Uninstall, Look-ahead Update
    
  • 对于 可用 部署,将创建 DCM 代理作业,以便在用户启动应用程序安装时进行评估和执行。

    # Evaluation Job example:
    DCMAgentJob({FBB44C84-DB06-41F7-8DC1-D9BA368F0C20}): CDCMAgentJob::PopulateCIsFromAssignment - [SCAN] CI policy Id :ScopeId_C8F7EAE6-DBA8-4970-B3FF-47ED706868DE/RequiredApplication_6b39398b-fd20-47ca-bd68-074274509f98 version:2 - Assignment:{7EA17128-EB4F-448A-88A7-B865E7DA228C} is not mandatory.
    
    # Enforcement Job example:
    CAppMgmtSDK::EnforceAppPolicy ScopeId_C8F7EAE6-DBA8-4970-B3FF-47ED706868DE/RequiredApplication_6b39398b-fd20-47ca-bd68-074274509f98.
    CDCMAgentJobMgr::CreateInteractiveJob - Queuing new job: {7936D7F3-24B0-401D-BADD-59EB5B49C2C2}
    

CI 代理

CI 代理是负责评估和修正配置项目的客户端组件。 DCM 代理读取分配策略,并为 CI 代理组件创建一个作业以执行请求的操作。 DCMAgent.log 记录 CI 代理作业 ID,这对于在客户端上的 CIAgent.log 中跟踪 CI 代理活动很有用。

DCMAgentJob({E353BF94-D7ED-4ADD-AF0F-9273F6A67FC1}): CDCMAgent::InitiateCIAgentJob - Starting CI Agent Job {57AF6FA1-3482-4469-9881-A63F41D18406} for target: machine. Refer to this CI agent job ID in ciagent.log for more details

典型的 CI 代理作业会经历多个阶段,可以通过筛选 CI 代理作业 ID 上的 CIAgent.log ,然后查找 TransitionState来标识这些阶段。 应用程序部署 CI 代理作业的一些关键阶段包括:

  • 正在下载的 API

    • 在此阶段,将下载评估应用程序所需的应用程序元数据。 元数据包括检测方法、要求规则、全局条件等。可以在 CIDownloader.logDataTransferService.log 中跟踪此活动。 对于 可用 部署,此过程在应用程序的首次评估期间发生。 但是,对于 “必需 部署”,此过程在下载策略后立即发生。
  • InvokingSdmMethod

    • 在此阶段,应用程序检测方法用于检查是否已安装应用程序并确定所需的状态。 可以在 AppDiscovery.logAppIntentEval.log 中跟踪此活动。 有关此阶段的详细信息,请参阅 应用程序评估
  • StateDownloadingContents

    • 在此阶段,如有必要,将下载应用程序内容。 可以在 CAS.logContentTransferManager.logLocationServices.logDataTransferService.log 中跟踪此活动。 有关此阶段的详细信息,请参阅 应用程序下载
  • StateEnforcingCIs

    • 在此阶段,将启动应用程序安装。 可以在 AppEnforce.log 中跟踪此活动。 有关此阶段的详细信息,请参阅 应用程序安装
  • StateEnforcementReporting

    • 在此阶段,将记录应用程序安装状态,以便向管理点报告。 可以在 StateMessage.log 中跟踪此活动。

尽管 CI 代理作业会经历所有阶段,但如果不需要,它会跳过该阶段。 例如,对于 可用 部署,将跳过 StateDownloadingContents 和 StateEnforcingCis 阶段,直到用户尝试从软件中心安装应用程序。 但是,对于 “必需 部署”,StateDownloadingContents 阶段会在激活分配时根据需要 (下载应用程序内容) ,但如果截止时间为将来,则跳过 StateEnforcingCIs 阶段。 通过在 CI 代理作业 ID 上进行筛选并查找 Skipping policy,可以在 CIAgent.log 中观察到此行为。

{57AF6FA1-3482-4469-9881-A63F41D18406} - Skipping policy CI <CI Unique ID> and all dependents for ContentDownload task since CI action was not requested.
{57AF6FA1-3482-4469-9881-A63F41D18406} - Skipping policy CI <CI Unique ID> and all dependents for Enforce task since CI action was not requested.

后续步骤