You are not logged in.

Announcement

 Téléchargez la dernière version stable de GLPI      -     Et vous, que pouvez vous faire pour le projet GLPI ? :  Contribuer
 Download last stable version of GLPI                      -     What can you do for GLPI ? :  Contribute

#1 2020-12-16 17:48:00

impaa
Member
Registered: 2017-06-15
Posts: 28

Déploiement Fusion Inventory ne fonctionne pas / GLPI 9.5.3 / FI 2.6

Bonjour à tous,

Je suis en train de monter un nouveau GLPI + Fusion Inventory.
GLPI c'est ok, ça marche !

Pour ce qui est de Fusion Inventory, le plugin est bien installé sur GLPI !
Si j'installe l'agent à la main en version 2.6 et que je précise les paramètres lors de l'installe tout est ok...
Je force la remontée via l'url http://localhost:62354

Après avoir validé cette remontée d'info, j'ai monté une OU de test avec une GPO.
Nous avons un vieux GLPI avec du FI datant de 2014...

L'idée est donc de le remplacer.
Mes postes clients ont une vieille version donc tant qu'à faire autant leur mettre à jour.

La GPO fonctionne car sur le poste elle est bien appliquée, j'ai vérifié ce point via un GPRESULT /SCOPE COMPUTER /R
Problème, l'agent ne se met pas à jour après un redémarrage...
Si je désinstalle l'agent datant et que je redémarre le poste, au démarrage rien ne se produit... L'agent ne s'installe pas.

Le script VBS que j'utilise, récupéré sur le site de fusion inventory:

Option Explicit
Dim versionverification, fusionarguments, uninstallocsagent, fusionsetupURL
''''' USER SETTINGS '''''
versionverification = "2.6" 
fusionarguments = "/S /server=http://ip_de_mon_serveur/glpi/plugins/fusioninventory/ /rpc-trust-localhost /runnow" 
' Depending on your needs, you can use either HTTP or Windows share
'fusionsetupURL = "\\server1\data\fusioninventory-agent_windows-i386_" & versionverification & ".exe" 
'fusionsetupURL = "http://prebuilt.fusioninventory.org/stable/windows-i386/fusioninventory-agent_windows-i386_" & versionverification & ".exe" 
fusionsetupURL = "\\mon_partage\fusioninventory-agent_windows-x64_" & versionverification & ".exe"  
uninstallocsagent = "yes" 
''''' DO NOT EDIT BELOW '''''
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 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 

' http://www.ericphelps.com/scripting/samples/wget/index.html
Function SaveWebBinary(strUrl) 'As Boolean
Const adTypeBinary = 1
Const adSaveCreateOverWrite = 2
Const ForWriting = 2
Dim web, varByteArray, strData, strBuffer, lngCounter, ado
'    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%") & "\fusioninventory.exe", adSaveCreateOverWrite
        ado.Close
    End If
    SaveWebBinary = True
End Function

