Prüfung und Installation der Updates im Hintergrund

Prüfung und Installation der Updates im Hintergrund

Postby adler » 14.08.2017, 17:54

Hallo,

ich benutze wsusoffline nun schon eine Weile und soweit funktioniert alles gut auf einen kleinen Debian Server. Insgesamt versorge ich rund 30 Windows 10 Clients damit. Es ist so eingestellt, dass bei jedem Login (per Script dann tatsähclich nur 1x die Woche) das Update auf den Clients gestartet. Hierbei starten ja dann immer die fröhlichen CMD Fenster und verwirren zum Teil die Benutzer, gerade wenn es größere Updates sind, die länger dauern. Daher wollte ich mal anfragen, inwiefern es möglich ist das Prüfen und Aktualisieren vollständig im Hintergrund (versteckt) ausführen zu lassen, ähnlich dem original WSUS? So würden die Benutzer nicht mehr irritiert werden und womöglich würden die dann eher weniger die CMD Fenster schließen, sodass die Updates abbrechen.

Ich hoffe ich bin mit meiner Idee/Wunsch nicht alleine ;).

Grüße aus der Welt der IT
adler
 
Posts: 5
Joined: 14.08.2017, 17:45

Re: Prüfung und Installation der Updates im Hintergrund

Postby Dalai » 14.08.2017, 19:04

Es ist dir unbenommen, die Skripte versteckt auszuführen, z.B. per CMDOW. Eine Möglichkeit wäre, nicht wsusoffline\client\Update.cmd auszuführen sondern ein eigenes Skript, in dem CMDOW Anwendung findet, vielleicht so (ungetestet):
Code: Select all
@echo off
c:\path\to\cmdow.exe @ /HID
pushd "%~dp0cmd"
call DoUpdate.cmd %*
popd
REM Optional folgende Zeile
c:\path\to\cmdow.exe @ /VIS
Selbiges funktioniert natürlich auch, wenn das (Do)Update.cmd nicht aus einer CMD sondern anderweitig gerufen wird, z.B. per VBS, AutoIt, C++ oder sonstwie - Fenster verstecken geht immer irgendwie.

Grüße
Dalai
Dalai
 
Posts: 378
Joined: 12.07.2016, 21:00

Re: Prüfung und Installation der Updates im Hintergrund

Postby adler » 15.08.2017, 14:09

Grüß dich Dalai,

vielen Dank für deine schnelle Antwort. Ich habe es heute mal getestet, stoße allerdings auf Probleme.

Ich verwende zum Starten die StartUpdater.cmd

Code: Select all
@echo off
REM ***** Konfiguration ******
set Freigabe=\\192.168.1.69\wsus
set NetDrive=W:
REM Flash-Update pruefen/durchfuehren, bei 0 kein Flash-Update
set FlashUpdate=0
REM Java-Update pruefen/durchfuehren, bei 0 kein Java-Update
set JavaUpdate=0
REM Bei 1 wird jeden Tag auf Windows-Updates geprueft
Set EveryDay=1
REM ***************************
set DOW=


if "%EveryDay%"=="1" (
goto Update
)

for /f %%g in ('wmic path win32_localtime get dayofweek^|findstr /v /r "^$"') do (
set DOW=%%g)

if %DOW%==0 set DOW=So
if %DOW%==1 set DOW=Mo
if %DOW%==2 set DOW=Di
if %DOW%==3 set DOW=Mi
if %DOW%==4 set DOW=Do
if %DOW%==5 set DOW=Fr
if %DOW%==6 set DOW=Sa

if "%DOW%"=="Mi" (
goto Update
)
goto noUpdate

:Update
if not exist %NetDrive% (
net use %NetDrive% %Freigabe%  /persistent:no
)

:JavaUpdate
if "%JavaUpdate%"=="1" (
echo Starte Java-Update
%NetDrive%
cd \
echo %DATE% %TIME% %COMPUTERNAME% Java-Update >> log\UpdateLog.txt
if exist pcwJavaUpdater.exe (
pcwJavaUpdater.exe /a
echo Java-Update geprueft/durchgefuehrt
)
)

