Powershell / ConfigMgr2012: Non-Persistant Cache löschen

Ein zu kleiner CCM-Cache kann verhindern, dass neue Pakete, die nicht mehr in den Cache geladen werden können, nicht mehr installiert werden.

Mit folgendem Snippet kann der Cache geleert werden

#Create Object for Resource Manager COM Object
$resourcemanager = new-object -com "UIResource.UIResourceMgr"
$cache = $resourcemanager.GetCacheInfo()
#Enum Cache elements, compare compare persistancy, and delete if not persistant
$cache.GetCacheElements() | where-object { $_.PersistInCache -ne $null } | foreach { $cache.DeleteCacheElement($_.CacheElementID) }

Die Ursprüngliche Idee war dieses Snippet als Script in ein ConfigMgr Paket einzubinden und vorrangig den Cache zu bereinigen.

Folgender Befehl muss dazu genutzt werden um Powershell Scripte in einem ConfigMgr Programm aufzurufen.

"powershell.exe -ExecutionPolicy Bypass -NoLogo -NonInteractive -NoProfile -WindowStyle Hidden -File .\Script-File-Name.ps1"

Unglücklicherweise kann ein Paket den Cache nicht leeren, solange das „Konstrukt Cache“ in Gebrauch ist. Selbst dann nicht, wenn nur non-persistant Pakete gelöscht werden.

Ein Workaround dafür kann sein, einen Scheduled Task zu erstellen und den Cache getimed zu bereinigen. Nachteil dieser Lösung ist, dass es nicht zur Laufzeit eine Paketes passieren kann und damit auch Abhängigkeiten zwischen Pakete brechen kann.

Facebooktwittergoogle_plus
Facebooktwittergoogle_plus

Schreiben Sie einen Kommentar

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

*

Cookies help us deliver our services. By using our services, you agree to our use of cookies. More Info | Close
%d Bloggern gefällt das: