開始使用 Configuration Manager 程式設計

若要開始使用 Configuration Manager 程式設計,瞭解 Configuration Manager 的基本功能和架構是有益的。 此外,還有許多關鍵工具和資源對於驗證和排除解決方案至關重要。 以下是適用於 Configuration Manager 程式設計新手的秘訣和資源。

重要事項

您應該認識到,Configuration Manager(以前稱為 Systems Management Server (SMS) )作為一個產品有著相當悠久的歷史。 在檢閱命名空間、類別、方法、屬性和記錄檔時,您會發現許多包含「SMS」的參照,事實上,大部分的 WMI 類別都是以「SMS_」開頭,而主要Configuration Manager WMI 命名空間是「SMS」。 多年來,累積了許多遺留類別、方法和屬性——對管理使用者來說並不明顯,但在對歷史/遺留進行程式設計時可能會令人困惑。

功能理解

為了成功自動化或擴充 Configuration Manager,瞭解產品的功能非常重要。 Configuration Manager 是多層式分散式管理系統,通常分散在許多伺服器和多個位置上。 如需詳細資訊,請參閱 Configuration Manager 基礎。

其他資源

書籍

影片

論壇

架構理解

Configuration Manager 是多層式分散式管理系統。 請務必瞭解 Configuration Manager 的一般架構。 以下是 Configuration Manager 架構概觀的連結。

除了架構資訊之外,還有幾個重點通常會讓系統管理員和新開始使用 Configuration Manager 的程式設計人員感到困惑。

  • Server:一般來說,大部分的程式設計動作 (特別是自動化) 在Configuration Manager網站伺服器上進行。 動作或設定變更會透過原則在整個 Configuration Manager 階層中傳播到用戶端。 原則由用戶端依可設定的輪詢間隔下拉, 伺服器 不會立即推送至用戶端。 一般而言,安裝用戶端之後,網站伺服器與用戶端或用戶端與網站伺服器之間沒有直接通訊,所有通訊都是透過中繼伺服器角色進行。

  • 用戶端:Configuration Manager 用戶端是由 Configuration Manager 管理的系統和裝置。 「伺服器」可以是 Configuration Manger 用戶端。 Exchange 伺服器、Active Directory 伺服器和 Configuration Manager 伺服器都可以是 Configuration Manager 用戶端。 此外,Windows 10、Windows Phone 和 macOS 裝置都可以是 Configuration Manager 用戶端。

Configuration Manager 用戶端會定期輪詢 Configuration Manager管理點,以接收 Configuration Manager 原則。 擷取基本原則的輪詢間隔是可設定的,其他設定也是如此。 因此,從 Configuration Manager 站台伺服器起始的用戶端目標動作會存在固有的延遲。

  • 主機:在網站伺服器上進行變更時,Remote Configuration Manager 主控台二進位檔和檔案不會自動更新。 手動或使用 Configuration Manager 應用程式管理/軟體發佈,必須將修改和擴充功能複製到執行 Configuration Manager 主控台的系統。

  • SMS 提供者與 SQL Server:雖然 Configuration Manager 會運用 SQL Server 進行資料儲存,但 SQL Server 不是 Configuration Manager 的主要程式設計介面。 Configuration Manager 的主要程式設計介面是 SMS 提供者 (WMI) - 物件建立和修改必須透過 SMS 提供者完成。 您應該考慮將 SQL Server 視為提供對 Configuration Manager 資料的唯讀存取權,以用於查詢和報告目的。 這不是權限的問題,而是維護資料完整性的問題。

命名空間和類別

伺服器

主要 WMI 命名空間: ROOT\SMS\SITE_<site code>

伺服器 WMI 類別:Configuration Manager API 參考

用戶端

主要 WMI 命名空間: ROOT\CCM

用戶端 WMI 類別:Configuration Manager API 參考

重要事項

Configuration Manager 的用戶端程式設計故事正在演進,主要是以 WMI 為基礎。 過去,一組用戶端 COM 類別是用來存取用戶端功能的主要方法,儘管也會使用其他用戶端 WMI 類別/方法。 隨著系統中心 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 提供者是與語言無關的。 使用最適合您環境的語言 (工具) 。 C# 在內部用作測試 SDK 程式碼片段的基準,因此物件操作和程式碼建構的範例通常會以 C# 提供。 如果您使用另一種語言,您應該能夠從 C# 翻譯成您選擇的語言。

基本工具

WBEMTEST

如果您在 Configuration Manager 上花費大量時間,您會發現大部分的 Configuration Manager 都是透過 WMI 執行。 WMI 即「Windows Management Instrumentation」,是 Microsoft 所執行的網際網路標準,稱為「Web 型企業管理 (WBEM) 」。 市面上有許多 WMI 工具。 不過,WBEMTEST 可立即在大部分系統上使用,而不必先下載。 您可能會將其視為 Notepad.exe – 有具有更豐富功能的文本編輯器可用,但當您需要查看或創建文本文件時,Notepad.exe 始終在那裡。

WBEMTEST 簡介

提示

在內部,針對物件建立、修改和刪除) (SMS 提供者相關問題進行疑難排解時,最常用的工具是 WBEMTEST。

CMTrace

CMTrace:CMTrace 是自訂的記錄檔檢視器,在監視和疑難排解 Configuration Manager 時很有用。 CMTrace 提供記錄檔變更的持續檢視 (而不需要重新載入來監視記錄的活動) ,在透過 SMS 提供者監視/疑難排解物件建立或修改時特別有用 (請參閱下列) SMSProv.log。

您可以在 Configuration Manager 站台伺服器的「<Configuration Manager 安裝目錄\工具」資料夾底下找到 Configuration Manager 安裝目錄>\工具。

SMSProv.log:SMS 提供者記錄檔 (<Configuration Manager Installation Directory>\Logs\SMSProv.log) 會記錄 SMS 提供者的活動,並提供低階資訊,以便在透過 SMS 提供者以程式設計方式建立或修改Configuration Manager物件時,對監視/疑難排解問題很有用。

用戶端間諜和原則間諜

用戶端間諜:可協助您針對 System Center 2012 Configuration Manager 用戶端上的軟體散發、清查和軟體計量相關問題進行疑難排解的工具。

策略間諜:可協助您查看 System Center 2012 Configuration Manager 用戶端上的原則系統並對其進行疑難排解的原則檢視器。

基本 Configuration Manager 程式範例

下面是一個非常簡單的 Configuration Manager 程式的連結,其中顯示許多 Configuration Manager 程式通用的一些基本操作: