Monat: Oktober 2018
installiertes Office erkennen
Dieses Script sollte ursprünglich als Startup-Script vor Benutzeranmeldung ausgeführt werden. Leider deinstalliert sich nicht jede Office-Version im Silent-Modus und erwartet eine Benutzereingabe, die ja von Benutzeranmeldung nie kommt.
Dennoch läuft das Script, wenn man es nach Benutzeranmeldung startet, meinet halben über Taskplaner/ LogonScript.
Meiner Erfahrung nach macht sowas aber wenig Sinn, da der Benutzer trotz Vorankündigung und Anleitung nicht das macht was man erwartet und so die automatische Deinstallation/ Installation schief geht. Also lieber sich selber an den PC setzen.
Vorbereitung
Bereitstellungstool von Office herunterladen und ODT-Offline-Version erstellen.
https://docs.microsoft.com/de-de/deployoffice/overview-of-the-office-2016-deployment-tool
Tipp:
Erstmal keinen PC auf TRUE setzen. Über set log= kann über einen Pfad zu einem beschreibbaren Verzeichnis eine Log-Datei erstellt werden. So kann das Script als Startup/Logon-Script ausgeführt werden und man erfährt auf welchem PC welche Office-Version installiert ist.
Ablauf
- erkennen der installierte Office-Version [o365|2013|2010]
- innerhalb der erkannten Office-Versions-Routine → iF defined [o365|2013|2010]
PC-Name prüfen ob dieser zur Deinstallaition/Installation berechtigt ist
Call-Befehl zur Deinstallation aufrufen → call %[o365|2013|2010]% - neues Office 365 aus Offline-ODT installieren, wahlweise als 32bit und 64bit möglich.
call \\spc\…..\setup.exe /configure \\spc\….\configuration32bit.xml|configuration64bit.xml]
- Wird kein Office erkannt, so soll nach PC-Namensprüfung Office 365 aus Offline-ODT installiert werden → :error
Code
@echo off set regKey=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall set regKey64=HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall set regString=/v UninstallString set "log=" set "o365=" set "o2013=" set "o2010=" set "o2007=" rem Office 365 RegKeys FOR /F "tokens=2* delims= " %%A IN ('REG QUERY "%regKey%\O365BusinessRetail - de-de" %regString%') DO SET o365=%%B &::globale Erkennung Microsoft Office 365 IF not defined o365 FOR /F "tokens=2* delims= " %%A IN ('REG QUERY "%regKey%\{90150000-007E-0000-1000-0000000FF1CE}" %regString%') DO SET o365=%%B &:: Microsoft Office 365 Business - Version 2013 IF not defined o365 FOR /F "tokens=2* delims= " %%A IN ('REG QUERY "%regKey%\{90160000-007E-0000-1000-0000000FF1CE}" %regString%') DO SET o365=%%B &:: Microsoft Office 365 Business - Version 2016 rem Office 2013 RegKeys FOR /F "tokens=2* delims= " %%A IN ('REG QUERY "%regKey%\HomeBusinessRetail - de-de" %regString%') DO SET o2013=%%B &::globale Erkennung Microsoft Office 2013 IF not defined o2013 FOR /F "tokens=2* delims= " %%A IN ('REG QUERY "%regKey64%\HomeBusinessRetail - de-de" %regString%') DO SET o2013=%%B &::globale Erkennung Microsoft Office 2013 (64bit) rem Office 2010 RegKeys FOR /F "tokens=2* delims= " %%A IN ('REG QUERY "%regKey%\Office14.SingleImage" %regString%') DO SET o2010=%%B &::Microsoft Office Home & Business SingleImage IF not defined o2010 FOR /F "tokens=2* delims= " %%A IN ('REG QUERY "%regKey64%\Office14.SingleImage" %regString%') DO SET o2010=%%B &::Microsoft Office Home & Business SingleImage (64bit) set log=\\spc\NETLOGON\Scripts\filesStart\logs\Office\Office365_%computername%.log IF defined o365 ( Echo "Office 365 erkannt" Echo "Office 365 erkannt"> %log% Echo Start %date% %time%>> %log% ECHO UninstallString365=%o365%>> %log% Echo Client "%computername%" wird für Deinstallation überprüft>> %log% set "TRUE=" IF "%computername%"=="V01WIN7-64.." set TRUE=1 IF "%computername%"=="EDV-1510d..." set TRUE=1 IF defined TRUE ( echo Office-Deinstallation wird in die Wege geleitet>> %log% call %o365%>> %log% Echo %date% %time%>> %log% echo Office365-Installation wird in die Wege geleitet>> %log% call \\spc\NETLOGON\Scripts\files\Office\ODT\deploymenttool\Office365_2016_16\setup.exe /configure \\spc\NETLOGON\Scripts\files\Office\ODT\deploymenttool\Office365_2016_16\configuration32bit.xml>> %log% )else ( echo Client ist für Deinstallation nicht ausgewählt worden>> %log% ) Echo Ende %date% %time%>> %log% goto ende ) set log=\\spc\NETLOGON\Scripts\filesStart\logs\Office\Office2013_%computername%.log IF defined o2013 ( Echo "Office 2013 erkannt" Echo "Office 2013 erkannt"> %log% Echo Start %date% %time%>> %log% ECHO UninstallString2013=%o2013%>> %log% Echo Client "%computername%" für Deinstallation wird überprüft>> %log% set "TRUE=" IF "%computername%"=="V01WIN7-64.." set TRUE=1 IF "%computername%"=="EDV-1510d..." set TRUE=1 IF defined TRUE ( echo Office-Deinstallation wird in die Wege geleitet>> %log% call %o2013%>> %log% Echo %date% %time%>> %log% echo Office365-Installation wird in die Wege geleitet>> %log% call \\spc\NETLOGON\Scripts\files\Office\ODT\deploymenttool\Office365_2016_16\setup.exe /configure \\spc\NETLOGON\Scripts\files\Office\ODT\deploymenttool\Office365_2016_16\configuration32bit.xml>> %log% )else ( echo Client ist für Deinstallation nicht ausgewählt worden>> %log% ) Echo Ende %date% %time%>> %log% goto ende ) set log=\\spc\NETLOGON\Scripts\filesStart\logs\Office\Office2010_%computername%.log IF defined o2010 ( Echo "Office 2010 erkannt" Echo "Office 2010 erkannt"> %log% Echo Start %date% %time%>> %log% ECHO UninstallString2010=%o2010%>> %log% Echo Client "%computername%" wird für Deinstallation überprüft>> %log% set "TRUE=" IF "%computername%"=="V01WIN7-64.." set TRUE=1 IF "%computername%"=="EDV-1510d..." set TRUE=1 IF "%computername%"=="VERTR03-1211.." set TRUE=1 IF "%computername%"=="VERTR02-1706" set TRUE=1 IF defined TRUE ( echo Office-Deinstallation wird in die Wege geleitet>> %log% call %o2010%>> %log% Echo %date% %time%>> %log% echo Office365-Installation wird in die Wege geleitet>> %log% call \\spc\NETLOGON\Scripts\files\Office\ODT\deploymenttool\Office365_2016_16\setup.exe /configure \\spc\NETLOGON\Scripts\files\Office\ODT\deploymenttool\Office365_2016_16\configuration32bit.xml>> %log% )else ( echo Client ist für Deinstallation nicht ausgewählt worden>> %log% ) Echo Ende %date% %time%>> %log% goto ende ) :error echo fehler %errorlevel% echo Kein gültiges Office erkannt set log=\\spc\NETLOGON\Scripts\filesStart\logs\Office\OfficeXX_%computername%.log Echo Kein gültiges Office erkannt> %log% Echo Berechtigung zur Neuinstallation wird für "%computername% geprüft>> %log% set "TRUE=" IF "%computername%"=="VWIN10-TEST01" set TRUE=1 IF "%computername%"=="VERTR03-1211.." set TRUE=1 IF "%computername%"=="VERTR02-1706" set TRUE=1 IF defined TRUE ( echo Office365-Installation wird in die Wege geleitet>> %log% Echo Start %date% %time%>> %log% call \\spc\NETLOGON\Scripts\files\Office\ODT\deploymenttool\Office365_2016_16\setup.exe /configure \\spc\NETLOGON\Scripts\files\Office\ODT\deploymenttool\Office365_2016_16\configuration32bit.xml>> %log% )else ( echo Client ist für Neuinstallation nicht ausgewählt worden>> %log% ) Echo Ende %date% %time%>> %log% :ende echo ende