Friday, November 20, 2009

VBScript: acceso a variables de sistema y ejecución de otros prog

VBScript: acceso a variables de sistema y ejecución de otros programas



Acceso a variables de sistema

VBScript proporciona acceso a las variables de sistema mediante el método ExpandEnvironmentStrings() de los objetos de tipo WScript.Shell.

La manera de obtener el valor de una variable es:
'Obtener una variable de tipo "WScript.shell"
set ws=createobject("WScript.shell")
'Obtener el valor de la variable de sistema que nos interese
'mediante la función ExpandEnvironmentStrings()
variable=ws.ExpandEnvironmentStrings("COMPUTERNAME")

'Ahora ya podemos hacer lo que sea con ese valor



Variable
Descripción
Ejemplo
COMMONPROGRAMFILESUbicación de la carpeta common program files
C:\Program files\Common Files
COMPUTERNAMENombre del equipo
PC2
COMSPECRuta completa hasta el actual cmd.exe
C:\Windows\system32\cmd.exe
HOMEDRIVEDisco en que está el perfil del usuario que ejecuta el script
C:
HOMEPATHUbicación de la raíz
\
LOGONSERVERNombre del servidor que validó al usuario
\\DC1
NUMBER_OF_PROCESSORSNumero de CPUs del equipo

OS
Nombre del S.O.
Window_NT
PATH
Rutas en que busca por defecto

PATHEXT
Extensiones que reconoce como de ejecutables
.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;
PROCESSOR_ARCHITECTUREArquitectura de los procesadores
X86
SYSTEMDRIVEDisco de sistema
C:
SYSTEMROOTRaíz de la instalación de Windows
C:\WINNT
USERDOMAINDominio del usuario
LASALLE
USERNAME
Nombre del usuario
Steve Ballmer
USERPROFILE
Ruta del perfil de usuario
D:\Documents and Settings\Steve Ballmer


Ejecución de otros programas desde VBScript


Para ejecutar una aplicación en WSH hay que crear una instancia de  WScript.Shell, y entonces usar run().  Por ejemplo, para hacer un script que añada un usuario que pasamos por parámetro a nuestro script altas.vbs:

dim oshell

set oshell=createobject("WScript.shell")
oshell.run "dsadd user "& Chr(34) & "cn=jana montana,cn=users,dc=lasalle,dc=local"& Chr(34) & " -pwd P@@ssw0rd"


y en la OU users del dominio en cuestión aparecería el nombre de usuario en cuestión.
Chr(34) es la forma de escribir unas comillas que van dirigidas al parámetro de run() y no al VBScript. Lo que queremos que ejecute en realidad el script cuando lo llamamos como altas.vbs "jana montana" es:

dsadd user "cn=jana montana,cn=users,dc=lasalle,dc=local" -pwd P@@ssw0rd

ya que sin las comillas, dsadd dará un error al detectar un espacio entre jana y montana.

También podemos usar variables de sistema al llamar a run(). El siguiente ejemplo se encarga de abrir con el notepad el fichero que pasemos por parámetro:

dim oshell
set oshell=createobject("WScript.shell")
oshell.run "%SystemRoot%\system32\notepad "& wscript.arguments(0)


Parámetros adicionales para la función run():

Hasta ahora hemos tomado un objeto de tipo WScript.shell y hemos ejecutado run() pasándole como único argumento el nombre o ruta completa del programa que queríamos ejecutar. El método run() admite no obstante dos parámetros más, uno para controlar el comportamiento de la ventana en que se ejecutará el programa al que llamamos, y otro para controlar si el script debe esperar a que finalice el programa que acabamos de lanzar, o si puede seguir con la siguiente instrucción mientras se va ejecutando el programa que hemos lanzado.

object.Run (“command”, [winStyle], [“waitOnReturn”])

winStyle puede tomar valores entre 0 y 10. En el siguiente artículo de microsoft hay una descripción muy extensa: http://technet.microsoft.com/en-us/library/ee156605.aspx












 Integer 



                  Window Style Description



0



Hides the window and activates another window.



1



Activates and displays a window. If the window is minimized or
maximized, the system restores it to its original size and position. An
application should specify this flag when displaying the window for the
first time.



2



Activates the window and displays it as a minimized window.



3



Activates the window and displays it as a maximized window.



4



Displays a window in its most recent size and position. The active window remains active.



5



Activates the window and displays it in its current size and position.



6



Minimizes the specified window and activates the next top-level
window in the Z order. The Z order is nothing more than the list
detailing the order in which windows are to be activated. If you press
ALT+TAB, you will see a graphical representation of the Z list.



7



Displays the window as a minimized window. The active window remains active.



8



Displays the window in its current state. The active window remains active.



9



Activates and displays the window. If the window is minimized or
maximized, the system restores it to its original size and position. An
application should specify this flag when restoring a minimized window.



10



Sets the show-state based on the state of the program that started the application.


Si fijamos el valor de  waitOnReturn a True, el script vbs esperará a que finalice la ejecución que le acabamos de pedir antes de proseguir con la siguiente instrucción.















No comments: