Posteado por: rscorreo | junio 23, 2008

Activar y/o desactivar el interfaz de red por VBScript

Pues la verdad que resulta útil desactivar y posteriormente activar el interfaz de red en determinadas circunstancias, como por ejemplo, si quieres configurar algo del Outlook, sin que envíe o reciba correo y lo tienes configurado para que lo haga nada más abrirlo…

Lo he encontrado en una página (no la recuerdo, pero la buscaré). Realizando un sencillo C&P lo tendrás operativo.

Para ejecutarlo es nombredelvbs.vbs “interfaz de red”.

Ejemplo: desde una ventana dos, poner  actdes.vbs “Conexión de área local” y se desactiva.

Código:


'activa-desactiva-conexion-de-red.vbs

‘Este script VBScript permite activar o desactivar una conexión de red
‘que se recibe como parámetro. Si está activada la desactivará y si
‘está desactivada la activará.

‘Sintaxis:

‘cscript [//nologo] activa-desactiva-conexion-de-red.vbs <conexión>

‘Siendo <conexión> el nombre de la conexión de red que se debe
‘activar/desactivar. Ejemplos:

‘cscript activa-desactiva-conexion-de-red.vbs “Conexión de área local”
‘cscript //nologo activa-desactiva-conexion-de-red.vbs Privada

‘(c) Fernando Reyes – 12/2006

Option Explicit

If WScript.Arguments.Count <> 1 Then

WScript.Echo “Error 1: Número de parámetros erroneo.”
WScript.Echo
WScript.Echo _
“activa-desactiva-conexion-de-red.vbs: Script VScript que sirve para”
WScript.Echo _
“activar la conexión de red recibida como parámetro, si se encuentra”
WScript.Echo “desactivada; en caso de estar activad la desactivará.”
WScript.Echo
WScript.Echo _
“Modo de uso – se debe lanzar con cscript de la siguiente manera:”
WScript.Echo
WScript.Echo _
“cscript //nologo activa-desactiva-conexion-de-red.vbs <conexion>”
WScript.Echo
WScript.Echo “Siendo:”
WScript.Echo
WScript.Echo _
“<conexion>: el nombre la conexión de red; si incluye espacios deberá”
WScript.Echo ”            estar encerrado entre comillas.”
WScript.Echo
WScript.Echo “Ejemplo:”
WScript.Echo
WScript.Echo _
“cscript //nologo activa-desactiva-conexion-de-red.vbs ” & _
“””Conexión de área local”””
WScript.Quit 1

End If

‘Definimos la constante ShellSpecialFolder correspondiente
‘al Panel de control:
‘ShellSpecialFolderConstants Enumerated Type
http://msdn2.microsoft.com/en-gb/library/ms630424.aspx
Const ssfCONTROLS = 3

‘Declaramos las variables que usaremos

Dim bol_ConexionEncontrada
Dim str_Conexion, str_CarpetaConexionesDeRed
Dim str_VerboActivar, str_VerboDesactivar
Dim obj_Verbo
Dim obj_AplicacionShell, obj_PanelDeControl
Dim obj_ElementoDePanelDeControl
Dim fol_CarpetaConexionesDeRed, obj_Conexion

‘Recogemos la conexión a activar-desactivar del parámetro
‘recibido
str_Conexion = WScript.Arguments(0)

‘Estas son las cadenas que definen los verbos del objeto
‘conexión para activar o desactivar la conexión. Este es el
‘defecto de tener que hacer esto por medio de verbos, en lugar hacerlo
‘con WMI, pues en cada idioma el verbo es diferente y por tanto se debe
‘retocar el script según lenguaje. No sólo según lenguaje, pues tanto los
‘verbos como la carpeta de conexiones de red varían según la versión de
‘de Windows, siendo diferentes en Windows 2000 a los que hay en Windows XP
‘y 2003. Este script contempla las versiones 2000/XP y 2003, utilizando
‘los nombres correspondientes. Sólo en Vista y Longhorn Server se
‘puede activar/desactivar una conexión por medio de WMI, usando el objeto
‘Win32_NetworkAdapter del espacio CIMV2, pues este objeto incluye los métodos
‘Enable y Disable, cosa que no sucede con versiones anteriores de Windows:

‘Enable Method of the Win32_NetworkAdapter Class
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi
‘/enable_method_in_class_win32_networkadapter.asp

‘Disable Method of the Win32_NetworkAdapter Class
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi&#8217;
‘/disable_method_in_class_win32_networkadapter.asp

‘Después de este rollo, aquí es donde definimos los verbos y el nombre
‘de la carpeta de conexiones de red por medio de una llamada a la
‘función que mira la versión del SO y asigna los nombres que correspondan
str_CarpetaConexionesDeRed = f_CarpetaConexiones(str_VerboActivar, _
str_VerboDesactivar)

‘Creamos un objeto aplicación shell
Set obj_AplicacionShell = CreateObject(“shell.application”)

‘cargamos el panel de control, por medio del método Namespace,
‘pasándole la constante del panel de control
Set obj_PanelDeControl = obj_AplicacionShell.Namespace(ssfCONTROLS)

‘Recorremos ahora los diferentes elementos del panel de control
For Each obj_ElementoDePanelDeControl In obj_PanelDeControl.items

‘Revisamos que se trate de la carpeta de conexiones de red y en caso de
‘serlo, cargamos la carpeta en su objeto
If UCase(obj_ElementoDePanelDeControl.Name) = _
UCase(str_CarpetaConexionesDeRed) Then

Set fol_CarpetaConexionesDeRed = obj_ElementoDePanelDeControl.GetFolder
Exit For

End If

Next

bol_ConexionEncontrada = False

‘Recorremos ahora las conexiones de red existentes
For Each obj_Conexion In fol_CarpetaConexionesDeRed.items

‘Si encontramos la conexión recibida como parámetro la cargamos
‘en su objeto
If UCase(obj_Conexion.Name)  = UCase(str_Conexion) Then

‘        Set obj_ConexionDeRed = obj_Conexion
‘        Exit For

‘Recorremos ahora los verbos de la conexión. Si la
‘conexión está activada no tendrá el verbo activar,
‘si está desactivada no tendrá el verbo desactivar;
‘de esta manera sabremos en qué estado está y por tanto
‘qué verbo invocar para cambiar su estado.
For Each obj_Verbo In obj_Conexion.Verbs

If obj_Verbo.Name = str_VerboActivar Then

‘Hemos encontrado el verbo Activar, por tanto
‘activamos la conexión, pues está desactivada
‘Para ello invocamos el método DoIt del verbo
obj_Verbo.DoIt
Exit For

ElseIf obj_Verbo.Name = str_VerboDesactivar Then

‘Hemos encontrado el verbo Desactivar, por tanto
‘desactivamos la conexión, pues está activada
‘Para ello invocamos el método DoIt del verbo
obj_Verbo.DoIt
Exit For

End If

Next

bol_ConexionEncontrada = True
Exit For

End If

Next

‘Si no hemos encontrado la conexión recibida como parámetro lo advertimos
‘y salimos del script
If Not bol_ConexionEncontrada Then

WScript.Echo “Error 2: No se ha encontrado la conexión de red ” & _
“””” & str_Conexion & “”””
WScript.Quit 2

End If

‘Damos tiempo a que se complete la operación de habilitar
‘o deshabilitar
WScript.Sleep 2000

‘Nos limpiamos el culito :-)
Set obj_Verbo = Nothing
Set obj_AplicacionShell = Nothing
Set obj_PanelDeControl = Nothing
Set obj_ElementoDePanelDeControl = Nothing
Set fol_CarpetaConexionesDeRed = Nothing
Set obj_Conexion = Nothing

Function f_CarpetaConexiones(str_VerboActivar, _
str_VerboDesactivar)
‘Esta función devuelve cómo se llama la carpeta de conexiones
‘de red según el sistema operativo que está ejecutando el script
‘Recibe dos parámetros de salida, en los que almacenará los
‘los nombres de los verbos para activar y desactivar correspondientes

Dim str_Equipo
Dim obj_ServicioWMI
Dim col_OSs
Dim obj_OS

‘Establecemos el equipo local
str_Equipo = “.”

‘Conectamos con el servicio WMI
Set obj_ServicioWMI = GetObject(“winmgmts:{impersonationLevel” & _
”    =impersonate}!\\” & str_Equipo & “\root\cimv2″)

‘Obtenemos una consulta WQL de los SOs del sistema (sólo devolverá
‘uno, obviamente)
Set col_OSs = obj_ServicioWMI.ExecQuery(“Select * from ” & _
“Win32_OperatingSystem”)
‘Recorremos la consulta (por supuesto, sólo será una vuelta)
For Each obj_OS in col_OSs

‘Miramos si en la propiedad Caption del SO aparece XP o
’2003, y en ese caso asignamos los verbos y devolvemos
‘el nombre de la carpeta de conexiones de red correspondientes
‘a Windows XP/2003
If InStr(1,obj_OS.Caption,”XP”) > 0 _
Or InStr(1,obj_OS.Caption,”2003″) > 0 Then

str_VerboActivar = “&Activar”
str_VerboDesactivar = “&Desactivar”
f_CarpetaConexiones = “Conexiones de red”

‘Si en la Caption aparece 2000 asignamos los verbos y el nombre
‘de la carpeta de conexiones de red de Windows 2000
ElseIf InStr(1,obj_OS.Caption,”2000″) > 0 Then

str_VerboActivar = “&Habilitar”
str_VerboDesactivar = “&Deshabilitar”
f_CarpetaConexiones = “Conexiones de red ” & _
“y de acceso telefónico”

‘En caso contrario ¡instala un sistema operativo de verdad, tío!
Else

WScript.Echo “Error 3: este script sólo funciona con ” & _
“Windows 2000, Windows XP y Windows 2003″
WScript.Quit 3

End If

Next

Set obj_OS = Nothing
Set col_OSs = Nothing
Set obj_ServicioWMI = Nothing

End Function

About these ads

Categorías

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

A %d blogueros les gusta esto: