Notifications bei virtuellen Paketen

Die Bereitstellung von AppV-Applikationen mit ConfigMgr ist ja sehr komfortabel gelöst. Einen Nachteil gibt es aber in meinen Augen: da es bei den virtuellen Paketen (zumindest in der Console) kein Program gibt, kann man auch die Option "suppress display notifications" nicht setzen (die es bei "normaler" Softwareverteilung ja in den Properties des Programs gibt).
In meinen Augen stört dies nur (unnötig) die Benutzer. Bei einer mandatory Installation von msi’s macht eine Userbenachrichtigung ja wirklich Sinn, doch bei virtuellen Applikationen? Nein. Kein unerwarteter Reboot, keine Konfliktprozesse, usw. sondern prinzipiell nur die Registration der virtuellen Applikationen in AppV und Bereitstellung des Links im Startmenü. Dafür muss der Benutzer nicht extra benachrichtigt werden.

Für dieses Problem gibt es eine Lösung: das SDK! Man nehme etwas zum Modifizieren der Program-Properties (http://msdn.microsoft.com/en-us/library/cc145701.aspx) und der Program-Flags (http://msdn.microsoft.com/en-us/library/cc144361.aspx, im Speziellen "0x00000400 (10) | COUNTDOWN. The countdown dialog is not displayed") und schon kann man die "display notifications" unterdrücken. Weiter oben habe ich aber doch erwähnt, dass virtuelle Packages gar kein Program haben! Doch, haben sie. Allerdings sind diese nur nicht in der Console sichtbar.

Hier ein Beispiel-Skript, mit dem man das oben genannte Flag einem Program hinzufügen kann, wenn man es auf dem Siteserver ausführt. Die Variable strPackageID ist entsprechend anzupassen. Dieses soll nur als Beispiel dienen und sollte ohne weitere Modifikationen (z.B: Errorhandling) nicht produktiv eingesetzt werden. Verwendung auf eigene Gefahr!

strSMSServer = "."
strPackageID = "XYZ00001"
strProgramName = "[Virtual application]"

Set objLocator = CreateObject("WbemScripting.SWbemLocator")
Set objSCCM = objLocator.ConnectServer(strSMSServer, "root\sms")
Set Providers = objSCCM.ExecQuery("SELECT * From SMS_ProviderLocation WHERE ProviderForLocalSite = true")
For Each Provider in Providers
    If Provider.ProviderForLocalSite = True Then
        Set objSCCM = objLocator.ConnectServer(Provider.Machine, "root\sms\site_" & Provider.SiteCode)
            ‘ strSMSSiteCode = Loc.Sitecode
    End If
Next

Set objProgram = objSCCM.Get("SMS_Program.PackageID=’" & strPackageID & "’,ProgramName=’" & strProgramName & "’")

ProgramFlags = objProgram.ProgramFlags
WScript.Echo "Flags for " & strPackageID & ":" & strProgramName & " currently set to " & ProgramFlags
WScript.Echo "Adding 0x00000400 (COUNTDOWN. The countdown dialog is not displayed)" ‘ see ConfigMgr SDK for details ("SMS_Program Server WMI Class")
ProgramFlags = ProgramFlags + 1024
WScript.Echo "Set flag to: " & ProgramFlags
objProgram.ProgramFlags = ProgramFlags
objProgram.Put_

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert