在 MDM 中启用 ADMX 策略

从 Windows 10 开始,移动设备管理 (MDM) 策略配置支持已扩展,允许通过策略配置服务提供商 (CSP ) 访问所选组策略管理模板集 (适用于 Windows 电脑的 ADMX 策略) 。 在策略 CSP 中配置 ADMX 策略不同于配置传统 MDM 策略的典型方法。

启用策略的步骤摘要:

  • 从 ADMX 策略列表中查找策略。
  • 从 MDM 策略说明中找到组策略相关信息。
  • 使用组策略 编辑器确定是否需要参数来启用策略。
  • 为 SyncML 创建数据有效负载。

有关使用 Intune 的演练,请参阅支持提示:使用 Microsoft Intune 引入 Office ADMX策略和使用 Microsoft Intune 部署 ADMX 策略

启用策略

  1. ADMX 策略列表中查找策略。 需要策略说明中列出的以下信息。

    • GP 友好名称
    • GP 名称
    • GP ADMX 文件名
    • GP 路径
  2. 使用组策略 编辑器确定是否需要其他信息来启用策略。 运行 GPEdit.msc

    1. 选择“ 开始”,然后在文本框中键入 gpedit

    2. “最佳匹配”下,选择 “编辑组策略 ”以启动它。

      GPEdit 搜索。

    3. “本地计算机策略” 中,导航到要配置的策略。

      在此示例中,导航到 “管理模板 > 系统 > App-V”。

      App-V 策略。

    4. 双击“ 启用 App-V 客户端”。

      “选项”部分为空,这意味着不需要参数来启用策略。 如果“选项”部分不为空,请按照启用需要参数的策略中的过程操作

      启用 App-V 客户端。

  3. 创建 SyncML 以启用不需要任何参数的策略。

    在此示例中,将 “启用 App-V 客户端” 配置为 “已启用”。

    注意

    数据<>有效负载必须经过 XML 编码。 若要避免编码,可以使用 CData(如果 MDM 支持)。 有关详细信息,请参阅 CDATA 节。 如果使用Intune,请选择“字符串”作为数据类型。

    <SyncML xmlns="SYNCML:SYNCML1.2">
      <SyncBody>
        <Replace>
          <CmdID>2</CmdID>
          <Item>
            <Meta>
              <Format>chr</Format>
              <Type>text/plain</Type>
            </Meta>
            <Target>
              <LocURI>./Device/Vendor/MSFT/Policy/Config/AppVirtualization/AllowAppVClient </LocURI>
            </Target>
            <Data><Enabled/></Data>
          </Item>
        </Replace>
        <Final/>
      </SyncBody>
    </SyncML>
    

