SCCM:通过Application-Detection Method自动调整Cache大小

前言
听说写博客有很多好处,比如好记性不如烂笔头......总之,我这里连微博和微信朋友圈都不写的Unknown现在开始写Blog了,希望通过Blog可以提高自己的水平吧


环境
SCCM 2012


背景
SCCM默认情况下的Cache为5G,对于一些本身就超过5G大小的应用程序来说,这样果断是下载失败。另外得益于SSD的流行,鄙人所在公司已经很早就更换SSD的笔记本电脑了,不过硬盘空间就是一个问题。所以最后的决定是对那些需要安装超过5G的应用程序的电脑才调高其Cache。那问题来了,通过什么手段调整(PS:我假设大家知道怎么调整,不知道调整也可以看下文的脚本)?GPO,SCCM的baseline。其实还是有另外一种方法,就是Application中的Detection Method(检测方法),并且我觉得该方法更直接与精准。


技术说明
Application比起Package多了一个Detection Method的功能,这样Application就能智能检测软件是否被安装了。DM在软件安装和卸载过程都会首先被运行,以便检查是否真的需要安装或卸载,DM默认情况下可以通过MSI Product Code,File System或者Registry来判断软件是否已经被安装。另外它也支持脚本检测。所以我们通过定制化的脚本就能调整Cache的大小。


配置过程


Application的其他配置过程不变,知道原理的话,难点在脚本,在Detection Method中使用以下vbs脚本即可。

On Error Resume Next
Dim Installed : Installed = False 
Set installer = CreateObject("WindowsInstaller.Installer")
'---------------检测软件是否被安装-------------------
'下面是判断MSI Product Code的方法,其它注册表和文件去判断应该更容易写的。
For Each prod In installer.Products
 If prod = "{4FFA60C4-9A8B-4C9E-8265-2241B266304C}" Then 
  Installed = True
 End If 
Next
'----------------------------------------------------
'-----------------调整Cache大小----------------------
Dim ClientResource
Set ClientResource = CreateObject("UIResource.UIResourceMgr")
Set CacheInfo = ClientResource.GetCacheInfo
If CacheInfo.TotalSize < 10240 Then  '如果小于10G缓存则设置为10G缓存
 CacheInfo.TotalSize = 10240 '10G
End If 
'----------------------------------------------------
'------------告诉SCCM该软件是否被安装----------------
If Installed Then
 ' ExitCode为0和输出任意内容,代表软件已经被安装。否则表示没有安装。所以"Yes" 也可以改为"Installed"
 WScript.Echo "Yes"
End If
'----------------------------------------------------



你可能感兴趣的:(cache,application,SCCM)