这是上周二写的脚本,由于Office 2003版权的问题,不得不在一周内删除完约800台PC上的Office 2003专业版和标准版(当时安装时未统一标准,且未通过AD进行发布),并且安装上Open Office.org 3.2 。
先贴脚本的代码,然后简要的描述一下批量删除Office的过程。
- '*************************************************************
- ' Script: Office 2003 Unistall Script (Office 2003 Pro & Std)
- ' Last Modified : 2010-08-03
- ' Version: 1.0
- '*************************************************************
- Const HKLM = &H80000002
- Const strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Uninstall\"
- strComputer = "."
- Set Wshell = CreateObject("Wscript.Shell")
- Set objReg = GetObject("winmgmts://" & strComputer & "/root/default:StdRegProv")
- objReg.EnumKey HKLM, strKeyPath,arrSubKeys
- For Each strSubKey In arrSubKeys
- intRet = objReg.GetStringValue(HKLM, strKeyPath & strSubKey,"DisplayName",strValue)
- If strValue <> "" And intRet = 0 And inStr(1,strValue,"Office Professional Edition 2003",1) >0 Then
- Wshell.Run("MsiExec.Exe /x {90110804-6000-11D3-8CFE-0150048383C9} /qn REBOOT=ReallySuppress")
- ElseIf strValue <> "" And intRet = 0 And inStr(1,strValue,"Office Standard Edition 2003",1) >0 Then
- wshell.Run("MsiExec.Exe /x {90120804-6000-11D3-8CFE-0150048383C9} /qn REBOOT=ReallySuppress")
- End If
- Next
- '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
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卸载任务。