Function removeOCS()
    On error resume next

    Dim OCS
    ' Uninstall agent ocs if is installed
    ' Verification on OS 32 Bits
    On error resume next
    OCS = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OCS Inventory Agent\UninstallString")
    If err.number = 0 then
        WshShell.Run "CMD.EXE /C net stop ""OCS INVENTORY SERVICE""",0,True
        WshShell.Run "CMD.EXE /C """ & OCS & """ /S /NOSPLASH",0,True
        WshShell.Run "CMD.EXE /C rmdir ""%ProgramFiles%\OCS Inventory Agent"" /S /Q",0,True
        WshShell.Run "CMD.EXE /C rmdir ""%SystemDrive%\ocs-ng"" /S /Q",0,True
        WshShell.Run "CMD.EXE /C sc delete ""OCS INVENTORY""",0,True
    End If

    ' Verification on OS 64 Bits
    On error resume next
    OCS = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\OCS Inventory Agent\UninstallString")
    If err.number = 0 then
        WshShell.Run "CMD.EXE /C net stop ""OCS INVENTORY SERVICE""",0,True
        WshShell.Run "CMD.EXE /C """ & OCS & """ /S /NOSPLASH",0,True
        WshShell.Run "CMD.EXE /C rmdir ""%ProgramFiles(x86)%\OCS Inventory Agent"" /S /Q",0,True
        WshShell.Run "CMD.EXE /C rmdir ""%SystemDrive%\ocs-ng"" /S /Q",0,True
        WshShell.Run "CMD.EXE /C sc delete ""OCS INVENTORY""",0,True
    End If

    ' Verification Agent V2 on 32Bit
    On error resume next
    OCS = WshShell.RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OCS Inventory NG Agent\UninstallString")
    If err.number = 0 then
        WshShell.Run "CMD.EXE /C net stop ""OCS INVENTORY SERVICE""",0,True
        WshShell.Run "CMD.EXE /C taskkill /F /IM ocssystray.exe",0,True
        WshShell.Run "CMD.EXE /C """ & OCS & """ /S /NOSPLASH",0,True
        WshShell.Run "CMD.EXE /C rmdir ""%ProgramFiles%\OCS Inventory Agent"" /S /Q",0,True
        WshShell.Run "CMD.EXE /C rmdir ""%SystemDrive%\ocs-ng"" /S /Q",0,True
        WshShell.Run "CMD.EXE /C sc delete ""OCS INVENTORY""",0,True
    End If

    ' Verification Agent V2 on 64Bit
    On error resume next
    OCS = WshShell.RegRead("HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\OCS Inventory NG Agent\UninstallString")
    If err.number = 0 then
        WshShell.Run "CMD.EXE /C net stop ""OCS INVENTORY SERVICE""",0,True
        WshShell.Run "CMD.EXE /C taskkill /F /IM ocssystray.exe",0,True
        WshShell.Run "CMD.EXE /C """ & OCS & """ /S /NOSPLASH",0,True
        WshShell.Run "CMD.EXE /C rmdir ""%ProgramFiles%\OCS Inventory Agent"" /S /Q",0,True
        WshShell.Run "CMD.EXE /C rmdir ""%SystemDrive%\ocs-ng"" /S /Q",0,True
        WshShell.Run "CMD.EXE /C sc delete ""OCS INVENTORY""",0,True
    End If

End Function

Function needFusionInstall ()
    Dim Fusion
    ' install fusion if version is different or if not installed
    needFusionInstall = False 
    On error resume next
    Fusion = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\FusionInventory Agent\DisplayVersion")
    If err.number = 0 Then
      ' Verification on OS 32 Bits
      If Fusion <> versionverification Then
          needFusionInstall = True
      Else
    needFusionInstall = False 
        Return
      End If
    Else
      ' Verification on OS 64 Bits
      On error resume next
      Fusion = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\FusionInventory Agent\DisplayVersion")
      If err.number = 0 Then
        If Fusion <> versionverification Then
          needFusionInstall = True
        End if
      Else
          needFusionInstall = True
      End If
    End If
End Function