启用需要参数的策略

  1. 创建 SyncML 以启用需要参数的策略。

    在此示例中,策略位于 管理模板 > 系统 > App-V > 发布中。

  2. 双击“ 发布服务器 2 设置” 以查看启用此策略时需要配置的参数。

    启用发布服务器 2 策略。

    启用发布服务器 2 设置。

  3. 在 ADMX 文件中查找参数的变量名称。

    可以在策略 CSP 的策略说明中找到 ADMX 文件名。 在此示例中,文件名 appv.admx 列在 AppVirtualization/PublishingAllowServer2 中。

    发布服务器 2 策略说明。

  4. 导航到 C:\Windows\PolicyDefinitions (ADMX 文件) 的默认位置,然后打开 appv.admx。

  5. Publishing_Server2_policy搜索 GP 名称。

  6. 策略名称=“Publishing_Server2_Policy” 下,可以看到 <elements> 列出的 。 text idenum id 表示data id需要包含在 SyncML 数据有效负载中的 。 它们对应于你在组策略 编辑器中看到的字段。

    下面是 appv.admx 中的代码片段:

    <!-- Publishing Server 2  -->
    <policy name="Publishing_Server2_Policy" class="Machine" displayName="$(string.PublishingServer2)"
        explainText="$(string.Publishing_Server_Help)" presentation="$(presentation.Publishing_Server2)"
        key="SOFTWARE\Policies\Microsoft\AppV\Client\Publishing\Servers\2">
    <parentCategory ref="CAT_Publishing" />
    <supportedOn ref="windows:SUPPORTED_Windows7" />
    <elements>
    <text id="Publishing_Server2_Name_Prompt" valueName="Name" required="true"/>
    <text id="Publishing_Server_URL_Prompt" valueName="URL" required="true"/>
    <enum id="Global_Publishing_Refresh_Options" valueName="GlobalEnabled">
      <item displayName="$(string.False)">
        <value>
          <decimal value="0"/>
        </value>
      </item>
      <item displayName="$(string.True)">
        <value>
          <decimal value="1"/>
        </value>
      </item>
    </enum>
    <enum id="Global_Refresh_OnLogon_Options" valueName="GlobalLogonRefresh">
      <item displayName="$(string.False)">
        <value>
          <decimal value="0"/>
        </value>
      </item>
      <item displayName="$(string.True)">
        <value>
          <decimal value="1"/>
        </value>
      </item>
    </enum>
    <decimal id="Global_Refresh_Interval_Prompt" valueName="GlobalPeriodicRefreshInterval" minValue="0" maxValue="31"/>
    <enum id="Global_Refresh_Unit_Options" valueName="GlobalPeriodicRefreshIntervalUnit">
      <item displayName="$(string.Hour)">
        <value>
          <decimal value="0"/>
        </value>
      </item>
      <item displayName="$(string.Day)">
        <value>
          <decimal value="1"/>
        </value>
      </item>
    </enum>
    <enum id="User_Publishing_Refresh_Options" valueName="UserEnabled">
      <item displayName="$(string.False)">
        <value>
          <decimal value="0"/>
        </value>
      </item>
      <item displayName="$(string.True)">
        <value>
          <decimal value="1"/>
        </value>
      </item>
    </enum>
    <enum id="User_Refresh_OnLogon_Options" valueName="UserLogonRefresh">
      <item displayName="$(string.False)">
        <value>
          <decimal value="0"/>
        </value>
      </item>
      <item displayName="$(string.True)">
        <value>
          <decimal value="1"/>
        </value>
      </item>
    </enum>
    <decimal id="User_Refresh_Interval_Prompt" valueName="UserPeriodicRefreshInterval" minValue="0" maxValue="31"/>
    <enum id="User_Refresh_Unit_Options" valueName="UserPeriodicRefreshIntervalUnit">
      <item displayName="$(string.Hour)">
        <value>
          <decimal value="0"/>
        </value>
      </item>
      <item displayName="$(string.Day)">
        <value>
          <decimal value="1"/>
        </value>
      </item>
    </enum>
    </elements>
    </policy>
    
  7. 从 标记中<elements>复制所有 和 enum idtext id并使用 和 value 字段创建 XMLdata id字段包含将在组策略 编辑器中输入的配置设置。

    下面是Publishing_Server2_Policy的示例 XML:

    <data id="Publishing_Server2_Name_Prompt" value="Name"/>
    <data id="Publishing_Server_URL_Prompt" value="http://someuri"/>
    <data id="Global_Publishing_Refresh_Options" value="1"/>
    <data id="Global_Refresh_OnLogon_Options" value="0"/>
    <data id="Global_Refresh_Interval_Prompt" value="15"/>
    <data id="Global_Refresh_Unit_Options" value="0"/>
    <data id="User_Publishing_Refresh_Options" value="0"/>
    <data id="User_Refresh_OnLogon_Options" value="0"/>
    <data id="User_Refresh_Interval_Prompt" value="15"/>
    <data id="User_Refresh_Unit_Options" value="1"/>
    
  8. 创建 SyncML 以启用策略。 有效负载包含 <enabled/> 和名称/值对。

    下面是 AppVirtualization/PublishingAllowServer2 的示例:

    注意

    数据<>有效负载必须经过 XML 编码。 若要避免编码,可以使用 CData(如果 MDM 支持)。 有关详细信息,请参阅 CDATA 节。 如果使用Intune,请选择“字符串”作为数据类型。

    <?xml version="1.0" encoding="utf-8"?>
       <SyncML xmlns="SYNCML:SYNCML1.2">
         <SyncBody>
           <Replace>
             <CmdID>2</CmdID>
             <Item>
               <Meta>
                 <Format>chr</Format>
                 <Type>text/plain</Type>
               </Meta>
               <Target>
                <LocURI>./Device/Vendor/MSFT/Policy/Config/AppVirtualization/PublishingAllowServer2</LocURI>
               </Target>
               <Data>
               <![CDATA[<enabled/><data id="Publishing_Server2_Name_Prompt" value="name prompt"/><data
                 id="Publishing_Server_URL_Prompt" value="URL prompt"/><data
                 id="Global_Publishing_Refresh_Options" value="1"/><data
                 id="Global_Refresh_OnLogon_Options" value="0"/><data
                 id="Global_Refresh_Interval_Prompt" value="15"/><data
                 id="Global_Refresh_Unit_Options" value="0"/><data
                 id="User_Publishing_Refresh_Options" value="0"/><data
                 id="User_Refresh_OnLogon_Options" value="0"/><data
                 id="User_Refresh_Interval_Prompt" value="15"/><data
                 id="User_Refresh_Unit_Options" value="1"/>]]>
               </Data>
             </Item>
           </Replace>
           <Final/>
         </SyncBody>
       </SyncML>
    

禁用策略

数据<>有效负载已<禁用/>。 下面是禁用 AppVirtualization/PublishingAllowServer2 的示例。

<SyncML xmlns="SYNCML:SYNCML1.2">
  <SyncBody>
    <Replace>
      <CmdID>2</CmdID>
      <Item>
        <Meta>
          <Format>chr</Format>
          <Type>text/plain</Type>
        </Meta>
        <Target>
          <LocURI>./Device/Vendor/MSFT/Policy/Config/AppVirtualization/PublishingAllowServer2</LocURI>
        </Target>
        <Data><disabled/></Data>
      </Item>
    </Replace>
    <Final/>
  </SyncBody>
</SyncML>

将策略设置为未配置

数据<>有效负载为空。 下面是将 AppVirtualization/PublishingAllowServer2 设置为“未配置”的示例。

<?xml version="1.0" encoding="utf-8"?>
<SyncML xmlns="SYNCML:SYNCML1.2">
  <SyncBody>
    <Delete>
      <CmdID>1</CmdID>
      <Item>
        <Target>
          <LocURI>./Device/Vendor/MSFT/Policy/Config/AppVirtualization/PublishingAllowServer2</LocURI>
        </Target>
      </Item>
    </Delete>
    <Final/>
  </SyncBody>
</SyncML>