Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

Patch Installation via VBScript





Frage

Hallo !! Ich habe folgendes Problem. Es soll per Anmeldescript in einen Unternehmen mit einigen Hundert PC’S folgender Patch von Microsoft verteilt werden : Q832483_MDAC_x86.EXE (Microsoft Security Bulletin MS04-003 ) Info von Microsoft : Die folgende Befehlszeile installiert das Sicherheitsupdate z. B. ohne Benutzereingriff und unterdrückt einen Neustart des Computers: Q832483_MDAC_X86.EXE /C:"dahotfix.exe /q /n" /q Englisch, <LAN> ist z. B. ENU. Die Option /q, die für Dahotfix.exe angegeben wird, führt zu einer Installation ohne Benutzereingriff. Die Option /n unterdrückt den Neustart des Computers. Die angehängte Option /q dient dazu, auch das Popupfenster für den Endbenutzer-Lizenzvertrag (End-User License Agreement oder EULA) zu unterdrücken. Unser Script, was bisher mit anderen patchen funktionierte sieht so aus ( Die Installtion soll silent, also ohne Benutzereingriff funktionieren ): 'Hotfixinstallation 'Name, Servicepack Mindestversion, Pfad zur Setupdatei hotfix "KB828749",3,"\\servername\install\software\SpsHotfixes\Hotfixes\Windows2000-KB828749-x86-DEU.exe /Z /M" hotfix "Q832483_MDAC_x86",3,"\\servername\install\software\SpsHotfixes\Hotfixes\Q832483_MDAC_X86.EXE /C:"dahotfix.exe /q /n" /q Jedoch erscheint folgende Fehlermeldung, am Client beim abarbeiten des Anmeldescriptes : Skript :\\servername\install$\InstallatStart.vbs Zeile: 34 ( das ist die Zeile mit hotfix “Q832483_MDAC…….) Zeichen : 114 Fehler : Anweisungsende erwartet Code : 800A0401 Quelle : Kompilierungsfehler in Microsoft VBScript Hotfixroutine vom Script : '-------------------------------------------------------- sub Hotfix(Name,mindestSPVersion,Pfad) on error resume next Dim objWMIService Dim colOperatingSystems dim objOperatingSystem Dim version Dim hotfixinstalliert Dim colQuickFixes Dim objQuickFix Dim errreturncode hotfixinstalliert=false 'lese Servicepackversion aus Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\.\root\cimv2") Set colOperatingSystems = objWMIService.ExecQuery _ ("Select * from Win32_OperatingSystem") For Each objOperatingSystem in colOperatingSystems version= objOperatingSystem.ServicePackMajorVersion Next 'lese Hotfixes aus und vergleiche ob Hotfix schon vorhanden ist Set colQuickFixes = objWMIService.ExecQuery _ ("Select * from Win32_QuickFixEngineering") For Each objQuickFix in colQuickFixes if objQuickFix.HotFixID = name then hotfixinstalliert= true end if Next err.clear 'falls die Betriebssystemversion >= der angegebenen ist und das Hotfix noch nicht auf dem System vorhanden, soll das Hotfix installiert werden if version >= mindestSPVersion and hotfixinstalliert=false then 'fi.writeline "" 'fi.writeline "---" & name & ": " & Date & ": " & Time 'installiert das Programm errreturncode=wshshell.run(pfad,1,true) If err.number = 0 then 'logdatei 0, name & "installation wurde erfolgreich gestartet" else logdatei 1, "es traten Fehler beim Aufrufen der Installation für " & name & " auf: " & err.number & ", " & errreturncode End If End If set objWMIService = nothing set colOperatingSystems = nothing set objOperatingSystem = nothing set version = nothing set hotfixinstalliert = nothing set colQuickFixes = nothing set objQuickFix = nothing set errreturncode = nothing end sub Ich komme hier kein Stück weiter. Habe auch schon in diversen Foren nachgeguckt. Würde mich über Antworten freuen

Antwort 1 von Floooooo

Schau mal diese Zeile an:

hotfix "Q832483_MDAC_x86",3,"\\servername\install\software\SpsHotfixes\Hotfixes\Q832483_MDAC_X86.EXE /C:"dahotfix.exe /q /n" /q


Es kommt mir so vor, als wären die Anführungszeichen falsch gesetzt (z.B. hinten nach C:)

