Anwendungszweck
Das Softwareverteilungsskript (VBScript) kann zur automatisierten Installation/Aktualisierung von Anwendungen benutzt werden. Es unterstützt ebenfalls die Installation/Aktualisierung aufgrund von Gruppenzugehörigkeiten der Active Directory Computerkonten benutzt werden. Grundsätzlich kann jede Software damit verteilt werden, solange diese sogenannte Silent Parameter unterstützt. Funktioniert für MSI Pakete oder EXE Installationen.
Erklärungen Parameter
Grundsätzlich sind alle Funktionen innerhalb des Skripts dokumentiert. Ebenfalls befinden sich bereits einige Demoinstallationen im Skript. Damit die Softwareinstallationen über den Systemaccount des Computers aufgerufen werden können, müssen die Benutzer „NETZWERK, NETZWERKDIENST und SYSTEM“ Zugriffsrechte auf der Freigabe und im NTFS System erhalten.
Sub Install_Software
Die Prozedur „Install_Software“ ist für die eigentliche Software Installation zuständig. Die Prozedur muss mit folgenden Parametern aufgerufen werden: Install_Software (Name, Version, Command, RegistryKey)
Name
Der Name der zu installierenden Software (dient nur zu Anzeigezwecken im Eventlog).
Version
Die korrekte Versionsnummer der zu installierenden Version, welche exakt aus der Registry eines Testclients ausgelesen werden muss.
Command
Der auszuführende Installationsbefehl mit allen Parameters (Silent Installation etc.).
RegistryKey
Der Registryeintrag, welcher die Versionsnummer der bereits installierten Software beinhaltet.
Beispiel:
Install_Software "AdobeReaderXI", "4.2.2579", "msiexec.exe /i " & Chr(34) & "\\servername.intra\DFSroot\Deploy\officeatwork\officeatwork Client Suite.msi" & Chr(34) & " /qn", “HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{243369B6-A51D-46F8-B242-6AC2595558CD}\DisplayVersion"
Aufgrund des obenstehenden Aufrufs prüft die Prozedur „Install_Software“ den mitgelieferten Registryeintrag. Ist dieser vorhanden, wird dessen Inhalt mit der Versionsnummer verglichen. Ist die Versionsnummer im Registryeintrag tiefer als diejenige, welche als Parameter mitgegeben wird, wird der Installationsbefehl ausgeführt.
Ist der Registryeintrag nicht vorhanden, wird der Installationsbefehl ebenfalls ausgeführt.
Anpassungen sind am Skript nötig
Grundsätzlich muss für jede Software, welche auf allen Computern installiert werden soll, eine Prozedur analog der Beispiele im Skript erstellt werden. Soll eine Software nur auf bestimmten Computern installiert werden, muss eine Sicherheitsgruppe im Active Directory erstellt werden und die entsprechenden Computerkonten darin als Mitglied hinzugefügt werden. Danach muss im Bereich „Run installations depending on group memberships of computers“ eine Abfrage dieser Sicherheitsgruppe eingebaut werden
Skript aufgerufen
Das Skript muss als Windows Startup Skript aufgerufen, da dies auf dem Computer und nicht per Benutzer aufgerufen werden muss.
Code als .vbs Datei speichern
Alles anzeigen
Das Softwareverteilungsskript (VBScript) kann zur automatisierten Installation/Aktualisierung von Anwendungen benutzt werden. Es unterstützt ebenfalls die Installation/Aktualisierung aufgrund von Gruppenzugehörigkeiten der Active Directory Computerkonten benutzt werden. Grundsätzlich kann jede Software damit verteilt werden, solange diese sogenannte Silent Parameter unterstützt. Funktioniert für MSI Pakete oder EXE Installationen.
Erklärungen Parameter
Grundsätzlich sind alle Funktionen innerhalb des Skripts dokumentiert. Ebenfalls befinden sich bereits einige Demoinstallationen im Skript. Damit die Softwareinstallationen über den Systemaccount des Computers aufgerufen werden können, müssen die Benutzer „NETZWERK, NETZWERKDIENST und SYSTEM“ Zugriffsrechte auf der Freigabe und im NTFS System erhalten.
Sub Install_Software
Die Prozedur „Install_Software“ ist für die eigentliche Software Installation zuständig. Die Prozedur muss mit folgenden Parametern aufgerufen werden: Install_Software (Name, Version, Command, RegistryKey)
Name
Der Name der zu installierenden Software (dient nur zu Anzeigezwecken im Eventlog).
Version
Die korrekte Versionsnummer der zu installierenden Version, welche exakt aus der Registry eines Testclients ausgelesen werden muss.
Command
Der auszuführende Installationsbefehl mit allen Parameters (Silent Installation etc.).
RegistryKey
Der Registryeintrag, welcher die Versionsnummer der bereits installierten Software beinhaltet.
Beispiel:
Install_Software "AdobeReaderXI", "4.2.2579", "msiexec.exe /i " & Chr(34) & "\\servername.intra\DFSroot\Deploy\officeatwork\officeatwork Client Suite.msi" & Chr(34) & " /qn", “HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{243369B6-A51D-46F8-B242-6AC2595558CD}\DisplayVersion"
Aufgrund des obenstehenden Aufrufs prüft die Prozedur „Install_Software“ den mitgelieferten Registryeintrag. Ist dieser vorhanden, wird dessen Inhalt mit der Versionsnummer verglichen. Ist die Versionsnummer im Registryeintrag tiefer als diejenige, welche als Parameter mitgegeben wird, wird der Installationsbefehl ausgeführt.
Ist der Registryeintrag nicht vorhanden, wird der Installationsbefehl ebenfalls ausgeführt.
Anpassungen sind am Skript nötig
Grundsätzlich muss für jede Software, welche auf allen Computern installiert werden soll, eine Prozedur analog der Beispiele im Skript erstellt werden. Soll eine Software nur auf bestimmten Computern installiert werden, muss eine Sicherheitsgruppe im Active Directory erstellt werden und die entsprechenden Computerkonten darin als Mitglied hinzugefügt werden. Danach muss im Bereich „Run installations depending on group memberships of computers“ eine Abfrage dieser Sicherheitsgruppe eingebaut werden
Skript aufgerufen
Das Skript muss als Windows Startup Skript aufgerufen, da dies auf dem Computer und nicht per Benutzer aufgerufen werden muss.
Code als .vbs Datei speichern
Brainfuck-Quellcode
- '--------------------------------------------------------------------------------------------------------------------
- ' Funktion : Software deployment
- ' Version : 1.0
- ' Beschreibung : Dieses Skript installiert Software basierend auf Gruppenzugehoerigkeiten des Computerkontos
- ' Kunde : xxx
- '
- ' Version 1.0
- '
- '--------------------------------------------------------------------------------------------------------------------
- On Error Resume Next
- 'Dim variables
- Dim objSysInfo
- Dim objComputer
- Dim objMemberOf
- Dim objConnection
- Dim objCommand
- Dim objName
- Dim objEventLog
- Dim strComputerName
- Dim strGroup
- Dim strEvenlogID
- 'Dim contants
- Const ADS_SCOPE_SUBTREE = 2
- 'Set objects
- Set objSysInfo = CreateObject("ADSystemInfo")
- Set objEventLog = CreateObject("WScript.Shell")
- 'Fill variables
- strComputerName = objSysInfo.Computername
- strEventlogID = "Software deployment: "
- 'Create Active Directory connection
- Set objConnection = CreateObject("ADODB.Connection")
- Set objCommand = CreateObject("ADODB.Command")
- objConnection.Provider = "ADsDSOObject"
- objConnection.Open "Active Directory Provider"
- Set objCommand.ActiveConnection = objConnection
- objCommand.Properties("Page Size") = 10
- objCommand.Properties("Timeout") = 30
- objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
- objCommand.Properties("Cache Results") = False
- objName = "LDAP://" & strComputerName
- Set objComputer = GetObject(objName)
- objEventLog.LogEvent 0, strEventlogID & "Skript gestartet."
- 'Check for errors
- If Err.Number <> 0 Then
- objEventLog.LogEvent 1, strEventlogID & "Fehler " & Err.Number & " (" & Err.Description & ") aufgetreten."
- WScript.End
- End If
- objMemberOf = objComputer.GetEx("memberOf")
- 'Run installations for all computers
- 'Example installations
- 'Example_Install_Greenshot
- 'Example_AdobeReaderXI
- 'Example_AdobeFlashPlayer
- 'Example_Java7
- 'Example_AdobeAIR
- 'Run installations depending on group memberships of computers
- For Each strGroup in objMemberOf
- If Instr(strGroup, "sg_softdeploy_") <> 0 Then
- Dim strSingleGroup
- strSingleGroup = ""
- strSingleGroup = Mid(strGroup, Instr(strGroup, "CN=") + 3, Instr(strGroup, ",") -4)
- Select Case strSingleGroup
- Case "sg_softdeploy_picasa"
- 'Example_Install_GooglePicasa
- Case "sg_softdeploy_googleearth"
- 'Example_Install_GoogleEarth
- Case "sg_softdeploy_okpvalidation"
- 'Example_Install_OKPValidation
- End Select
- End If
- Next
- objEventLog.LogEvent 0, strEventlogID & "Skript beendet."
- WScript.Quit
- 'Start Picasa installation
- Sub Example_Install_GooglePicasa
- Install_Software "Picasa", _
- "3.9", _
- "\\servername.intra\DFSroot\Deploy\picasa\picasa39-setup.exe /S /L", _
- "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Picasa 3\DisplayVersion"
- End Sub
- 'Start Greenshot installation
- Sub Example_Install_Greenshot
- Install_Software "Greenshot", _
- "1.1.7.17", _
- "\\servername.intra\DFSroot\Deploy\Greenshot\Greenshot-INSTALLER-1.1.7.17.exe /VERYSILENT /LANG=DE", _
- "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Greenshot_is1\DisplayVersion"
- End Sub
- 'Start Adobe Reader XI installation
- Sub Example_Install_AdobeReaderXI
- Install_Software "AdobeReaderXI", _
- "11.0.06", _
- "\\servername.intra\dfsroot\Deploy\AdobeReaderXI\AdbeRdr11006_de_DE.exe /msi EULA_ACCEPT=Yes /qn", _
- "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{AC76BA86-7AD7-1031-7B44-AB0000000001}\DisplayVersion"
- End Sub
- 'Start Adobe Flash Player installation
- Sub Example_Install_AdobeFlashPlayer
- Install_Software "AdobeFlashPlayer", _
- "11.9.900.117", _
- "\\servername.intra\DFSroot\Deploy\AdobeFlashPlayer11\install_flash_player_11_active_x.exe -install", _
- "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Adobe Flash Player ActiveX\DisplayVersion"
- End Sub
- 'Start Google Earth installation
- Sub Example_Install_GoogleEarth
- Install_Software "GoogleEarth", _
- "7.1.1.1580", _
- "msiexec.exe /i " & Chr(34) & "\\servername.intra\DFSroot\Deploy\GoogleEarth\Google Earth.msi" & Chr(34) & " /qn", _
- "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{0A844D8F-A965-11E2-9E77-B8AC6F98CCE3}\DisplayVersion"
- End Sub
- 'Start Java 7 installation
- Sub Example_Install_Java7
- Install_Software "Java7", _
- "7.0.450", _
- "msiexec.exe /i \\servername.intra\DFSroot\Deploy\Java\JRE7U45X86\jre1.7.0_45.msi /qn IEXPLORER=1 ALLUSERS=1 JAVAUPDATE=0 AUTOUPDATECHECK=0", _
- "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{26A24AE4-039D-4CA4-87B4-2F83217045FF}\DisplayVersion"
- End Sub
- 'Start Adobe AIR installation
- Sub Example_Install_AdobeAIR
- Install_Software "AdobeAIR", _
- "3.7.0.1860", _
- "\\servername.intra\DFSroot\Deploy\AdobeAIR\AdobeAIRInstaller.exe -silent", _
- "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{A0087DDE-69D0-11E2-AD57-43CA6188709B}\DisplayVersion"
- End Sub
- 'Installation routine
- Sub Install_Software(Name, Version, Command, RegistryKey)
- 'Dim variables
- Dim strSoftware
- Dim strVersion
- 'Set values into variables
- strSoftware = Name
- strVersion = Version
- 'Check if version in registry is lower or missing
- If Read_Registry(RegistryKey) < strVersion Or Read_Registry(RegistryKey) = "Missing" Then
- On Error Resume Next
- 'Start installation
- Dim objShell
- Dim objEnv
- Set objShell = CreateObject("WScript.Shell")
- Set objEnv = objShell.Environment("PROCESS")
- objEnv("SEE_MASK_NOZONECHECKS") = 1
- objShell.Run Command, 0, True
- objEnv.Remove("SEE_MASK_NOZONECHECKS")
- 'Check for errors during installation routine
- If Err.Number <> 0 Then
- objEventLog.LogEvent 1, strEventlogID & "Fehler " & Err.Number & " (" & Err.Description & ") beim Installieren von " & Name & " Version " & Version & " aufgetreten."
- Err.Number = 0
- End If
- End If
- End Sub
- 'Function to read registry values
- Function Read_Registry(RegKey)
- On Error Resume Next
- Dim objRegistryShell
- Dim strReturn
- Set objRegistryShell = CreateObject("WScript.Shell")
- Read_Registry = objRegistryShell.RegRead(RegKey)
- If Err.Number <> 0 Then
- objEventLog.LogEvent 1, strEventlogID & "Fehler " & Err.Number & " (" & Err.Description & ") beim Lesen von Key " & RegKey & " aufgetreten."
- Read_Registry = "Missing"
- End If
- End Function
Wenn "Server" eine Religion ist, haben wir die passende Kathedrale dazu!
Mehr Infos unter www.fsit.com oder Facebook