''' MAIN
Dim WshShell
Set WshShell = Wscript.CreateObject("Wscript.shell")

If uninstallocsagent = "yes" Then
    removeOCS()
End If

If needFusionInstall() Then
    If (isHttp(fusionsetupURL)) Then
       SaveWebBinary(fusionsetupURL)
       WshShell.Run "CMD.EXE /C %TEMP%\fusioninventory.exe " & fusionarguments,0,True
    Else
        WshShell.Run "CMD.EXE /C """ & fusionsetupURL & """ " & fusionarguments,0,True
    End If
End If

J'avoue ne pas avoir envie de faire la mise à jour de l'agent à l'ancienne en passant 1 à 1 sur mes postes...

Quelqu'un a une petite idée ?

Merci smile

Offline

#2 2020-12-17 12:34:25

impaa
Member
Registered: 2017-06-15
Posts: 28

Re: Déploiement Fusion Inventory ne fonctionne pas / GLPI 9.5.3 / FI 2.6

Je viens de changer pour un autre script et j'ai ajouté le .ADMX et ADML pour gérer la GPO...

'
'  ------------------------------------------------------------------------
'  fusioninventory-agent-deployment.vbs
'  Copyright (C) 2010-2017 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>
'             Guillaume Bougard <gbougard@teclib.com>
'  @copyright Copyright (c) 2010-2017 FusionInventory Team
'  @license   GNU GPL version 2 or (at your option) any later version
'             http://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
'  @link      http://www.fusioninventory.org/
'  @link      http://forge.fusioninventory.org/projects/fusioninventory-agent
'  @since     2012
'
'  ------------------------------------------------------------------------
'

'
'
' Purpose:
'     FusionInventory Agent Unatended Deployment.
'
'

Option Explicit
Dim Force, Verbose
Dim Setup, SetupArchitecture, SetupLocation, SetupOptions, SetupVersion

'
'
' USER SETTINGS
'
'

' SetupVersion
'    Setup version with the pattern <major>.<minor>.<release>[-<package>]
'
SetupVersion = "2.6"

' 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.
'
' Location for Release Candidates
' SetupLocation = "https://github.com/TECLIB/fusioninventory-agent-windows-installer/releases/download/" & SetupVersion
SetupLocation = "\\192.168.X.X\Deploy$\" & SetupVersion


' 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 = "x64"

' 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 = "/acceptlicense /runnow /server='http://ip_de_mon_serv/glpi/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/scripting/samples/wget/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

Personne peut m'aider ?

Offline

#3 2020-12-18 16:44:15

Haprocky
Member
Registered: 2020-12-18
Posts: 5

Re: Déploiement Fusion Inventory ne fonctionne pas / GLPI 9.5.3 / FI 2.6

Bonjour,

J'ai approximativement le même problème que toi sauf que mon script marche que sur certains postes..
Je ne pense pas que ce soit un problème de script mais plus que le script ne se lance pas avec la GPO même si il est visible dans le gpresult. sad

Offline

#4 2020-12-22 18:18:48

Massa
Member
Registered: 2019-04-03
Posts: 12

Re: Déploiement Fusion Inventory ne fonctionne pas / GLPI 9.5.3 / FI 2.6

Bonjour,

J'ai été dans le même contexte que vous, et la solution la plus viable et sur que j'ai trouvé a défault des GPO qui des fois font ce qu'elles ont envie, est de passer directement depuis l'agent fusioninventory pour déployer la montée de version.
L'avantage dans ce contexte, c'est qu'avec le télétravail dû a la situation sanitaire, les postes étant hors réseau AD / GPO , l'agent lui parviens a déployer sa montée de version.

Pour faire succin, il faut créer un package de déploiement sous l'administration fusioninventory de GLPI ou on lui indique de copier coller les sources + script de déploiement dans un répertoire cible sur les postes users :

----------------------------------------------------------------

Commande
Commande à exécuter

copy \\10.42.xx.xx\documents\fusioninventory_dsi\*.* C:\                 ( source glpi fusioninventory-agent_windows-x86/64_2.6.exe et script.vbs personalisé )

name logLineLimit 10

----------------------------------------------------------------

Commande
Commande à exécuter

C:\fusioninventory-agent_2_6_TOULOUSE.vbs                  ( script d'installation personaliser , TAG , serveur en https://............. )

name logLineLimit 10


--------------------------------------------------------------


Le gros avantage je trouve via cette méthode de déploiement, c'est d'une on fait abstraction de la couche AD / GPO , mais également le déploiement s’opère même si la session n'est pas logué , du moment que le poste est démarré et accès au net, ça ce déploie ( bien sur penser à ce que le serveur source ou se trouve le point exe et vbs soit accessible depuis l'ext ou à défault via une connexion VPN et au prochain synchro de l'agent, le déploiement ce fait)

Pour finaliser le déploiement, ne pas oublier soit d'ajouter un script pour supprimé les fichiers sources du postes via toujours fusion, ou même une GPO.

Attention ; lors du déploiement sous fusion, les graphiques de suivi seront tronqué, du fait qu'a un instant T du déploiement, l'agent ne répondra plus ( forcément vu que nous avons une nouvelle installe, l'agent ne peu reprendre le suivi du déploiement sur les graphiques mais ce dernier est bien déployer, j'espère être assez claire :-) )

En espérant avoir aidé un peu.

Last edited by Massa (2020-12-22 18:36:17)

Offline

#5 2020-12-23 09:23:11

Haprocky
Member
Registered: 2020-12-18
Posts: 5

Re: Déploiement Fusion Inventory ne fonctionne pas / GLPI 9.5.3 / FI 2.6

Bonjour Massa,

Je te remercie pour ton explication très claire !

Je vais aller test ça ! smile

Offline

#6 2020-12-23 17:14:33

impaa
Member
Registered: 2017-06-15
Posts: 28

Re: Déploiement Fusion Inventory ne fonctionne pas / GLPI 9.5.3 / FI 2.6

Bonjour Massa,

Je viens de voir ton message.
Déjà merci.

Je suis en congé et je ne pourrais pas regarder avant le 4 janvier.
Dans mon cas, je repars d'un serveur GLPI tout neuf.
Ce serveur est sous debian et n'a aucun droit sur les postes utilisateurs.
Je me retrouve donc bloqué.

Ce que tu décris reste du coup une action manuel puisque tu inities la copie et lance l'installe ?
Dans mon cas, si le poste utilisateur n'est pas connecté au réseau, ça ne peut pas marcher.
Au démarrage, les utilisateurs ont le choix de connecter leur VPN ou pas mais cette action se fait après ouverture de session Windows...

Dans le cadre du télétravail, les GPO avec script à ouverture de session ne s'exécute pas forcément car si la ressource est sur le réseau local, c'est inaccessible à l'instant T... 
Le temps que l'utilisateur connecte son VPN, c'est déjà trop tard...

Je vais réfléchir à une solution intermédiaire...
Pour le coup, le vbs qui se lance appel le .exe qui est sur le réseau local et le vbs contient bien toute les infos ...

Je suis un peu bloqué pour le coup sad

Offline

#7 2020-12-23 18:14:22

Massa
Member
Registered: 2019-04-03
Posts: 12

Re: Déploiement Fusion Inventory ne fonctionne pas / GLPI 9.5.3 / FI 2.6

Bonjour Impaa,

Alors pour de plus amples détails et suite à mon 1er retour, ce dernier s'appuie sur les pré-requis suivant :

Un serveur GLPI monté ou l'adresse web de ce dernier est bien joignable depuis n'importe quel connexions internet ( externe , interne, télétravail ... )
Pour ma part, mon serveur GLPI sous CentOs 7 est joignable depuis n'importe ou en htxx://helpdesk.xxxxx.net

Un client fusion-inventory en local sur les postes collaborateurs fonctionnel peut importe la version client avec le module " deploy" installé, et qui remonte bien les postes sous ton GLPI

A partir de se postula , on peut lancer les montées de versions des clients locaux fusion-inventory via mon 1er retour.
Attention Impaa, les actions ne sont en aucun manuel sur les postes collaborateurs , de manière succins, voila comme j'ai poussé cela sur mon parc :

- Dépôt des binaires sur un serveur ou un partage accessible depuis les postes clients, soit via le lan de ton entreprise, soit via le vpn pour les connexions extérieurs.
- Les tâches et packages créés sous l'administration fusion_inventory de GLPI consiste justement à copier les sources se trouvant sur le partage cité ci dessus vers , comme exemple , dans les temp ( C:\tmp ) des postes collaborateurs.

Ca donne donc : partage accessible ou se trouve source exe + vbs  => copié en local sur les postes collaborateurs => exécution du script vbs local sur poste collaborateurs.


Tu me souligne que tu part d'un nouveau GLPI, mais a tu quand même des clients locaux fusion-inventory sur les postes users ?
Si c'est bien le cas, et si tu change du coup ton serveur GLPI , pense bien a actualiser la clef de registre ( via GPO su coup là, pas le choix ) concernant ton nouveau serveur ( si ce dernier a changé d'ip ou d'adresse web )
La clef de registre qui nous interesse : Ordinateur\HKEY_LOCAL_MACHINE\SOFTWARE\FusionInventory-Agent   => server : htxxx://helpdesk..........


A contrario, si aucun client fusion-inventory locaux, pas le choix que de passer par des GPO arfffff

Pour finir, et afin que cela soit le plus propre possible, penser a supprimer les dépôts des binaires sur les postes clients via GPO ou encore une fois via package + script fusion , pour cleanner donc c:\tmp

N'hésite pas si cela est ambiguë ou si encore des questions.

Last edited by Massa (2020-12-23 18:25:38)

Offline

#8 2021-01-04 12:38:41

impaa
Member
Registered: 2017-06-15
Posts: 28

Re: Déploiement Fusion Inventory ne fonctionne pas / GLPI 9.5.3 / FI 2.6

Hello !

Meilleurs voeux et merci pour ces explications.
Je vais vérifier pour la partie deploy du fusion inventory installé sur les postes car oui j'ai déjà un vieux GLPI + FI.
Je vais aussi regarde la clé de registre, si déjà je peux changer cette valeur par GPO, la moitié du travail sera effectué car j'aurais les remontées de mes clients même si la version de FI est vieille.

Merci pour ces infos !

Offline

#9 2021-01-29 16:39:38

smarcos-starxpert
Member
Registered: 2019-10-08
Posts: 8

Re: Déploiement Fusion Inventory ne fonctionne pas / GLPI 9.5.3 / FI 2.6

Hello,

Par tous hasard, dans ton script VBS, as-tu mis l'option "/installtype=from-scratch" dans la variable "Setup" ?


/installtype=from-scratch permet de repartir d'une installation à zéro

Cordialement,

Offline

Board footer

Powered by FluxBB