Antwort 2 von Spider81

Hallo Floooooo !!

Der Fehler muss in der Zeile sitzen. Habe auch bereits mal das Anführungszeichen nach dem C: rausgenommen. Dann läuft das Script allerdings überhaupt nicht an.
Hast Du noch eine Idee !

Antwort 3 von Floooooo

Hast du schonmal:

hotfix "Q832483_MDAC_x86",3,"\\servername\install\software\SpsHotfixes\Hotfixes\Q832483_MDAC_X86.EXE /C:"dahotfix.exe /q /n"" /q


bzw.

hotfix "Q832483_MDAC_x86",3,"\\servername\install\software\SpsHotfixes\Hotfixes\Q832483_MDAC_X86.EXE /C:"dahotfix.exe /q /n" /q"


probiert?

(Je nachdem, wo das /q hingehört)?
In deiner bisherigen Zeile hast du nämlich eine ungerade Anzuahl an Gänsefüßchen, und das sollte ja nicht sein.

Antwort 4 von Spider81

Hallo Floooooo !!

Super nett von Dir, dass Du mir helfen möchtest.
Habe beides ausprobiert. Bekomme wieder die gleiche Fehlermeldung.

Zur Info :
Diese installtionsroutine von dem Patch funktioniert folgendermassen :
Wenn man Q832483_MDAC_X86.EXE händisch aufruft, erscheint die Lizenzvereinbarung, die man bestätigen muss. Dann werden die Daten (unter anderem die Datei " dahotfix ". Das ist der Installer des Patches) entpackt und die Datei " dahotfix.exe " startet selbständig. Hier muss man mit OK bestätigen, damit ide Installation ausgeführt wird.
Also: Das ganze soll einfach silent laufen.

Vielleicht spielt mein Hotfixroutine und die Zeile 34 einfach nicht miteinander ?

Noch eine Idee

Antwort 5 von Floooooo

Hmmm.... ich versteh schon, was du willst.

Ich kann allerdings auch keinen Grund erkennen, warum es mit diesem Patch nicht so funktionieren soll.

Noch ne blöde Idee: Zeichen 114 ist genau das x von dahotfix vor dem .exe - probier doch mal, was er sagt, wenn du das .exe weglässt (also: hotfix "Q832483_MDAC_x86",3,"\\servername\install\software\SpsHotfixes\Hotfixes\Q832483_MDAC_X86.EXE /C:"dahotfix /q /n" /q )


Antwort 6 von Undertaker

Hi,

Ich denke, diese Variante dürfte korrekt sein:
hotfix "Q832483_MDAC_x86",3,"\\servername\install\software\SpsHotfixes\Hotfixes\Q832483_MDAC_X86.EXE /C:"dahotfix.exe /q /n" /q"

/C: soll den nachfolgenden Befehl ausführen. Dies müßte "dahotfix.exe /q /n" sein.
Das letze /q gehört wieder zur Q832483_MDAC_X86.EXE.
Das Problem ist nun anscheinend, das VB die Anführungszeichen falsch interpretiert. Also nicht so, wie Klammen mathematisch interpretiert werden, sondern von links nach rechts.

Du mußt also ein Zeichen finden, das entweder von VB wie ein Anführungszeichen (erste und vierte Anführungszeichen) oder von Windows (zweite und dritte Anführungszeichen) so interpretiert wird.
Vielleicht gibt es auch die Möglichkeit, das zweite und dritte Anführungszeichen durch Platzhalter (#,~,@ oä.) zu ersetzen und in der weiteren Bearbeitung (beispielsweise, wenn die Zeile in einer Variablen gespeichert ist) durch Anführungszeichen zu ersetzen...

Gruß
Undertaker

Antwort 7 von Spider81

Danke für Eure Hilfe !

Werde jetzt noch einiges probieren. Bei Erfolg gebe ich Euch bescheid.

Grüße

Spider81

Antwort 8 von Spider81

Mit folgendem Syntax hat es funktioniert :

hotfix "Q832483_MDAC_x86",3,"\\servername\install\software\SpsHotfixes\Hotfixes\Q832483_MDAC_X86.EXE /C:" & chr(34) & "dahotfix.exe /q /n" & chr(34) & "/q"

Grüße

Spider81

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: