generallerror
Goto Top

Software-Installation anhand eines VB-Scripts und Logon-Script

Hallo

Mein Netzwerk:
- Windows 2003 Server
- Windows XP Clients

Mein Vorhaben:
Ich habe ein .MSI-Paket und würde den jetzt gerne im Netzwerk verteilen. Betroffen sind ca. 300 Computer.

Über das AD kann ich die Softwareverteilung nicht durchführen, weil die Computer nicht gruppiert sind (ich müsste jeden Computer einzeln bei der GPO eintragen) und das ist mir zu aufwändig....da suche ich lieber stundenlang nach einer Lösung im Internet ^^

Wie ich das Script dann am Ende einbinde ist kein Problem. Nur tue ich mir schwer beim Erstellen des Scripts.

Zu min. habe ich mal ein Script gefunden das dass kann:

'============================================START=============================================  

On Error Resume Next

' Variablen zur Deinstallation  
Dim WshShell, Path, Value, Typ

strComputer = "."  
Set objWMIService = GetObject("winmgmts:" _  
 & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")  

Dim objFSO, objTextFile, colSoftware

' Variablen für die CMD Befehle  
Set CMD = WScript.CreateObject("WScript.Shell")  
Dim CmdRun

' Variablen für die Deinstallation  
Dim  objWMIService, objSoftware
Dim User, Password, Computer, ProductName

' Variablen für die Deinstallation  
Dim objWBemLocator, objConnection
Dim InstallError

' Variablen für MsgBox und andere zwecke  
Dim y, x, installTM, deinstallSAV, installEnd, SAVserverPath, TMserverIP, TMOSpack, HelpdeskName, HelpdeskMail, HelpdeskTel, Creg

deinstallSAV = False
installTM = False
installEnd = False


TMserverIP = "IP"  
TMOSpack = "\Pfad des MSI-Pakets"  
HelpdeskName = "Name"  
HelpdeskMail = "Mail angeben"  
HelpdeskTel = "Tel angeben"  
User = "Admin-Account"  
Password = "Password"  


'y = MsgBox("Bitte schliessen Sie SOFORT alle Programme, und klicken Sie danach auf OK" & vbCrLf & _  
'			"Es wird auf Ihrem Compouter der neue Antivirenschutz installiert.", ,"!!!ACHTUNG!!! BITTE LESEN !!!")  

'----------------------------------------------------------------------------------------------  
' Abfrage ob Symantec AntiVirus installiert ist und setzt die Variablen dem entsprechend.  

Set colSoftware = objWMIService.ExecQuery _
    ("SELECT Description FROM Win32_Product where Description="&"""Symantec AntiVirus""")  

For Each objFeature in colSoftware
'WScript.Echo objFeature.Description & " wird Deinstalliert."  
 x = objFeature.Description
 
	 If "Symantec AntiVirus" = x Then  
'	 		Set CmdRun = CMD.Popup("Eine Symantec AntiVirus Software ist Installiert."& vbCrLf & _  
'	 							   "Dieses Fenster schliesst automatisch in 15 Sekunden oder wählen Sie 'OK'. Danke.",15,"Administrator",vbInformation)  
			y = MsgBox("Bitte schliessen Sie nach dem aufstarten des Computer SOFORT alle Fenster und alle Programme. Klicken Sie erst danach auf OK" & vbCrLf & _  
						"Es wird auf Ihrem Compouter der neue Antivirenschutz installiert.", ,"!!!ACHTUNG!!! BITTE LESEN !!!")  
	 		deinstallSAV = True
	 Else
'	 		Set CmdRun = CMD.Popup("Keine Symantec AntiVirus Software ist Installiert." & vbCrLf & _  
'	 							   "Dieses Fenster schliesst automatisch in 15 Sekunden oder wählen Sie 'OK'. Danke.",15,"Administrator",vbInformation)  
	 		installTM = True
	 End If
Next
'----------------------------------------------------------------------------------------------  


'----------------------------------------------------------------------------------------------  
' Der User wird Informiert, das Symantec AntiVirus wird Deinstalliert oder die Trendmicro install Variable wird gesetzt.  

If deinstallSAV = True Then

	' Ein nettes Wort zum User  
	Set CmdRun = CMD.Popup("Symantec AntiVirus wird Deinstalliert und der PC wird in einigen Minuten neugestartet um danach Trend Micro Antivirus zu installieren." & vbCrLf & _  
						"Bei Fragen meldem Sie sich beim " & HelpdeskName & " " & HelpdeskMail & " oder Tel.: " & HelpdeskTel & "." & vbCrLf & _  
						"Dieses Fenster schliesst automatisch oder wählen Sie 'OK'. Danke.",120,"Administrator",vbInformation)  

	'Hier beginnt die Deinstallation von Symantec AntiVirus  
	 
	Set WshShell = CreateObject("WScript.Shell")  
	
	Path = "HKEY_LOCAL_MACHINE\SOFTWARE\Intel\LANDesk\VirusProtect6\CurrentVersion\AdministratorOnly\Security\UseVPUninstallPassword"  
	Value = 0
	Typ = "REG_DWORD"  
	
	WshShell.RegWrite Path, Value, Typ
	
'		If  Err.Number <> 0 Then  
'		    WScript.Echo "Beim Bearbeiten der Registry ist ein " &_  
'		    "Fehler aufgetreten: " & Err.Number  
'		Else  
'		    WScript.Echo "Die Registry wurde erfolgreich bearbeitet"  
'		End If  

		Computer = "."  
		ProductName = "Symantec AntiVirus"  
		
		Set objWbemLocator = CreateObject("WbemScripting.SWbemLocator")  
		Set objConnection = objwbemLocator.ConnectServer _
		    (Computer, "root\cimv2", User, _  
		     Password)
		
		Set colSoftware = objConnection.ExecQuery ("SELECT * FROM Win32_Product" &_  
		    "WHERE Name = """ & ProductName & """")  
		
		For Each objSoftware in colSoftware
		    objSoftware.Uninstall()
		Next		
	
	' Hier endet die Deinstallation von Symantec AntiVirus  
Else
	installTM = True
End If
'----------------------------------------------------------------------------------------------  

'----------------------------------------------------------------------------------------------  
' Trendmicro wird installiert falls nötig.  

If installTM = True Then

	Set WshShell = CreateObject("WScript.Shell")  
	CReg = WshShell.RegRead ("HKLM\SOFTWARE\TrendMicro\PC-cillinNTCorp\CurrentVersion\Server")  
	'MsgBox CReg  


	' Hier beginnt die Installation von TM Officescan  
	If CReg = TMserverIP Then 
		'MsgBox "TrendMicro ist bereits installiert"		  
	Else
		Computer = "."  
		
		Set objWbemLocator = CreateObject("WbemScripting.SWbemLocator")  
		Set objConnection = objwbemLocator.ConnectServer _
		    (Computer, "root\cimv2", User, _  
		     Password)
		
		Set objSoftware = objConnection.Get("Win32_Product")  
		
		InstallError = objSoftware.Install(TMOSpack,,True)

'		If InstallError = 0 Then  
'		    WScript.Echo "Die Installation war erfolgreich."  
'		Else  
'		    WScript.Echo "Bei der Installation ist " &_  
'		    "folgender Fehler aufgetreten: " & InstallError  
'		End If  
		
		'Dies ist die installationszeile falls der User lokale Adminrechte hat.		  
		'Set CmdRun = CMD.Run(TMOSpack)  
		installEnd = True
	End If 
	' Hier endet die Installation von TM Officescan		  

Else

	' Ein nettes Wort zum User  
	Set CmdRun = CMD.Popup("Der PC wird neugestartet um danach Trend Micro Antivirus zu installieren." & vbCrLf & _  
						"Bei Fragen meldem Sie sich beim " & HelpdeskName & " " & HelpdeskMail & " oder Tel.: " & HelpdeskTel & "." & vbCrLf & _  
						"Dieses Fenster schliesst automatisch oder wählen Sie 'OK'. Danke.",120,"Administrator",vbInformation)  

End If
'----------------------------------------------------------------------------------------------  


If installEnd = True Then
			
	' Ein nettes Wort zum User  
	Set CmdRun = CMD.Popup("Danke für Ihre Geduld, es wird Ihnen der neue Antivirenschutz installiert. Das kann einige Minuten dauern." & vbCrLf & _  
							"Bei Fragen meldem Sie sich beim " & HelpdeskName & " " & HelpdeskMail & " oder Tel.: " & HelpdeskTel & "." & vbCrLf & _  
							"Dieses Fenster schliesst automatisch oder wählen Sie 'OK'. Danke.",120,"Administrator",vbInformation)  
Else


End If


'============================================ENDE==============================================  

Ergänzungen: (zum Script)
Dieses Script überprüft die Installation einer vorhandenen Software (anhand des Registryeintrages). Falls die SW installiert ist, wird sie deinstalliert. Falls die SW nicht zu finden ist, wird ohne eine Deinstallation das neue Antivirus-Programm installiert. Hier werden noch Angaben zum Benutzer (User, PW) weitergegeben (was ich aber leider nicht ganz interpretieren kann....da mir das Wissen momentan noch leider fehlt).

Ergänzungen: (zu meinem Vorhaben)
- Die Benutzer haben keine Einschränkungen aur ihren Computern (sind alle lokale Admins)
- Das .MSI-Paket welchen es zu installieren gilt befindet sich auf dem File-Server und die Freigabe wurde getätigt.

Nun sind die Programmierer gefragt...danke.

Content-Key: 147852

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

Printed on: April 19, 2024 at 23:04 o'clock

Member: GenerallError
GenerallError Jul 30, 2010 at 12:41:09 (UTC)
Goto Top
Also, scheinbar verwirrt euch das Script...ich versuchs mal ganz unabhängig davon.

Ich will eine Software auf den Firmen-Computern installieren.
- ich verfüge über kein Evaluierungs-Programm
- Verteilung über AD nicht mögich

Die einzige Möglichkeit die ich hier habe ist:
- Logon-Script: VBS

Mein Vorhaben:
- Der Benutzer soll von der ganzen Sache nichts mitbekommen (Silent-Mode)
- Auslesen der Registry (ist die Software bereits installiert?)
- Falls ja, nichts mehr unternehmen
- Falls nein, soll die Software installiert werden (die Datei liegt auf dem File-Server und wurde für die Benutzer freigegeben). Es handelt sich um ein MSI-Paket.

Würde es auch gehen wenn ich den msiexec ausem cmd irgendwie in VBS einbinde?

Das ist alles. Das Script weiter oben kann ignoriert werden (wenn es wen irritiert). Ich bin auch offen für völlig neue Ansätze.
Member: GenerallError
GenerallError Aug 02, 2010 at 07:19:28 (UTC)
Goto Top
Ich könnte das auch wie folgt machen:

MSIEXEC:
msiexec /i \\Server\Pfad\*.MSI /qn

Und das funktioniert bei mir auch ma soweit. Jetzt hätte ich aber gerne noch eine Überprüfung (nicht das er mir das Tool bei jedem Neustart installiert).

Weitere Frage:
Wie kann ich das benutzte OS ausfindig machen? Mich interessiert eher das wie als das wo.