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