l4schi
Goto Top

Office SP mit Batch auslesen und in .txt schreiben

Ich möchte wissen, ob und welches ServicePack für Office 2003 auf den Clients installiert ist.

Guten morgen,

wie im Vorwort schon beschrieben, möchte ich gerne das ServicePack von Office über ein Batch auslesen.
Leider konnte ich im Netz nur Skripts zur Office-Version finden.

Es handelt sich um XP-Pro-Clients.

Gibt es eine Möglichkeit das auszulesen? Wenn ja, wie muss die bat aussehen?

DANKE schonmal face-smile

Content-ID: 163461

Url: https://administrator.de/contentid/163461

Ausgedruckt am: 25.11.2024 um 10:11 Uhr

Skyemugen
Skyemugen 28.03.2011 um 11:51:16 Uhr
Goto Top
Aloha,

nun wie bei der Office-Version (HKLM_Software_Microsoft_Office_XX.0) lässt sich auch per registry die SP-Version auslesen, allerdings(!) nur indirekt über die ProductVersion (Office_XX.0_Common_ProductVersion) der letzte Block ist die Build-Version, die sich zwar je nach SP unterscheidet aber auch innerhalb des SP je nach Update unterscheiden kann.

Du müsstest also die Build-Versionen der SP-Versionen recherchieren, dann per batch (denke mal zum Punkt 1 hast du schon was gefunden, bisschen umbasteln geht schnell) die ausgelesene Version mit den vorgegebenen vergleichen, um die Aussage zu bekommen, welches SP installiert ist.

greetz André
L4SCHI
L4SCHI 28.03.2011 um 15:49:27 Uhr
Goto Top
Hallo André,

vielen lieben Dank für die schnelle Hilfe. >>>> Funktioniert prima.

Lösung:

net use U: \\DATEIAUSGABE

set RegKey=HKLM\SOFTWARE\Microsoft\Office\11.0\Common\ProductVersion
Reg query %RegKey% /v lastproduct|FIND /I "11.0.8173">NUL
IF NOT ERRORLEVEL 1 (echo %computername% hat Office2003 installiert > U:\%computername%.txt)

for /f "tokens=3" %%i in ('reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\11.0\Common\ProductVersion\ /v LastProduct') do set "ver=%%i"
IF "%ver%"=="11.0.8173.0" (echo auf %computername% ist das ServicePack 3 installiert!!! >> U:\SP3.txt) else (echo %computername%--------SP3 ist nicht installiert--------%computername% >> u:\SP3.txt)

net use u: /delete /yes


Die Buildnr. für die jeweiligen Updates findet man auf:
60730
60730 28.03.2011 um 23:53:42 Uhr
Goto Top
moin,

dein Problem ist zwar gelöst - ich würde dir aber trotzdem ein zwei Ansätze mitgeben wollen

  • Ansatz 1:

