VBScript:Office 2003の一括削除
これは先週の火曜日に書かれたスクリプトです.Office 2003の著作権の問題で、約800台のPCのOffice 2003の専門版と標準版(当時はインストール時に標準が統一されておらず、ADで公開されていなかった)を1週間で削除し、Open Office.org 3.2をインストールしなければなりません.
スクリプトのコードを貼り付けてから、Officeを一括削除する手順を簡単に説明します.
以上のスクリプトは、コンピュータ上のソフトウェアインストールリストを検索し、ソフトウェアリスト名にOffice Professional Edition 2003またはOffice Standard Edition 2003が含まれている場合は、それぞれ異なるアンインストールコマンドを実行します.
MsiExecというコマンドはよく知られていると思いますが、ここでは/Xのスイッチを使って、ソフトウェアのGUIDで取り外しています.Office 2003 ProとStdのGUIDには少し違いがあります(数字が1つ足りません).
スクリプトの問題が解決すると、スクリプトを実行するにはローカル管理者権限を持つアカウントが必要なため、新しい問題に直面します.1台の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機を1台探し(上記バッチファイルのPC機名を変更する必要がある)、ローカル管理者権限を持つアカウントでログインし、以下のコマンドラインを実行する
psexec @pclist.txt -u administrator -p xxxxxxx -c c:\script\bin\uninoffice.cmd
PClist.txtには、Office 2003のアンインストールを実行するコンピュータのリストが含まれています.
テスト結果:PC 50台のOffice 2003アンインストールタスクを5分以内に完了できます.
スクリプトのコードを貼り付けてから、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には少し違いがあります(数字が1つ足りません).
スクリプトの問題が解決すると、スクリプトを実行するにはローカル管理者権限を持つアカウントが必要なため、新しい問題に直面します.1台の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機を1台探し(上記バッチファイルのPC機名を変更する必要がある)、ローカル管理者権限を持つアカウントでログインし、以下のコマンドラインを実行する
psexec @pclist.txt -u administrator -p xxxxxxx -c c:\script\bin\uninoffice.cmd
PClist.txtには、Office 2003のアンインストールを実行するコンピュータのリストが含まれています.
テスト結果:PC 50台のOffice 2003アンインストールタスクを5分以内に完了できます.