Die Serverinstallation des SCCM Managers liefert eine Schnittstelle zur Eigenentwicklung von Plugins mit. Dazu wird eine IDE (z.B. Visual Studio) zur Entwicklung von C-Sharp-Anwendungen mit dem Grafikframework WPF benötigt. Desweiteren wird .NET Framework 4.5 vorausgesetzt.
Ein neu erstelltes Plugin muss als Klassenbibliothek (DLL-Datei) kompiliert werden und das Interface IActionPlugin implementieren. Das Interface befindet sich in der Klassenbibliothek ActionPanel.PluginBase.dll. Zusätzlich wird noch die Klassenbibliothek ActionPanel.Common.dll mitgeliefert. Darin sind einige nützliche Helferklassen enthalten.
Zur Einbindung des neu entwickelten Plugins muss lediglich die entsprechende DLL-Datei in das Pluginverzechnis des SCCM Managers kopiert werden:
{Installationsverzechnis}\Web\SCCMManager\Resources\Assemblies\
Danach muss die Startmenüverknüpfung "Update Plugin Versions" ausgeführt werden, damit das neue Plugin, zur Konfiguration in der Administrationsoberfläche des SCCM Managers, zur Verfügung steht.
Folgend wird das Interface IActionPlugin erläutert.
Name | Typ | Beschreibung | Automatisch gesetzt |
---|---|---|---|
Title | string | Titel laut Action-Konfiguration | Ja |
IsSingleton | bool |
Singleton laut Action-Konfiguration |
Ja |
Argument | string | Argument laut Action-Konfiguration | Ja |
SelectedComputers | ObservableCollection<IComputerItem> | Hier werden alle zur Laufzeit ausgewählten Computer aufgelistet | Ja |
ApplicationVariables | IApplicationVariables | Pluginvariablen aus der Datenbank, hierüber können auch Werte modifiziert werden | Ja |
ActionPanelControl | IActionPanel | Zugriff auf diverse Funktionen des SCCM Managers und auf den WebService | Ja |
LanguageTranslater | ILanguageTranslater | Zugriff auf die Sprachenübersetzungen des Plugins | Ja |
PluginContainer | IPluginContainer | Ja | |
SelectedComputerType | SelectedComputerType (Enum) | Nein | |
SingletonBehavior | SingletonBehavior (Enum) | Verhalten, wenn das Plugin ein zweites Mal gestartet wird und dessen Singleton-Eigenschaft aktiviert ist | Nein |
PluginType | PluginTypes (Enum) |
Art des Plugins. Mögliche Werte:
|
Nein |
ContentControl | UserControl | UserControl, das im SCCM Manager als Oberfläche angezeigt werden soll, wenn es sich bei der Pluginart um ein UserControl-Plugin handelt | Nein |
Name | Rückgabe-Typ | Übergabeparameter | Beschreibung |
---|---|---|---|
Initialize | bool | Initialisierung des Plugins. | |
OnApplicationExit | void | Event wenn der SCCM Manager beendet wird. | |
UpdateArgument | void | string argument | Wenn ein Plugin ein zweites Mal als Singleton gestartet wurde, wird diese Methode aufgerufen. |
InvokeFunction | bool | string function, string[] parameters | Übergabe der konfigurierten Funktion und Parameter. |
Beispiel: ClientActionsPlugins |
Kopiere Code |
---|---|
using System.Collections.ObjectModel; using System.Linq; using System.Windows.Controls; using ActionPanel.PluginBase; using ActionPanel.PluginBase.Enums; using ActionPanel.PluginBase.Interfaces; using ClientActionsPlugin.View; using FuncLib; namespace ClientActionsPlugin { class ActionPanelPlugin : IActionPlugin { private ActionUserControl m_control; public string Title { get; set; } public bool IsSingleton { get; set; } public string Argument { get; set; } public ObservableCollection<IComputerItem> SelectedComputers { get; set; } public SelectedComputersType SelectedComputerType { get; set; } = SelectedComputersType.Single; public SingletonBehavior SingletonBehavior { get; } = SingletonBehavior.UpdateArgument; public PluginTypes PluginType { get; } = PluginTypes.ExecuterUserControl; public UserControl ContentControl => m_control; public bool Initialize() { m_control = new ActionUserControl(this); if (m_control != null) { m_control.Title = Title; m_control.SelectedComputer = SelectedComputers?.FirstOrDefault()?.Name; m_control.Init(); } return true; } public void OnApplicationExit() { } public void UpdateArgument(string argument) { Argument = argument; m_control.SelectedComputer = SelectedComputers?.FirstOrDefault()?.Name; m_control.Init(); } public bool InvokeFunction(string function, string[] parameters) { bool force = (parameters != null && FLibCMD.CheckForCommandLineKey(parameters, "force", false)); if (function == Functions.SHUTDOWN) { return m_control.ShutdownComputer(force); } else if (function == Functions.RESTART) { return m_control.RestartComputer(force); } else if (function == Functions.WAKEUP) { return m_control.WakeUpComputer(); } else { return false; } } public IApplicationVariables ApplicationVariables { get; set; } public IActionPanel ActionPanelControl { get; set; } public ILanguageTranslater LanguageTranslater { get; set; } public IPluginContainer PluginContainer { get; set; } } } |
Für ein neues Plugin kann in der SCCM-Manager-Datenbank eine Konfiguration hinterlegt werden.
Der SCCM Manager erkennt die Konfiguration automatisch und ermöglicht die Konfiguration über den Adminsitrationsbereich.