Informationen zur Berichterstellung Status der benutzerdefinierten Aktion in Configuration Manager

Während eine benutzerdefinierte Aktion auf einem Configuration Manager-Client ausgeführt wird, kann sie Fortschrittsinformationen melden, die zum Anzeigen einer Statusanzeige verwendet werden.

Sie verwenden die COM-Automatisierungsschnittstelle IProgressUI::ShowActionProgress, um Fortschrittsinformationen an die Tasksequenzumgebung zu melden und eine Statusanzeige anzuzeigen.

IProgressUI::ShowActionProgress wird in der COM-Klasse ProgressUI implementiert, bei der es sich um ein Out-of-Process-COM-Objekt in TSProgressUI.exe handelt.

ProgressUI in der Tasksequenzumgebung

Bevor die Tasksequenz ausgeführt wird, ProgressUI wird sie registriert und nach Abschluss der Tasksequenz wird die Registrierung aufgehoben. im Quellbetriebssystem ProgressUI wird unter den Anmeldeinformationen des angemeldeten Benutzers ausgeführt. Wenn kein Benutzer angemeldet ist, wenn die Tasksequenz ausgeführt wird, schlägt die Registrierung für das COM-Objekt fehl. Im Zielbetriebssystem und in Windows PE ProgressUI wird es unter dem Systemkonto ausgeführt.

IProgressUI::ShowActionProgress aufrufen

In Ihrer benutzerdefinierten Aktion müssen Sie die folgenden Schritte ausführen, um den Fortschritt Ihrer benutzerdefinierten Aktion zu melden und eine Statusanzeige anzuzeigen.

Hinweis

In der Regel sollten Sie Fortschrittsinformationen melden, wenn die Ausführung der Aktion länger als eine Minute dauert.

Bestimmen, ob die Statusanzeige angezeigt werden soll

Mithilfe der folgenden Logik können Sie mithilfe von Umgebungsvariablen bestimmen, ob die Statusanzeige angezeigt werden soll.

Wenn Sie WindowsPE ausführen ( _SMSTSInWinPE == "true") oder

Wenn Sie nach der Installation ein vollständiges Betriebssystem verwenden (_SMSTSReturnToGINA=="true") oder

Wenn die Tasksequenz von einem Medium aus gestartet wird (_SMSTSLaunchMode ist "CD", "DVD" oder "USB") oder

Wenn die Tasksequenz im eigenständigen Modus ausgeführt wird (_SMSTSStandAloneMode=="true") oder

Wenn das Flag "Benutzeroberfläche für Fortschritt anzeigen" gesetzt ist (_SMSTSShowProgressUI == "true"), sollte die Statusanzeige angezeigt werden, andernfalls sollte sie nicht angezeigt werden.

Erstellen des COM ProgressUI-Objekts

Sie erstellen ein ProgressUI Objekt mit der gleichen Technik, die Sie für alle COM-Objekte verwenden. In C++ verwenden CoCreateInstanceSie . In C# fügen Sie einen Verweis auf SMS TSE Progress UI hinzu, und in Ihrem Quellcode erstellen Sie eine Instance der ProgressUILib.ProgressUIClass Klasse.

Rufen Sie in VBScript mit Microsoft.SMS.TsProgressUI aufCreateObject.

Ein Beispiel für das Erstellen eines COM-Objekts in VBSript und C# finden Sie unter Verwenden von Tasksequenzvariablen in einer ausgeführten Tasksequenz des Configuration Manager.

Abrufen der erforderlichen Umgebungsvariablen

Mehrere Umgebungsvariablen enthalten Informationen, die Sie an die IProgressUI::ShowActionProgress Methode übergeben müssen. Beispielsweise ist der Name der organization, der für den pszOrgName Parameter benötigt wird, in der Umgebungsvariablen verfügbar. _SMSTSOrgName Weitere Informationen finden Sie unter IProgressUI::ShowActionProgress. Informationen zum Lesen von Tasksequenzumgebungsvariablen finden Sie unter Verwenden von Tasksequenzvariablen in einer ausgeführten Tasksequenz des Configuration Manager.

IProgressUI::ShowActionProgress aufrufen

Aufruf IProgressUI::ShowActionProgress aus, um den Fortschrittsindikator mithilfe der Informationen anzuzeigen, die aus den Umgebungsvariablen abgerufen werden. Um den aktuellen prozentualen Fortschritt zu übergeben, verwenden Sie die Parameter uActionExecStep und uActionExecMaxStep. Wenn Sie z. B. den Wert 2 in uActionExecStep und den Wert 10 in uActionExecMaxStepübergeben, beträgt die prozentuale Fertigstellung der Aktion 20 Prozent.

Siehe auch

IProgressUI::ShowActionProgressProgressUI