RSS

Instalación automática de OSC Agent en equipos en dominio Windows.

Hace poco he tenido que realizar una instanció de OCS Invetory y el consiguiente despliegue de su agente para los puestos de usuarios en Windows 7.

Como es normal en el despliegue del agente, uno desea que sea lo mas automatizado posible, pero claro; equipos en Windows 7 con su  UAC y usuarios sin permisos administrativos para realizar la consiguiente instalación del agente…

En esto que empecé a dar vueltas al tema. Lo normal es realizar la instalación por políticas, pero claro, a la vez hay que realizar la configuración del agente para que se comunique con el servidor y además el instalador es un .exe.

Bueno, creo que la mejor forma de hacerlo en este caso no es la que se explica por la comunidad del proyecto, ya que esta solución cuanto al menos requiere que el usuario sea administrador local o tenga permisos de para realizar la instalación del agente y lo que nos interesa es que la instalación sea lo mas transparente posible  para los usuarios. Casi desapercibida.

Evidentemente la solución pasa por automatizar un Script. La función esta realizada en VBScript. Su funcionalidad:

  • Determinar si ya se ha instalado OCS Agent y si no ha sido así…
  • Copiar el fichero de instalación.
  • Ejecutar la instalación con un usuario que tenga privilegios para ello mediante un RUNAS pasando como parámetro del script la password del usuario con permisos.

 

Paso a exponer el código:

‘Primero una pausa.

WScript.Sleep 3000

on error resume next

‘Ver si el proceso de ocs se esta corriendo.

‘_______________________________________________

Dim objWMIService, objProcess, colProcess

Dim strComputer, strProcessKill

Dim i, pass, WshShell

strComputer = «.»

strProcessKill = «‘OcsSystray.exe'»

Set objWMIService = GetObject(«winmgmts:» & «{impersonationLevel=impersonate}!\\» & strComputer & «\root\cimv2»)

Set colProcess = objWMIService.ExecQuery _

(«Select * from Win32_Process Where Name = » & strProcessKill )

For Each objProcess in colProcess

‘Si existe salimos del proceso.

‘Wscript.Echo «Proceso encontrado.»

Wscript.Quit

Next

‘WScript.Echo «Proceso no encontrado.»

‘Copiamos el archivo a local.

‘__________________________________________________

Dim objFSO         ‘objeto del tipo FileSystemObject para manejar el fichero

Dim sobreescribir         ‘variable que contendra true o false.

Dim Origen, Destino

Dim objShell

Dim objVariableEntorno

Set objShell = WScript.CreateObject(«WScript.Shell»)

Set objVariableEntorno = objShell.Environment(«Process»)

Destino=objVariableEntorno(«USERPROFILE») &»\»

Origen=»\\dombox2\comun\OCS-NG-Windows-Agent-Setup.exe»

‘wscript.echo (Destino)

sobreescribir = False    ‘ En mi caso no quiero que sobreescriba el fichero si existe.

Set objFSO = CreateObject(«Scripting.FileSystemObject»)

‘comprobar si existe el directorio destino existe y si es asi, copiar el fichero.

If not(objFSO.FileExists(Destino & «OCS-NG-Windows-Agent-Setup.exe»)) Then

objFSO.CopyFile Origen, Destino, sobreescribir

End If

‘Extraemos la password del argumento.

‘_____________________________________________________

‘Se tiene que pasar el parametro con la password de forma ‘/pass=password’

‘La password no puede ser nula.

If WScript.Arguments.Count = 0 Then

‘ No hace nada.

Else

‘Llenamos la variable pass con la password

For i = 0 To Wscript.Arguments.Count -1

If Left(Wscript.Arguments(i),5) = «/pass» Then

pass= Right(Wscript.Arguments(i),Len(Wscript.Arguments(i))-6)

‘msgbox (pass)

End If

Next

‘Ejecutamos en linea de comandos y con runas.

‘______________________________________________________

set WshShell = WScript.CreateObject(«WScript.Shell»)

WshShell.run «runas /user:N5110\javier «»» & Destino & «OCS-NG-Windows-Agent-Setup.exe /S /SERVER=http://10.0.0.8/ocsinventory /NOW»»»

WScript.Sleep 1000

WshShell.SendKeys Pass ‘send password

WshShell.SendKeys «{ENTER}»

WScript.Sleep 10000

‘set wshshell = nothing

End If

 

*ATENCIÓN: Si vas a reutilizar este código ten en cuenta de cambiar las rutas de origen del  archivo de instalación del agente, asi como los parámetros de RUNAS de usuario y parámetros de instalación del OCS-Agent.

Descarga el script aqui.

 

Una vez tenemos esto, solo nos queda añadir el script por políticas al inicio de sesión de los usuarios o computadoras  donde queremos implantarlo pasando la password del usuario con permisos administrativos como parámetro.  Esto se realizaría de la siguiente forma.

 

Utilizamos el Administrador de directivas para editar la política en la OU correspondiente.

Vamos a Configuracioón de Usuario -> Scripts (inicio de sesión) y hacemos doble click en Iniciar sesión.

 

 

Añadimos la ruta del Script y en Parámetros de Script ponemos la password de con el parámetro /pass=

Sin espacios. La password no puede ser nula.

 

Si todo esta en su sitio, la instalación se ejecutará automáticamente en el próximo login del usuario,

 

 


0 Comments Add Yours ↓

  1. elena #
    1

    Muchas gracias, ha sido de gran utilidad. un abrazo y muchos besossss