:FlashUpdate
if "%FlashUpdate%"=="1" (
echo Starte Flash-Update
%NetDrive%
cd \
echo %DATE% %TIME% %COMPUTERNAME% Flash-Update >> log\UpdateLog.txt
if exist pcwFlashUpdater.exe (
pcwFlashUpdater.exe /a
echo Flash-Update geprueft/durchgefuehrt
)
)

:WinUpdate
echo Starte Windows-Update
%NetDrive%
cd \
echo %DATE% %TIME% %COMPUTERNAME% Win-Update>> log\UpdateLog.txt
cd client\cmd
call doupdate.cmd /updatercerts /updatetsc /updatecpp

REM /autoreboot funktioniert nur, wenn der anonyme Zugriff auf das Netzwerklaufwerken möglich ist

echo Update durchgefuehrt

:unmount
if exist %NetDrive% (
%Systemdrive%
net use %NetDrive% /delete /yes
exit /B
)

:noUpdate
echo Kein Update geplant/erforderlich
:end





Den folgenden Abschnitt habe ich angepasst (cmdow.exe liegt unter client\cmd):

Code: Select all
:WinUpdate
echo Starte Windows-Update
%NetDrive%
cd \
echo %DATE% %TIME% %COMPUTERNAME% Win-Update>> log\UpdateLog.txt
cd client\cmd
cmdow.exe @ /HID
pushd "%~dp0cmd"
call doupdate.cmd %* /updatercerts /updatetsc /updatecpp
popd


Leider wird die doupdate.cmd irgendwie nicht gestartet. Man sieht auch leider keine Fehlermeldungen. Auch im Hintergrund läuft nichts, da sonst die Log-Datei schreiben würde.

Starte ich das Script ohne die Modifikationen startet es ganz normal, allerdings eben nicht im Hintergrund :cry: .

Habe ich da irgendetwas übersehen?
adler
 
Posts: 5
Joined: 14.08.2017, 17:45

Re: Prüfung und Installation der Updates im Hintergrund

Postby Dalai » 15.08.2017, 16:05

Entweder mit cd ins Verzeichnis wechseln oder mit pushd auf den Stack, aber nicht beides. So müsste es tun:
Code: Select all
:WinUpdate
echo Starte Windows-Update
cd /D %NetDrive%\
echo %DATE% %TIME% %COMPUTERNAME% Win-Update>> log\UpdateLog.txt
pushd "%~dp0cmd"
cmdow.exe @ /HID
call doupdate.cmd /updatercerts /updatetsc /updatecpp %*
popd
Ggf. ist sogar das %* überflüssig, wenn du deinem Skript keine weiteren Parameter übergibst (sollte aber nicht stören). Wenn das immer noch nicht funktioniert, kommentier erstmal den Aufruf von cmdow aus, und schau dir die Ausgabe an.

Grüße
Dalai
Dalai
 
Posts: 378
Joined: 12.07.2016, 21:00

Re: Prüfung und Installation der Updates im Hintergrund

Postby adler » 15.08.2017, 17:17

Grüß dich Dalai,

ich habe es mal getestet und leider läuft es nicht, auch wenn ich cmdow.exe ausklammere. Irgendwie kommt der mit dem Pfad nicht klar. Muss man evtl. die cmdow.exe ins lokale Windows-Verzeichnis schmeißen? Ich habe e derzeit auf dem Samba-Verzeichnis von wsusoffline unter client\cmd drin.

Grüße
Attachments
fehler.png
(8.69 KiB) Not downloaded yet
adler
 
Posts: 5
Joined: 14.08.2017, 17:45

Re: Prüfung und Installation der Updates im Hintergrund

Postby Dalai » 15.08.2017, 19:05

