Office Update sonrası Excel yavaşlığı & Vbscript ile uzaktan komut çalıştırma/patch kaldırma

vbscript ile uzaktan komut çalıştırma, excel file open slowly on network, network üzerinden excel dosyalarını açarken yavaşlık

28.06.2011 tarihinde çıkan Microsoft Office File Validation güncellemesi yükledikten sonra ağ üzerinden excel dosyalarını açarken aşırı bir yavaşlama ve 2-3Mb boyutundan yüksek olan excel dosyalarında kilitlenme meydana gelmesine yol açmakta. Bilgisayarın lokal disklerinde bulunan dosyalar için bu sorun olmamakla birlikte yanlızca ağ üzerinden çalışan dosyalarda bu sorun ortaya çıkmakta.

Yapılan güncelleme WSUS ortamından kaldırılmayı desteklemediği için elle kaldırmanız gerekmekte 5-10 bilgisayar yapılabilir ancak şirket ortamları için pek mümkün değil.

iş yine script yazmaya kaldı.
Öncelikle nasıl kaldırabileceğimizi registry üzerinden aradığımızda kaldırma stringi olarak
MsiExec.exe /I{90140000-2005-0000-0000-0000000FF1CE} yazmakta kendimize göre düzenlersek MsiExec.exe /quiet /uninstall {90140000-2005-0000-0000-0000000FF1CE} şeklinde interaktif ekran görünmeden otomatik olarak kaldırması sağlanmakta.

Güncelleme: Microsoft tarafında sorun çıktığı teyit edilmiş ilgili adreslere http://support.microsoft.com/kb/2570623/tr ve http://support.microsoft.com/kb/2501584/tr adreslerinden ulaşılabilir. 3 çözüm sunmuşlar şu anlık 1.Kaldırmak  2. Devre dışı bırakmayı, Office 2007 veya 2010 yüklemeyi. İlgili linklerden detaylara ulaşabilirsiniz.

Gelelim Scripte.


On Error Resume Next

Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.Properties("Page Size") = 1000

 

dim strCommand
' Microsoft Office File Validation Add-in kaldirma değerleri
strCommand = "MsiExec.exe /quiet /uninstall {90140000-2005-0000-0000-0000000FF1CE}"

 

 

 

 

 

 

‘ oluşan logları kayıt edelim.
Set oFSO = CreateObject(“Scripting.FileSystemObject”)
Set oLog = oFSO.CreateTextFile(“JobExport.Log”)

‘ Hesabı kapalı olmayan bilgisayarları bulalım
objCommand.CommandText = “<LDAP://dc=fabrikam,dc=int>;(&(objectCategory=computer) (!(userAccountControl:1.2.840.113556.1.4.803:=2)));Name;subtree”
Set objRecordSet = objCommand.Execute
dim objComputer
objRecordSet.MoveFirst

 

 

 

 

 

 

 

 

'Bilgisayar kayıtları sona gelene kadar her bilgisayar için komutumuzu çalıştıralım
Do Until objRecordSet.EOF


objComputer = ""
objComputer = objRecordSet.Fields("Name").Value
'Bilgisayarin kapalı mı açık mı olduğunu anlamak için ping atalım
Set objScriptExec = objShell.Exec("ping -n 2 -w 1000 " & objComputer)
strPingResults = LCase(objScriptExec.StdOut.ReadAll)
'Gelen cevapta türkçe sistemler için cevab ingilizceler için Reply içeriyorsa komut çalıştıralım
If InStr(strPingResults, "cevab") or InStr(strPingResults, "Reply") Then
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & objComputer & "\root\cimv2")
Set objProcess = objWMIService.Get("Win32_Process")
errReturn = objProcess.Create(strCommand, null, null, intProcessID)
If errReturn = 0 Then
olog.write objComputer & ";Software Runned. ID=; " & intProcessID & vbcrlf
Else
olog.write objComputer & ";Error ID; " & errReturn & vbcrlf
End If
Else
olog.write("Bilgisayar Kapalı" & vbcrlf)
End If
'Next Computer
objRecordSet.MoveNext

 

 

Loop
olog.Close
msgbox "END OF SCRIPT"

İyi çalışmalar.