这是上周二写的脚本,由于Office 2003版权的问题,不得不在一周内删除完约800台PC上的Office 2003专业版和标准版(当时安装时未统一标准,且未通过AD进行发布),并且安装上Open Office.org 3.2 。
 
      先贴脚本的代码,然后简要的描述一下批量删除Office的过程。
 
 
  1. '*************************************************************    
  2. ' Script: Office 2003 Unistall Script (Office 2003 Pro & Std)   
  3. ' Last Modified : 2010-08-03   
  4. ' Version: 1.0   
  5. '*************************************************************    
  6.  
  7. Const HKLM  = &H80000002   
  8. Const strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Uninstall\"   
  9.  
  10. strComputer  = "."   
  11. Set Wshell  = CreateObject("Wscript.Shell")   
  12. Set objReg  = GetObject("winmgmts://" & strComputer & "/root/default:StdRegProv")   
  13. objReg.EnumKey HKLM, strKeyPath,arrSubKeys   
  14.       
  15. For Each strSubKey In arrSubKeys   
  16.         intRet = objReg.GetStringValue(HKLM, strKeyPath & strSubKey,"DisplayName",strValue)           
  17.           
  18.         If strValue <> "" And intRet = 0 And inStr(1,strValue,"Office Professional Edition 2003",1) >0 Then   
  19.            Wshell.Run("MsiExec.Exe /x {90110804-6000-11D3-8CFE-0150048383C9} /qn REBOOT=ReallySuppress")   
  20.         ElseIf strValue <> "" And intRet = 0 And inStr(1,strValue,"Office Standard Edition 2003",1) >0 Then   
  21.    wshell.Run("MsiExec.Exe /x {90120804-6000-11D3-8CFE-0150048383C9} /qn REBOOT=ReallySuppress")   
  22.         End If   
  23. Next   
  24.  
  25. 'The end  
 
 以上脚本通过查找计算机上的软件安装列表,如果软件列表名称中包含Office Professional Edition 2003或Office Standard Edition 2003,则分别执行不同的卸载命令。
 
MsiExec这个命令相信大家都比较熟悉了,这里使用是/X的开关,通过软件的GUID进行卸,Office 2003 Pro和Std的GUID有些许差别(就差一个数字)。
 
脚本的问题解决后,即将面临一个新的问题,因为执行该脚本需要具备本地管理员权限的账号才可以执行,倘若一台台的PC去执行这个脚本,该脚本也就失去了意思。
 
怎么办?
 
我使用的是PSTools工具套件中的Psexec。
 
首先,写一个BAT或CMD的批处理文件,内容如下:
 
@Echo off

SET VCSite=%computername:~0,2%

echo y| xcopy \\%VCSite%IT240\c$\Script\bin\Uninoffice.vbs c:\windows\system32
Uninoffice.vbs
 
该批处理的用途是,将Office脚本复制到目的计算机之后,再执行该脚本。
 
随意找一台PC机(需修改上述批处理文件中的PC机名相同),使用具有本地管理员权限的账号下登录,运行以下命令行
 
psexec @pclist.txt -u administrator    -p xxxxxxx -c c:\script\bin\uninoffice.cmd
 
 
pclist.txt中包含你要执行Office 2003 卸载的计算机列表。
 
测试结果:五分钟内可完成50台PC的Office 2003卸载任务。