Mach mal zum Debugging das echo an und gib das aktuelle Verzeichnis aus, z.B. so
Code: Select all
:WinUpdate
echo Aktueller Pfad:
cd
echo on
REM Restliche Befehle ab hier
Dein Fehlerbild passt aber auch nicht zum geposteten Code-Abschnitt. Ich sehe im Bild keine Ausgabe von "Starte Windows-Update", denn wenigstens das muss ja gehen; stattdessen lese ich dort "Admin-Shell starten", was sich im geposteten Code nicht findet. Da klemmt es noch irgendwo anders.

Grüße
Dalai
Dalai
 
Posts: 378
Joined: 12.07.2016, 21:00

Re: Prüfung und Installation der Updates im Hintergrund

Postby adler » 15.08.2017, 20:14

Grüß dich Dalai,

Vielen Dank für deine intensive Unterstützung ;). Ich habe nun noch ein wenig rumgespielt und es lag doch noch an der Anpassung der Pfade.

Der komplett Abschnitt lautet nun:

Code: Select all
:WinUpdate
echo Starte Windows-Update
cd /D %NetDrive%\client\cmd
echo %DATE% %TIME% %COMPUTERNAME% Win-Update>> c:\wsus\UpdateLog.txt
pushd "%~dp0client\cmd"
cmdow.exe @ /HID
call doupdate.cmd /updatercerts /updatetsc /updatecpp %*
popd


Und in der Tat, nun wird die doupdate.cmd auch wirklich im Hintergrund ausgeführt (per Log überprüft). So läuft es nun wie ich mir das dachte.

Grundlegend könnte der Code auch für andere so interessant sein, wenn man wie ich mehrere Client-Rechner auf den aktuellen Stand halten möchte, ohne die Arbeit der Benutzer "zu stören". Und alles schön im Hintergrund lassen lassen ;).
adler
 
Posts: 5
Joined: 14.08.2017, 17:45

Re: Prüfung und Installation der Updates im Hintergrund

Postby Dalai » 15.08.2017, 20:24

Ah, freut mich, dass es nun läuft :). Wie ich schon weiter oben erwähnte, genügt cd oder pushd/popd. Da nach dem cd /D schon client\cmd das aktive Verzeichnis ist, ist das nachfolgende pushd überflüssig. Auch wenn es nicht schadet, weil es einen absoluten Pfad übergeben bekommt, würde ich es rausnehmen, weil man sich beim (nächsten) Lesen des Codes fragt, warum das da steht. (Und wenn man das pushd entfernt, sollte man auch das popd rausnehmen.)

Grüße
Dalai
Dalai
 
Posts: 378
Joined: 12.07.2016, 21:00

Re: Prüfung und Installation der Updates im Hintergrund

Postby adler » 15.08.2017, 20:28

Hi,

Vielen Dank nochmals für deine Feinkorrekturen ;).

Das Script ist nun bereinigt:

Code: Select all
:WinUpdate
echo Starte Windows-Update
cd /D %NetDrive%\client\cmd
echo %DATE% %TIME% %COMPUTERNAME% Win-Update>> %NetDrive%\log\UpdateLog.txt
cmdow.exe @ /HID
call doupdate.cmd /updatercerts /updatetsc /updatecpp %*
REM /autoreboot funktioniert nur, wenn der anonyme Zugriff auf das Netzwerklauf$
echo Update durchgefuehrt


und funktioniert so auch ohne Probleme ;).

Nochmals vielen Dank ;)
adler
 
Posts: 5
Joined: 14.08.2017, 17:45

Re: Prüfung und Installation der Updates im Hintergrund

Postby Dalai » 15.08.2017, 22:15

adler wrote:Nochmals vielen Dank ;)

Büddeschön 8-).

Grüße
Dalai
Dalai
 
Posts: 378
Joined: 12.07.2016, 21:00


Return to Anregungen / Suggestions

Who is online

Users browsing this forum: Bing [Bot] and 3 guests

cron