echo auf %computername% ist das ServicePack 3 installiert!!! >> U:\SP3.txt
Auch wenn es dir "jetzt" noch eindeutig logisch erscheint, dass es sich um das Office 11 Sp3 handelt - irgendwann ist es das nicht mehr.
else (echo %computername%--------SP3 ist nicht installiert--------%computername% >> u:\SP3.txt
Ist (in meinen Augen) auch suboptimal
else (echo %computername%--------SP3 ist nicht installiert--------%computername%>> u:\NO_Office_11_SP3.txt
Gäbe es - nachdem alle Rechner dieses Script abgearbeitet haben keine Datei NO_Office_11_SP3.txt - wüsstest du - alle im Boot.
"So" mußt du die allinclusive Datei mühsam abflücken.


  • Ansatz 2:
Wsus

  • Ansatz 3:
Scriptschnippsel zwischen codeblöcke werden speziell im Batch for Hell Bereich sehr gerne gesehen.

Gruß
L4SCHI
L4SCHI 29.03.2011 um 08:23:20 Uhr
Goto Top
Guten morgen,

Ansatz 1:
danke für die Tipps werds gleich mal in diesem Skript umsetzen.

Ansatz 2:
Wsus will man sich bei uns nicht leisten face-sad

Ansatz 3:
Wie meinst du denn das genau?

Gruß
L4SCHI
Skyemugen
Skyemugen 29.03.2011 um 08:41:33 Uhr
Goto Top
Zitat von @L4SCHI:
Guten morgen,
Aloha
Ansatz 3:
Wie meinst du denn das genau?
Wie üblich per
net use U: \\DATEIAUSGABE
set RegKey=HKLM\SOFTWARE\Microsoft\Office\11.0\Common\ProductVersion
Reg query %RegKey% /v lastproduct|FIND /I "11.0.8173">NUL  
IF NOT ERRORLEVEL 1 (echo %computername% hat Office2003 installiert > U:\%computername%.txt)
for /f "tokens=3" %%i in ('reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\11.0\Common\ProductVersion\ /v LastProduct') do set "ver=%%i"  
IF "%ver%"=="11.0.8173.0" (echo auf %computername% ist das ServicePack 3 installiert!!! >> U:\SP3.txt) else (echo %computername%--------SP3 ist nicht installiert--------%computername% >> u:\SP3.txt)  
net use u: /delete /yes

greetz André
Biber
Biber 29.03.2011 um 09:14:33 Uhr
Goto Top
Moin L4SCHI,

ich fange auch gerade an, mich ein bisschen mit dem Thema Batch auseinanderzusetzen.
Magst du mir mal kurz die Notwendigkeit bzw. den sittlichen Mehrwert der zweiten "REG QUERY"-Abfrage erklären?
So insbesondere im Vergleich zur ersten..
Da blick ich's noch nicht so ganz...

Grüße
Biber
L4SCHI
L4SCHI 29.03.2011 um 10:28:29 Uhr
Goto Top
Guten morgen Biber,

in der Zeile 3 checke ich eigentlich nur, ob überhaupt Office 2003 installiert ist.
Ich brauche das, um bei Clients mit fehlendem Office 2003, dieses nachzuinstallieren.
Die zweite Abfrage in Zeile 5 benötige ich um das Ergebnis aufzuteilen. Sprich den String nach dem dritten Leerzeichen zu verwenden.

Wenn du die RegQuery-Abfrage in die Kommandozeile schreibst bekommst du ein Ergebnis, welches mehr Informationen enthält als nur die Versionsnummer.
Das muss eben etwas gefiltert werden.

Ich hoffe es ist halbwegs verständlich.

Gruß L4SCHI
L4SCHI
L4SCHI 29.03.2011 um 10:57:06 Uhr
Goto Top
Ah Okay,

DANKE werd mich dran halten.

Gruß
L4SCHI
Biber
Biber 29.03.2011 um 11:19:50 Uhr
Goto Top
Moin L4SCHI,

ich formuliere es mal um...

Das hier ist deine Variante mit zwei REG QUERY-Abfragen..
net use U: \\DATEIAUSGABE
set RegKey=HKLM\SOFTWARE\Microsoft\Office\11.0\Common\ProductVersion
Reg query %RegKey% /v lastproduct|FIND /I "11.0.8173">NUL  
IF NOT ERRORLEVEL 1 (echo %computername% hat Office2003 installiert > U:\%computername%.txt)
for /f "tokens=3" %%i in ('reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\11.0\Common\ProductVersion\ /v LastProduct') do set "ver=%%i"  
IF "%ver%"=="11.0.8173.0" (echo auf %computername% ist das ServicePack 3 installiert!!! >> U:\SP3.txt) else (echo %computername%--------SP3 ist nicht installiert--------%computername% >> u:\SP3.txt)  
net use u: /delete /yes


Was unterscheidet diese vom Ergebnis her von einer Variante mit einer REG QUERY-Abfrage wie dieser...???
net use U: \\DATEIAUSGABE

set "RegKey=HKLM\SOFTWARE\Microsoft\Office\11.0\Common\ProductVersion"  
set "VersID=11.0.8173.0" && REM VersionsID von SP3  
Reg query %RegKey% /v lastproduct|FIND /I "%VersID%">NUL  
IF NOT ERRORLEVEL 1 (
    echo %computername% hat Office2003 installiert > U:\%computername%.txt)
    echo auf %computername% ist das ServicePack 3 installiert!!! >> U:\SP3.txt
 ) else (
   echo %computername%--------SP3 ist nicht installiert--------%computername% >> u:\SP3.txt
)
net use u: /delete /yes

Grüße
Biber
L4SCHI
L4SCHI 29.03.2011 um 11:29:09 Uhr
Goto Top
Wenn ich das richtig interpretiere, dann wird in Zeile 5 - 8, ausgegeben, dass sobald
Office 2003 installiert ist auch das ServicePack 3 vorhanden ist.

Wenn der Client-PC nun aber nur SP2 installiert hat kommt man auch in die Zeilen 7 und 8.


Korrigiere mich bitte wenn ich fals liege.
Danke

Gruß
L4SCHI
60730
60730 29.03.2011 um 12:23:43 Uhr
Goto Top
moin ihr zwei hybschen face-wink

@Biber so genau hab ich mir das gestern gar nicht angesehen - denn auf meinem Apfel will ich batch und dieses regquery Windowszeugs garnicht face-wink
(außerdem war der Pistazieneishakenmann ja auch schon da)

Obwohl ich - in der Firma - ja gerne mit reg gedöhnsfallerie und Hoppssassa werkel - ist mir das ungetestet in dem Zusammenhang so auch suspekt.

Ich hab sowas nämlich schonmal gebaut und dann erlebt, dass der d00feliche Office importkonverter sich in der Registry auch als Office ausgibt.
ACHTUNG - das ist für den genauen Fall ungetestetes Halbwissen! - ich vermute im speziellen fall wäre ein
if exist "%programfiles%\pfad\msaccess.exe"
sinniger - auch hier ich hab hier windowsfreie Zone und da bin ich stolz drauf face-wink

Und das SP würde ich evtl. auch über die reste / das Logfile vom installer auslesen - existiert die LogDatei und steht da success drin.

Gruß

edit:
Wsus will man sich bei uns nicht leisten
ich gebs offen und ehrlich zu - meine Wsusse laufen auf irgendwelchen Servern in den Standorten auf jeweils Billich ungesicherten und ungespiegelten WD Black SATA 2 TB Platten
Der frisst so kein Brot und einen Mirror brauchts da nicht - Platte im Orkus - Wsus runter - neue Platte rein Wsus wieder drauf - im Startupscript ein wuauclt /reportnow reingedrückt und in 1 Woche ist alles wieder komplett da
Biber
Biber 29.03.2011 um 12:57:38 Uhr
Goto Top
Moin L4SCHI,

Ich bin der Meinung, dass in beiden REQ QUERY-Abfragen inhaltlich identisch abgefragt wird und es sich daher nicht im ersten Fall auf "Office 2003 installiert UND SP3 installiert" und im zweiten Fall auf irgendetwas anderes handelt könnte.

Deine Variante schritt-by-schritt am CMD-Prompt:
>set RegKey=HKLM\SOFTWARE\Microsoft\Office\11.0\Common\ProductVersion

>reg query %regkey%

! REG.EXE VERSION 3.0

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\11.0\Common\ProductVersion
    LastProduct REG_SZ  11.0.8173.0

>reg query "%regkey%" /v LastProduct|find "11.0.8173.0"
    LastProduct REG_SZ  11.0.8173.0
#### bis hier war es die erste REG QUERY

### ab hier die zweite wie im Schnipsel OHNE Variable %regkey%"
>reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\11.0\Common\ProductVersion\ /v LastProduct

! REG.EXE VERSION 3.0

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\11.0\Common\ProductVersion\
    LastProduct REG_SZ  11.0.8173.0

Grüße
Biber
L4SCHI
L4SCHI 29.03.2011 um 13:58:46 Uhr
Goto Top
Stimmt jetzt sehe ich es auch.

Muss mir angwöhnen vernünftig zu schreiben.

Bin in ziemlicher Anfangsphase mit der ganzen Batchgeschichte. Deswegen war ich primär erstmal froh, dass es gelaufen ist.
Nun hab ich auch neben *was gelernt* auch wieder was zum Verbessern.

Danke

Ich werde die erste Abfrage herausnehmen und mich mal näher mit dem Vorschlag von TimoBeil befassen.

DANKE FÜR DIE GEDULD
Skyemugen
Skyemugen 29.03.2011 um 14:14:20 Uhr
Goto Top
Aloha,

Anmerkung: Office\11.0\ = Office2003, wäre etwas anderes installiert, würde 11.0 nicht gefunden werden (sondern 10.0 oder 12.0 oder was weiß der Geier)

greetz André
L4SCHI
L4SCHI 29.03.2011 um 14:18:05 Uhr
Goto Top
Hi,

das könnte man natürlich auch noch bewerkstelligen. Die Arbeit werd ich mir nicht mehr damit antun.
Bei uns ist nur Office2003 im Umlauf face-smile

Für mich ist nur wichtig herauszufiltern, wo überhaupt kein Office03 installiert ist.

Aber auch hier wieder danke für die Anmerkung face-wink

Gruß
L4SCHI