Skip to main content

Automatisierung

Mit dem SCCM Application Manager können Applikationen und Pakete skriptgesteuert angelegt und gelöschet werden. Darüber hinaus sind auch Statusänderungen für Applikationen und Pakete möglich. Bevor diese Form der Automatisierung verwendet werden kann, müssen gewisse Vorbereitungen getroffen werden und bestimmte Vorraussetzungen erfüllt sein.

Voraussetzungen und Vorbereitungen

  • Es muss eine gültige, automatisch Verbindung zur SCCM Site existieren

  • Es muss eine gültige Lizenz existieren.

  • Der Maintenance Mode darf nicht eingeschaltet sein.

  • Eine abgeschaltete, oder gültige Versionskontrolle, muss definiert sein.

  • Die SCCM Berechtigungen müssen ausreichen.

  • Der SCCM Application Manager muss vollständig konfiguriert sein. Hierzu sollte die Applikation vor der Automatisierung von Hand gestartet werden. Der Start muss ohne Einschränkung gelingen und die Verbindung zu einem Site Server muss automatisch erfolgen. Wenn notwendig, den SCCM Application Manager vollständig konfigurieren, da während der Automatisierung die existierenden Konfigurationsdateien verwendet werden.

Starten des Automatisierungsprozesses

Bei der Automatisierung wird dem SCCM Application Manager mittels Parameterübergabe eine XML-Datei übergeben, die die Anweisungen enthält, die automatisiert ausgeführt werden sollen. Der Aufruf kann so aussehen:

SCCMApplicationManager.exe C:\myFolder\myFile.xml

Sodann wird der SCCM Application Manager ohne grafische Benutzeroberfläche gestartet, die Anweisungen werden ausgeführt und der SCCM Application Manager wieder beendet.

Tipp
Wird die Anweisung SCCMApplicationManager.exe C:\myFolder\myFile.xml innerhalb einer Eingabeaufforderung angegeben, werden Informationen, Warnungen und Fehlermeldungen in dieses Fenster übertragen.
sccm-automation.png

Aufbau der XML-Datei

Das Grundgerüst einer XML-Datei für die Automatisierung sieht wie folgt aus:

<?xml version="1.0" encoding="utf-8" ?>
<SCCMApplicationManager>
	<!--
	A task must have one of the following actions: 
	CreateApplication
	CreatePackage
	SetApplicationState
	SetPackageState
	DeleteApplication
	DeletePackage
	-->
	<Task Action=""> 
	</Task>
</SCCMApplicationManager>

Die einzelnen Arbeitsschritte werden in Tasks aufgeteilt. Jeder Task muss ein Attribut für Action besitzen. Es existieren folgende Werte für das Attribut Action:

  • CreateApplication (erzeugt eine Applikation)
  • CreatePackage (erzeugt ein Paket)
  • SetApplicationState (setzt den Status einer oder mehrerer Applikationen)
  • SetPackageState (setzt den Status eines oder mehrerer Pakete)
  • DeleteApplication (löscht eine oder mehrere Applikationen)
  • DeletePackage (löscht ein oder mehrere Pakete)

Hinweis
Beim Umgang mit XML-Dateien ist zu beachten, dass Start- und Endtags, sowie Attribute die Groß- und Kleinschreibung beachten (<Task /> ist nicht das gleiche wie <task />).

SCCM Verbindungen

Im Normalfall wird bei der Automatisierung die Standardverbindung zu einer SCCM Site verwendet. Das ist jene Verbindung, bei der die Checkbox Auto Connect aktiviert ist.

sccm-default-connection.png

Soll eine andere Verbindung zu einer SCCM Site verwendet werden, kann innerhalb der XML-Datei die GUID einer solchen Verbindung optional angegeben werden. Diese GUID kann aus dem Anmeldedialog kopiert...

sccm-connection-guid.png

... und in die XML-Datei eingefügt werden:

<?xml version="1.0" encoding="utf-8" ?>
<SCCMApplicationManager ConnectionGuid="d77da9b5-de21-45c8-bab2-acc3ec9e7426">
	<Task Action=""> 
	</Task>
</SCCMApplicationManager>

In diesem Fall wird dem Knoten SCCMApplicationManager das Attribut ConnectionGuid hinzugefügt und der Wert der GUID eingetragen.

Hinweis
Werden Connection GUIDs verwendet, müssen diese gültig sein und die angegebene Verbindung muss existieren und zustande kommen, da ein Rückgriff auf die Standardverbindung im Fehlerfalle nicht stattfindet.

Applikationen/Pakete anlegen

Für das Erzeugen von Applikationen oder Paketen muss mindestens folgende XML-Datei existieren:

<?xml version="1.0" encoding="utf-8" ?>
<SCCMApplicationManager>
	<Task Action="CreateApplication"> <!-- or Action="CreatePackage" -->
		<SourceFile>\\myServer\myShare\myFile.msi</SourceFile>
	</Task>
</SCCMApplicationManager>

Als Action muss CreateApplication oder CreatePackage angegeben werden. Außerdem muss im Knoten <SourceFile /> der UNC-Pfad der Quelldatei eingetragen werden. Gültige Dateiendungen sind: .cmd, .exe, .msi, .ps1 oder .vbs.

Bei o.g. Schreibweise wird davon ausgegangen, dass die Werte für Manufacturer, Product, Version, Language und UninstallRegKey automatisch aus der Quelldatei ausgelesen werden können. Das ist aber nur bei MSI-Dateien garantiert. Daher können im Zweifelsfall diese Werte zusätzlich mit angegeben werden.

Optional kann bei der Erstellung von Applikationen ein <IconFile /> zur Anzeige im Software-Center angegeben werden.

<?xml version="1.0" encoding="utf-8" ?>
<SCCMApplicationManager>
	<Task Action="CreateApplication"> <!-- or Action="CreatePackage" -->
		<SourceFile>\\myServer\myShare\myFile.msi</SourceFile>
		<Manufacturer>myManufacturer</Manufacturer>
		<Product>myProduct</Product>
		<Version>0.0.0.0</Version>
		<Language>myLanguage</Language>
		<UninstallRegKey>myUninstallRegKey</UninstallRegKey>
		<IconFile>\\myServer\myShare\myIconFile.png</IconFile>
	</Task>
</SCCMApplicationManager>

Der SCCM Application Manager unterstützt darüber hinaus auch die Verwendung von benutzerdefinierten Eigenschaften. Da diese Eigenschaften nicht automatisch ausgelesen werden, können sie wie folgt definiert werden (siehe Beispiele für Syscode, Revision und SoftwareArchitecture):

<?xml version="1.0" encoding="utf-8" ?>
<SCCMApplicationManager>
	<Task Action="CreateApplication">
		<SourceFile>\\myServer\myShare\myFile.msi</SourceFile>
		<Manufacturer>myManufacturer</Manufacturer>
		<Product>myProduct</Product>
		<Version>0.0.0.0</Version>
		<Language>myLanguage</Language>
		<UninstallRegKey>myUninstallRegKey</UninstallRegKey>
		<!-- custom properties start here -->
		<Syscode>S001</Syscode> 
		<Revision>R001</Revision>
		<SoftwareArchitecture>x64</SoftwareArchitecture>
	</Task>
</SCCMApplicationManager>

Weitere Hinweise

  • Bei der Angabe von benutzerdefinierten Eigenschaften ist darauf zu achten, dass die korrekte Schreibweise verwendet wird.

  • Alle Eigenschaften, die in einem Task angegeben werden, überschreiben ggf. existieren Eigenschaften aus der Quelldatei.

  • Die Quelldatei darf sich nicht im Kontext des PowerShell App Deployment Toolkits befinden. PowerShell-Skripts sind erlaubt.

Ab der Version 3.0 des SCCM Application Managers werden unterschiedliche Collection Resource Types unterstützt. Diese legen fest, ob während der Anlage der Applikation/Paketes Sammlungen für Geräte oder Benutzer angelegt werden sollen. In diesem Fall kann das optionale Attribut CollectionResourceType mit angegeben werden. Es kann die Werte Device oder User enthalten. Wird keine Angabe gemacht, wird als Standard Device verwendet.

<?xml version="1.0" encoding="utf-8" ?>
<SCCMApplicationManager>
	<Task Action="CreateApplication" CollectionResourceType="User" > <!-- or CollectionResourceType="Device" -->
		<SourceFile>\\myServer\myShare\myFile.msi</SourceFile>
	</Task>
</SCCMApplicationManager>
Status von Applikationen/Paketen ändern

Der Status von Applikationen oder Paketen kann auf zwei unterschiedliche Arten gesetzt werden:

  1. Direkt: Der Status wird explizit auf den Wert Test, Approved, Retired, Obsolete oder Failed gesetzt.
  2. Der Wert für den Status wird auf den nächsten (Forward) oder vorherigen (Back) Wert gesetzt

Wichtig
Es können nur Status von Applikationen oder Paketen verändert werden, die auch zuvor mit dem SCCM Application Manager angelegt wurden.

Für Applikationen können beim Statuswechsel ein oder mehrere Knoten <ModelName /> angegeben werden (die entsprechenden Werte dafür sind in der WMI-Klasse SMS_ApplicationLatest zu finden). Für Pakete werden stattdessen ein oder mehrere Knoten <PackageID /> verwendet (siehe WMI-Klasse SMS_Package).

Für das Attribut Action muss hierbei für Applikationen der Wert SetApplicationState und für Pakete SetPackageState angegeben werden.

Das Attribut State kann die Werte Test, Approved, Retired, Obsolete oder Failed annehmen.

Das Attribut Step erwartet die Werte Forward oder Back.

Für die erste Variante muss die XML-Datei für Applikationen wie folgt aussehen:

<?xml version="1.0" encoding="utf-8" ?>
<SCCMApplicationManager>
	<Task Action="SetApplicationState" State="Approved"> <!-- State can be Test, Approved, Retired, Obsolete or Failed -->
		<ModelName>ScopeId_DCAA8452-EBBC-4535-A253-366403E5AA44/Application_2334f04c-bd64-48f3-b14c-275c15d9cd67</ModelName>
		<ModelName>ScopeId_DCAA8452-EBBC-4535-A253-366403E5AA44/Application_ecb26fdc-1353-44f1-ac4d-553fd20de7cf</ModelName>
		<ModelName>ScopeId_DCAA8452-EBBC-4535-A253-366403E5AA44/Application_473f1e7c-9554-45d7-b01b-accc215c5587</ModelName>
	</Task>
</SCCMApplicationManager>

Für die erste Variante muss die XML-Datei für Pakete wie folgt aussehen:

<?xml version="1.0" encoding="utf-8" ?>
<SCCMApplicationManager>
	<Task Action="SetPackageState" State="Approved"> <!-- State can be Test, Approved, Retired, Obsolete or Failed -->
		<PackageID>ABC00199</PackageID>
		<PackageID>ABC0019A</PackageID>
		<PackageID>ABC0019B</PackageID>
	</Task>
</SCCMApplicationManager>

Für die zweite Variante muss die XML-Datei für Applikationen wie folgt aussehen:

<?xml version="1.0" encoding="utf-8" ?>
<SCCMApplicationManager>
	<Task Action="SetApplicationState" Step="Forward"> <!-- Step can be Forward or Back -->
		<ModelName>ScopeId_DCAA8452-EBBC-4535-A253-366403E5AA44/Application_2334f04c-bd64-48f3-b14c-275c15d9cd67</ModelName>
		<ModelName>ScopeId_DCAA8452-EBBC-4535-A253-366403E5AA44/Application_ecb26fdc-1353-44f1-ac4d-553fd20de7cf</ModelName>
		<ModelName>ScopeId_DCAA8452-EBBC-4535-A253-366403E5AA44/Application_473f1e7c-9554-45d7-b01b-accc215c5587</ModelName>
	</Task>
</SCCMApplicationManager>

Für die zweite Variante muss die XML-Datei für Pakete wie folgt aussehen:

