Configuration Manager 编程入门
若要开始为Configuration Manager编程,对Configuration Manager有基本的功能和体系结构理解是有益的。 此外,还有许多关键工具和资源对验证和故障排除解决方案至关重要。 下面是针对Configuration Manager编程新手的提示和资源。
重要
你应该认识到,Configuration Manager(以前是系统管理服务器 (短信) )作为产品具有相当长的历史。 在查看命名空间、类、方法、属性和日志文件时,你会发现许多引用都包含“SMS”,事实上,大多数 WMI 类以“SMS_”开头,主要Configuration Manager WMI 命名空间为“SMS”。 多年来,已经积累了许多旧类、方法和属性-对管理用户而言并不明显,但在编写历史记录/旧版时可能会感到困惑。
功能理解
若要成功自动执行或扩展Configuration Manager,必须了解产品的功能。 Configuration Manager是多层分布式管理系统,通常分布在许多服务器和多个位置。 有关详细信息,请参阅Configuration Manager基础知识。
更多资源
书籍
视频
论坛
体系结构理解
Configuration Manager是多层分布式管理系统。 了解Configuration Manager的一般体系结构非常重要。 下面是Configuration Manager体系结构概述的链接。
除了体系结构信息之外,还有几个要点通常会使管理员和程序员对Configuration Manager感到困惑。
服务器:从一般意义上说,大多数编程操作尤其 (自动化) 发生在Configuration Manager站点服务器上。 操作或配置更改通过策略在整个Configuration Manager层次结构中传播到客户端。 策略由客户端在可配置的轮询间隔内下拉 ,而不是 由服务器立即推送到客户端。 通常,安装客户端后,站点服务器到客户端或客户端到站点服务器的直接通信不会发生 – 所有通信都通过中间服务器角色进行。
客户端:Configuration Manager客户端是由Configuration Manager管理的系统和设备。 “服务器”可以是配置管理器客户端。 Exchange 服务器、Active Directory 服务器和 Configuration Manager 服务器都可以Configuration Manager客户端。 此外,Windows 10、Windows Phone和 macOS 设备都可以Configuration Manager客户端。
Configuration Manager客户端通过定期轮询Configuration Manager管理点来接收策略。 检索基本策略的轮询间隔是可配置的,其他设置也是可配置的。 因此,从Configuration Manager站点服务器启动的客户端目标操作存在固有延迟。
安慰:在站点服务器上进行更改时,远程Configuration Manager控制台二进制文件和文件不会自动更新。 必须将修改和扩展复制到运行 Configuration Manager 控制台的系统(手动或使用Configuration Manager应用程序管理/软件分发)。
短信提供程序与SQL Server:尽管Configuration Manager利用SQL Server进行数据存储,但SQL Server不是Configuration Manager的主要编程接口。 Configuration Manager的主要编程接口是 SMS 提供程序 (WMI) - 对象创建和修改必须通过 SMS 提供程序完成。 应考虑SQL Server为查询和报告目的提供对Configuration Manager数据的只读访问权限。 这不是权限问题,而是维护数据完整性的问题。
命名空间和类
服务器
主 WMI 命名空间: ROOT\SMS\SITE_<站点代码>
服务器 WMI 类:Configuration Manager API 参考
Client
主 WMI 命名空间: ROOT\CCM
客户端 WMI 类:Configuration Manager API 参考
重要
Configuration Manager的客户端编程故事正在演变为主要基于 WMI。 过去,一组客户端 COM 类是用于访问客户端功能的主要方法,但还使用了其他客户端 WMI 类/方法。 随着 System Center 2012 Configuration Manager 的发布,焦点将转移到命名空间中的一组 WMI 类:root/ccm/ClientSDK。 可以理解的是,以 COM 或特定 SDK 类的形式进行的抽象在产品更新过程中从基础体系结构更改中提供了有用的抽象。
控制台
与控制台相关的托管类:
Microsoft.configurationmanagement.exe
Microsoft.configurationmanagement.managementprovider.dll
Microsoft.ConfigurationManagement.DialogFoundation.dll
AdminUI.DialogFoundation.dll
介绍性Configuration Manager控制台主题:
编程基础知识
SDK 的Configuration Manager编程基础知识部分提供了有关如何使用 Configuration Manager 中可用的各种类型的对象和结构的示例。 Configuration Manager包含一些最初可能会令人困惑的对象/概念。 特别感兴趣的是主 (与站点控制文件) 一起使用的嵌入属性, (在整个Configuration Manager类) 中使用的延迟属性。 下面是指向编程基础知识 (以及 SDK) 的其他子部分的链接。 这些部分包含代码示例,演示如何使用各种对象类型。
重要
SDK 最常在 VBScript 和 C# 中提供代码示例。 这并不意味着其他语言将无法与 SMS 提供程序配合使用。 只要可以交换正确的对象和构造,SMS 提供程序就与语言无关。 使用最适合你的环境的语言 (工具) 。 C# 在内部用作测试 SDK 代码片段的基线,因此 C# 中通常提供对象操作和代码构造的示例。 如果使用另一种语言,则应乐于将 C# 翻译成所选语言。
基本工具
WBEMTEST
如果你花很多时间在Configuration Manager你会意识到,其中大部分是通过 WMI 运行的。 WMI 是“Windows Management Instrumentation”,Microsoft实现名为“基于 Web 的企业管理 (WBEM) 的 Internet 标准。 有许多 WMI 工具。 但是,WBEMTEST 可立即在大多数系统上使用,而无需先下载。 你可能会将其视为Notepad.exe - 有一些文本编辑器具有更丰富的功能,但当你需要查看或创建文本文件时,Notepad.exe始终存在。
提示
在内部,在排查 SMS 提供程序相关问题 (对象创建、修改和删除) 时最常用的工具是 WBEMTEST。
CMTrace
CMTrace:CMTrace 是一种自定义日志文件查看器,可用于监视和排查Configuration Manager问题。 CMTrace 提供日志文件更改 (的连续视图,而无需重新加载以监视记录的活动) ,在通过 SMS 提供程序监视/故障排除对象创建或修改时特别有用, (请参阅下面的 SMSProv.log) 。
CMTrace 可以在Configuration Manager站点服务器的“<Configuration Manager安装目录>\tools”文件夹下找到。
SMSProv.log:SMS 提供程序日志文件 (<Configuration Manager Install Directory>\Logs\SMSProv.log) 记录 SMS 提供程序的活动,并提供低级别信息,这些信息可用于通过 SMS 提供程序以编程方式创建或修改Configuration Manager对象时监视/排查问题。
客户端间谍和策略间谍
客户端间谍:一种工具,可帮助你排查与 System Center 2012 Configuration Manager 客户端上的软件分发、清单和软件计数相关的问题。
策略间谍:一个策略查看器,可帮助你查看 System Center 2012 Configuration Manager 客户端上的策略系统并对其进行故障排除。
基本Configuration Manager程序示例
下面是一个非常简单的Configuration Manager程序的链接,其中显示了许多Configuration Manager程序通用的一些基本操作:
Connect
到 SMS 提供程序List
所有程序创建新 程序
修改 现有程序
删除 现有程序