crachkiller | Tu utilise quel script car sur la toile on en trouve plusieurs ?
Le mien est celui-ci :
Code :
- '
- ' ------------------------------------------------------------------------
- ' fusioninventory-agent-deployment.vbs
- ' Copyright (C) 2010-2013 by the FusionInventory Development Team.
- '
- ' http://www.fusioninventory.org/ http://forge.fusioninventory.org/
- ' ------------------------------------------------------------------------
- '
- ' LICENSE
- '
- ' This file is part of FusionInventory project.
- '
- ' This file is free software; you can redistribute it and/or modify it
- ' under the terms of the GNU General Public License as published by the
- ' Free Software Foundation; either version 2 of the License, or (at your
- ' option) any later version.
- '
- '
- ' This file is distributed in the hope that it will be useful, but WITHOUT
- ' ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- ' FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- ' more details.
- '
- ' You should have received a copy of the GNU General Public License
- ' along with this program; if not, write to the Free Software Foundation,
- ' Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA,
- ' or see <http://www.gnu.org/licenses/>.
- '
- ' ------------------------------------------------------------------------
- '
- ' @package FusionInventory Agent
- ' @file .\contrib\windows\fusioninventory-agent-deployment.vbs
- ' @author(s) Benjamin Accary <meldrone@orange.fr>
- ' Christophe Pujol <chpujol@gmail.com>
- ' Marc Caissial <marc.caissial@zenitique.fr>
- ' Tomas Abad <tabadgp@gmail.com>
- ' @copyright Copyright (c) 2010-2013 FusionInventory Team
- ' @license GNU GPL version 2 or (at your option) any later version
- ' http://www.gnu.org/licenses/old-li [...] alone.html
- ' @link http://www.fusioninventory.org/
- ' @link http://forge.fusioninventory.org/p [...] tory-agent
- ' @since 2012
- '
- ' ------------------------------------------------------------------------
- '
- '
- '
- ' Purpose:
- ' FusionInventory Agent Unatended Deployment.
- '
- '
- Option Explicit
- Dim Force, Verbose
- Dim Setup, SetupArchitecture, SetupLocation, SetupOptions, SetupVersion
- '
- '
- ' USER SETTINGS
- '
- '
- ' SetupLocation
- ' Depending on your needs or your environment, you can use either a HTTP or
- ' CIFS/SMB.
- '
- ' If you use HTTP, please, set to SetupLocation a URL:
- '
- ' SetupLocation = "http://host[:port]/[absolut_path]" or
- ' SetupLocation = "https://host[:port]/[absolut_path]"
- '
- ' If you use CIFS, please, set to SetupLocation a UNC path name:
- '
- ' SetupLocation = "\\host\share\[path]"
- '
- ' You also must be sure that you have removed the "Open File Security Warning"
- ' from programs accessed from that UNC.
- '
- SetupLocation = "\\my.domain\NETLOGON\fusioninventory-agent"
- ' SetupVersion
- ' Setup version with the pattern <major>.<minor>.<release>[-<package>]
- '
- 'PENSER A RETIRER FORCE = YES PLUS BAS
- SetupVersion = "2.3.18"
- 'PENSER A RETIRER FORCE = YES PLUS BAS
- ' SetupArchitecture
- ' The setup architecture can be 'x86', 'x64' or 'Auto'
- '
- ' If you set SetupArchitecture = "Auto" be sure that both installers are in
- ' the same SetupLocation.
- '
- SetupArchitecture = "Auto"
- ' SetupOptions
- ' Consult the installer documentation to know its list of options.
- '
- ' You should use simple quotes (') to set between quotation marks those values
- ' that require it; double quotes (" ) doesn't work with UNCs.
- '
- SetupOptions = "/installtasks=Full /acceptlicense /add-firewall-exception /runnow /server='http://my.glpi.server/plugins/fusioninventory/' /S"
- ' Setup
- ' The installer file name. You should not have to modify this variable ever.
- '
- Setup = "fusioninventory-agent_windows-" & SetupArchitecture & "_" & SetupVersion & ".exe"
- ' Force
- ' Force the installation even whether Setup is previously installed.
- '
- Force = "No"
- ' Verbose
- ' Enable or disable the information messages.
- '
- ' It's advisable to use Verbose = "Yes" with 'cscript //nologo ...'.
- '
- Verbose = "No"
- '
- '
- ' DO NOT EDIT BELOW
- '
- '
- Function AdvanceTime(nMinutes)
- Dim nMinimalMinutes, dtmTimeFuture
- ' As protection
- nMinimalMinutes = 5
- If nMinutes < nMinimalMinutes Then
- nMinutes = nMinimalMinutes
- End If
- ' Add nMinutes to the current time
- dtmTimeFuture = DateAdd ("n", nMinutes, Time)
- ' Format the result value
- ' The command AT accepts 'HH:MM' values only
- AdvanceTime = Hour(dtmTimeFuture) & ":" & Minute(dtmTimeFuture)
- End Function
- Function baseName (strng)
- Dim regEx, ret
- Set regEx = New RegExp
- regEx.Global = true
- regEx.IgnoreCase = True
- regEx.Pattern = ".*[/\\]([^/\\]+)$"
- baseName = regEx.Replace(strng,"$1" )
- End Function
- Function GetSystemArchitecture()
- Dim strSystemArchitecture
- Err.Clear
- ' Get operative system architecture
- On Error Resume Next
- strSystemArchitecture = CreateObject("WScript.Shell" ).ExpandEnvironmentStrings("%PROCESSOR_ARCHITECTURE%" )
- If Err.Number = 0 Then
- ' Check the operative system architecture
- Select Case strSystemArchitecture
- Case "x86"
- ' The system architecture is 32-bit
- GetSystemArchitecture = "x86"
- Case "AMD64"
- ' The system architecture is 64-bit
- GetSystemArchitecture = "x64"
- Case Else
- ' The system architecture is not supported
- GetSystemArchitecture = "NotSupported"
- End Select
- Else
- ' It has been not possible to get the system architecture
- GetSystemArchitecture = "Unknown"
- End If
- End Function
- Function isHttp(strng)
- Dim regEx, matches
- Set regEx = New RegExp
- regEx.Global = true
- regEx.IgnoreCase = True
- regEx.Pattern = "^(http(s?)).*"
- If regEx.Execute(strng).count > 0 Then
- isHttp = True
- Else
- isHttp = False
- End If
- Exit Function
- End Function
- Function IsInstallationNeeded(strSetupVersion, strSetupArchitecture, strSystemArchitecture)
- Dim strCurrentSetupVersion
- ' Compare the current version, whether it exists, with strSetupVersion
- If strSystemArchitecture = "x86" Then
- ' The system architecture is 32-bit
- ' Check if the subkey 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\FusionInventory Agent' exists
- ' This subkey is now deprecated
- On error resume next
- strCurrentSetupVersion = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\FusionInventory Agent\DisplayVersion" )
- If Err.Number = 0 Then
- ' The subkey 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\FusionInventory Agent' exists
- If strCurrentSetupVersion <> strSetupVersion Then
- ShowMessage("Installation needed: " & strCurrentSetupVersion & " -> " & strSetupVersion)
- IsInstallationNeeded = True
- End If
- Exit Function
- Else
- ' The subkey 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\FusionInventory Agent' doesn't exist
- Err.Clear
- ' Check if the subkey 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\FusionInventory-Agent' exists
- On error resume next
- strCurrentSetupVersion = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\FusionInventory-Agent\DisplayVersion" )
- If Err.Number = 0 Then
- ' The subkey 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\FusionInventory-Agent' exists
- If strCurrentSetupVersion <> strSetupVersion Then
- ShowMessage("Installation needed: " & strCurrentSetupVersion & " -> " & strSetupVersion)
- IsInstallationNeeded = True
- End If
- Exit Function
- Else
- ' The subkey 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\FusionInventory-Agent' doesn't exist
- Err.Clear
- ShowMessage("Installation needed: " & strSetupVersion)
- IsInstallationNeeded = True
- End If
- End If
- Else
- ' The system architecture is 64-bit
- ' Check if the subkey 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\FusionInventory Agent' exists
- ' This subkey is now deprecated
- On error resume next
- strCurrentSetupVersion = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\FusionInventory Agent\DisplayVersion" )
- If Err.Number = 0 Then
- ' The subkey 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\FusionInventory Agent' exists
- If strCurrentSetupVersion <> strSetupVersion Then
- ShowMessage("Installation needed: " & strCurrentSetupVersion & " -> " & strSetupVersion)
- IsInstallationNeeded = True
- End If
- Exit Function
- Else
- ' The subkey 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\FusionInventory Agent' doesn't exist
- Err.Clear
- ' Check if the subkey 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\FusionInventory-Agent' exists
- On error resume next
- strCurrentSetupVersion = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\FusionInventory-Agent\DisplayVersion" )
- If Err.Number = 0 Then
- ' The subkey 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\FusionInventory-Agent' exists
- If strCurrentSetupVersion <> strSetupVersion Then
- ShowMessage("Installation needed: " & strCurrentSetupVersion & " -> " & strSetupVersion)
- IsInstallationNeeded = True
- End If
- Exit Function
- Else
- ' The subkey 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\FusionInventory-Agent' doesn't exist
- Err.Clear
- ' Check if the subkey 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\FusionInventory-Agent' exists
- On error resume next
- strCurrentSetupVersion = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\FusionInventory-Agent\DisplayVersion" )
- If Err.Number = 0 Then
- ' The subkey 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\FusionInventory-Agent' exists
- If strCurrentSetupVersion <> strSetupVersion Then
- ShowMessage("Installation needed: " & strCurrentSetupVersion & " -> " & strSetupVersion)
- IsInstallationNeeded = True
- End If
- Exit Function
- Else
- ' The subkey 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\FusionInventory-Agent' doesn't exist
- Err.Clear
- ShowMessage("Installation needed: " & strSetupVersion)
- IsInstallationNeeded = True
- End If
- End If
- End If
- End If
- End Function
- Function IsSelectedForce()
- If LCase(Force) <> "no" Then
- ShowMessage("Installation forced: " & SetupVersion)
- IsSelectedForce = True
- Else
- IsSelectedForce = False
- End If
- End Function
- ' http://www.ericphelps.com/scriptin [...] index.html
- Function SaveWebBinary(strSetupLocation, strSetup)
- Const adTypeBinary = 1
- Const adSaveCreateOverWrite = 2
- Const ForWriting = 2
- Dim web, varByteArray, strData, strBuffer, lngCounter, ado, strUrl
- strUrl = strSetupLocation & "/" & strSetup
- 'On Error Resume Next
- 'Download the file with any available object
- Err.Clear
- Set web = Nothing
- Set web = CreateObject("WinHttp.WinHttpRequest.5.1" )
- If web Is Nothing Then Set web = CreateObject("WinHttp.WinHttpRequest" )
- If web Is Nothing Then Set web = CreateObject("MSXML2.ServerXMLHTTP" )
- If web Is Nothing Then Set web = CreateObject("Microsoft.XMLHTTP" )
- web.Open "GET", strURL, False
- web.Send
- If Err.Number <> 0 Then
- SaveWebBinary = False
- Set web = Nothing
- Exit Function
- End If
- If web.Status <> "200" Then
- SaveWebBinary = False
- Set web = Nothing
- Exit Function
- End If
- varByteArray = web.ResponseBody
- Set web = Nothing
- 'Now save the file with any available method
- On Error Resume Next
- Set ado = Nothing
- Set ado = CreateObject("ADODB.Stream" )
- If ado Is Nothing Then
- Set fs = CreateObject("Scripting.FileSystemObject" )
- Set ts = fs.OpenTextFile(baseName(strUrl), ForWriting, True)
- strData = ""
- strBuffer = ""
- For lngCounter = 0 to UBound(varByteArray)
- ts.Write Chr(255 And Ascb(Midb(varByteArray,lngCounter + 1, 1)))
- Next
- ts.Close
- Else
- ado.Type = adTypeBinary
- ado.Open
- ado.Write varByteArray
- ado.SaveToFile CreateObject("WScript.Shell" ).ExpandEnvironmentStrings("%TEMP%" ) & "\" & strSetup, adSaveCreateOverWrite
- ado.Close
- End If
- SaveWebBinary = True
- End Function
- Function ShowMessage(strMessage)
- If LCase(Verbose) <> "no" Then
- WScript.Echo strMessage
- End If
- End Function
- '
- '
- ' MAIN
- '
- '
- Dim nMinutesToAdvance, strCmd, strSystemArchitecture, strTempDir, WshShell
- Set WshShell = WScript.CreateObject("WScript.shell" )
- nMinutesToAdvance = 5
- ' Get system architecture
- strSystemArchitecture = GetSystemArchitecture()
- If (strSystemArchitecture <> "x86" ) And (strSystemArchitecture <> "x64" ) Then
- ShowMessage("The system architecture is unknown or not supported." )
- ShowMessage("Deployment aborted!" )
- WScript.Quit 1
- Else
- ShowMessage("System architecture detected: " & strSystemArchitecture)
- End If
- ' Check and auto detect SetupArchitecture
- Select Case LCase(SetupArchitecture)
- Case "x86"
- ' The setup architecture is 32-bit
- SetupArchitecture = "x86"
- Setup = Replace(Setup, "x86", SetupArchitecture, 1, 1, vbTextCompare)
- ShowMessage("Setup architecture: " & SetupArchitecture)
- Case "x64"
- ' The setup architecture is 64-bit
- SetupArchitecture = "x64"
- Setup = Replace(Setup, "x64", SetupArchitecture, 1, 1, vbTextCompare)
- ShowMessage("Setup architecture: " & SetupArchitecture)
- Case "auto"
- ' Auto detection of SetupArchitecture
- SetupArchitecture = strSystemArchitecture
- Setup = Replace(Setup, "Auto", SetupArchitecture, 1, 1, vbTextCompare)
- ShowMessage("Setup architecture detected: " & SetupArchitecture)
- Case Else
- ' The setup architecture is not supported
- ShowMessage("The setup architecture '" & SetupArchitecture & "' is not supported." )
- WScript.Quit 2
- End Select
- ' Check the relation between strSystemArchitecture and SetupArchitecture
- If (strSystemArchitecture = "x86" ) And (SetupArchitecture = "x64" ) Then
- ' It isn't possible to execute a 64-bit setup on a 32-bit operative system
- ShowMessage("It isn't possible to execute a 64-bit setup on a 32-bit operative system." )
- ShowMessage("Deployment aborted!" )
- WScript.Quit 3
- End If
- If IsSelectedForce() Or IsInstallationNeeded(SetupVersion, SetupArchitecture, strSystemArchitecture) Then
- If isHttp(SetupLocation) Then
- ShowMessage("Downloading: " & SetupLocation & "/" & Setup)
- If SaveWebBinary(SetupLocation, Setup) Then
- strCmd = WshShell.ExpandEnvironmentStrings("%ComSpec%" )
- strTempDir = WshShell.ExpandEnvironmentStrings("%TEMP%" )
- ShowMessage("Running: """ & strTempDir & "\" & Setup & """ " & SetupOptions)
- WshShell.Run """" & strTempDir & "\" & Setup & """ " & SetupOptions, 0, True
- ShowMessage("Scheduling: DEL /Q /F """ & strTempDir & "\" & Setup & """" )
- WshShell.Run "AT.EXE " & AdvanceTime(nMinutesToAdvance) & " " & strCmd & " /C ""DEL /Q /F """"" & strTempDir & "\" & Setup & """""", 0, True
- ShowMessage("Deployment done!" )
- Else
- ShowMessage("Error downloading '" & SetupLocation & "\" & Setup & "'!" )
- End If
- Else
- ShowMessage("Running: """ & SetupLocation & "\" & Setup & """ " & SetupOptions)
- WshShell.Run "CMD.EXE /C """ & SetupLocation & "\" & Setup & """ " & SetupOptions, 0, True
- ShowMessage("Deployment done!" )
- End If
- Else
- ShowMessage("It isn't needed the installation of '" & Setup & "'." )
- End If
|
|