<?xml version="1.0" encoding="utf-8" ?>
<SCCMApplicationManager>
	<Task Action="SetPackageState" Step="Forward"> <!-- Step can be Forward or Back -->
		<PackageID>ABC00199</PackageID>
		<PackageID>ABC0019A</PackageID>
		<PackageID>ABC0019B</PackageID>
	</Task>
</SCCMApplicationManager>
Applikationen/Pakete löschen

Wichtig
Es können nur Applikationen oder Pakete gelöscht werden, die auch zuvor mit dem SCCM application Manager angelegt wurden.

Für das Löschen von Applikationen wird der Wert für Action auf DeleteApplication und beim Löschen von Paketen der Wert für Action auf DeletePackage gesetzt.

Für Applikationen können beim Löschen ein oder mehrere Knoten <ModelName /> angegeben werden (die entsprechenden Werte dafür sind in der WMI-Klasse SMS_ApplicationLatest zu finden). Für Pakete werden stattdessen ein oder mehrere Knoten <PackageID /> verwendet (siehe WMI-Klasse SMS_Package).

Die XML-Datei für Applikationen sieht demnach wie folgt aus:

<?xml version="1.0" encoding="utf-8" ?>
<SCCMApplicationManager>
	<Task Action="DeleteApplication">
		<ModelName>ScopeId_DCAA8452-EBBC-4535-A253-366403E5AA44/Application_2334f04c-bd64-48f3-b14c-275c15d9cd67</ModelName>
		<ModelName>ScopeId_DCAA8452-EBBC-4535-A253-366403E5AA44/Application_ecb26fdc-1353-44f1-ac4d-553fd20de7cf</ModelName>
		<ModelName>ScopeId_DCAA8452-EBBC-4535-A253-366403E5AA44/Application_473f1e7c-9554-45d7-b01b-accc215c5587</ModelName>
	</Task>
</SCCMApplicationManager>

Für Pakete wird diese Datei benötigt:

<?xml version="1.0" encoding="utf-8" ?>
<SCCMApplicationManager>
	<Task Action="DeletePackage">
		<PackageID>ABC00199</PackageID>
		<PackageID>ABC0019A</PackageID>
		<PackageID>ABC0019B</PackageID>
	</Task>
</SCCMApplicationManager>
Mehrere Tasks in einer XML-Datei

Grundsätzlich werden mehrere Tasks innerhalb einer XML-Datei unterstützt. Das Anlegen von drei Applikationen könnte demnach so aussehen:

<?xml version="1.0" encoding="utf-8" ?>
<SCCMApplicationManager>
	<Task Action="CreateApplication">
		<SourceFile>\\myServer\myShare\myFile1.msi</SourceFile>
	</Task>
	<Task Action="CreateApplication">
		<SourceFile>\\myServer\myShare\myFile2.msi</SourceFile>
	</Task>
	<Task Action="CreateApplication">
		<SourceFile>\\myServer\myShare\myFile3.msi</SourceFile>
	</Task>
</SCCMApplicationManager>

Was auf den ersten Blick praktisch erscheint, kann auf den zweiten Blick Nachteile haben, wenn während der Ausführung der Tasks ein Fehler auftritt. Je nach Schweregrad bricht der gesamte Vorgang an einer bestimmten Stelle ab, weil es nicht weitergehen kann, oder es werden nur einige Tasks ausgeführt. Bei solchen Szenarien lohnt sich daher der Blick in die Protokolldatei.

Rückgabewerte und Protokolldatei

Nach der Ausführung des SCCM Application Managers im Automatisierungsmodus werden folgende Rückgabewerte zurückgeliefert:

  • 0 = O.K.
  • 1 = Fehler

Wird als Rückgabewert 1 zurückgeliefert, sind in der Datei SCCMApplicationManager.log die entsprechenden Fehlermeldungen zu finden. Diese befindet sich im Installationsverzeichnis des SCCM Application Managers. Die Protokolldatei besitzt ein Format, das mit dem Tool CMTrace.exe gelesen werden kann.