El Blog de Gualtrysoft

Windows 2000/2003/2008, Active Directory, VBScript, Hyper-V, PowerShell y todo aquello interesante a la hora de usar, configurar y administrar Windows Server. También tenemos longanizas…

Script VBScript Para Cambiar El Nombre A Una Conexión De Red

Posted by urpiano en Jueves 8 \08\UTC marzo \08\UTC 2007

El presente script nos permite ejecutarlo en un equipo y cambiar el nombre de una conexión de red, suministrando como parámetros el nombre de la conexión de red a cambiar y el nuevo nombre a establecer.

Por desgracia, esta tarea no puede ser realizada con WMI, lo cual sería ideal para poder renombrar las conexiones de todos los equipos de la red desde un equipo y una sola ejecución de un script que así lo hiciera (ver scripts anteriores en este mismo blog que utilizan tan maravillosa prestación de WMI). En su lugar nos vemos obligados a utilizar el objeto Windows Shell.Application para obtener la carpeta de conexiones de red y recorrer las conexiones hasta encontrar la deseada y cambiar su propiedad Name. Si quisieramos realizar el cambio en todos los equipos de la red, deberíamos ir equipo a eqiupo ejecutándolo o en su defecto podríamos tener este script como script de arranque de equipo en una GPO durante una temporada, hasta que viésemos que todos los equipos tiene eel nombre de conexión de red deseado.

El script está basado en:

Hey, Scripting Guy!How Can I Rename a Local Area Connection?
http://www.microsoft.com/technet/scriptcenter/resources/qanda/may05/hey0511.mspx

La diferencia entre el script del Scripting Guy y éste estriba en el cambio de nombre de variables (para una mejor comprensión del código), la inclusión de comentarios en el código (mismo objetivo que en el caso anterior) y, sobre todo, en que este script recibe el nombre de la conexión a cambiar y el nuevo nombre como parámetros, lo que le hace mucho más útil y versátil, al no tener que modificarlo para cada nuevo nombre que deseemos procesar, solo cambiar la llamada que se hace. He aquí el script

'******************************************************************
'renombra-conexion-de-red.vbs 

'Script que cambia el nombre de una conexión de red. Recibe dos
'parámetros, el nombre de la conexión a cambiar y el nombre
'nuevo que se le pondrá:

'cscript [//nologo] renombra-conexion-de-red.vbs nombre_viejo nombre_nuevo

'Ejemplo: se cambia el nombre de la conexión de Conexión de área local a 
'         Privada. Obsérvesé el uso de las comillas cuando el nombre (ya 
'         sea el nuevo o el viejo) contiene espacios
'
'cscript //nologo renombra-conexion-de-red.vbs "Conexión de área local" Privada

'Basado en (realmente "calcado", sólo le incorporado cierta "verbosidad" y el 
'suministrarle parámetros, en lugar de poner el nombre viejo y nuevo en el código
'directamente, lo que le hace más útil):

'Hey, Scripting Guy!How Can I Rename a Local Area Connection?
'http://www.microsoft.com/technet/scriptcenter/resources/qanda/may05/hey0511.mspx

'© Marzo 2007 - Fernando Reyes

'Esta constante es la de la carpeta de conexiones de red
'del método Namespace del objeto Windows Shell:
'NameSpace Method
'http://msdn2.microsoft.com/en-gb/library/ms630418.aspx
'ShellSpecialFolderConstants Enumerated Type
'http://msdn2.microsoft.com/en-gb/library/ms630424.aspx
'CSIDL
'http://msdn.microsoft.com/library/default.asp?url=
'/library/en-us/shellcc/platform/shell/reference/enums/csidl.asp
Const CSIDL_CONNECTIONS = &H31&

'Variables para almacenar los nombres de conexión
Dim str_NombreAnterior
Dim str_NuevoNombre

'Controlará si se ha cambiado o no el nombre de conexión
Dim bol_Cambiada

'Si se ha pedido la ayuda, se muestra y se termina el script
If WScript.Arguments.Named.Exists("?") Then

    Call s_Ayuda
    WScript.Quit 0
    
End If

'Revisamos que se hayan pasado los parámetros necesarios, es decir, 
'el nombre de la conexión actual y el nombre nuevo que se quiere poner
If Not WScript.Arguments.Unnamed.Count = 2 Then

    'Mostramos la ayuda y terminamos el script con error 1
    Call s_Ayuda
    WScript.Quit 1
    
End If

'Recogemos el nombre de la conexión a cambiar y el nombre que se
'le debe poner
str_NombreAnterior = WScript.Arguments.Unnamed(0)
str_NuevoNombre=WScript.Arguments.Unnamed(1)

'Ponemos como no cambiado el nombre en la booleana que recoge esto
bol_Cambiada = False

'Creamos un objeto Windows.Shell.Application
Set obj_Shell = CreateObject("Shell.Application")

'Obtenemos la carpeta de conexiones de red con el método Namespace
'del objeto Windows.Shell.Application, pasándole la constante
'CSIDL_CONNECTIONS
Set obj_CarpetaConexionesDeRed = obj_Shell.Namespace(CSIDL_CONNECTIONS)

'Obtenemos la colección de conexiones de red contenidas en la carpeta
'de conexiones de red
Set col_ConexionesDeRed = obj_CarpetaConexionesDeRed.Items

'recorremos ahora una a una las conexiones de red
For Each obj_ConexionDeRed in col_ConexionesDeRed

    'Si los nombres coinciden, de forma no sensible al caso...
    If UCase(obj_ConexionDeRed.Name) = UCase(str_NombreAnterior) Then
    
        'Renombramos la conexión
        obj_ConexionDeRed.Name = str_NuevoNombre
        
        'Marcamos la conexión como renombrada
        bol_Cambiada=True
        
        'Salimos del bucle For
        Exit For
        
    End If
    
Next

'Si se ha cambiado (es decir, encontrado) el nombre a la conexión...
If bol_Cambiada Then

    'Mostramos en pantalla un mensaje informando de que se ha cambiado
    WScript.Echo "La conexión de red """ & str_NombreAnterior & """ " & _
                 "a sido renombrada a """ & str_NuevoNombre & """ con " & _
                 "éxito."
                 
'En caso de que no se haya encontrado la conexión...
Else

    'Mostramos un mensaje avisando que no se encontró la conexión
    WScript.Echo "La conexión de red """ & str_NombreAnterior & """ no " & _
                 "ha sido encontrada en este equipo."
                 
End If

'Limpieza de la retaguardia :-Þ
Set obj_ConexionDeRed = Nothing
Set col_ConexionesDeRed = Nothing
Set obj_CarpetaConexionesDeRed = Nothing
Set obj_Shell = Nothing

'Salimos del script
WScript.Quit 0

Sub s_Ayuda()
'Este método muestra la ayuda en pantalla

    WScript.Echo vbCrLf & vbCrLf
    WScript.Echo "renombra-conexion-de-red.vbs"
    WScript.Echo vbCrLf & vbCrLf
    WScript.Echo "Script VBScript que permite cambiar el nombre de una " & _
                 "conexión de red."
    WScript.Echo vbCrLf & "Sintaxis"
    WScript.Echo ""
    WScript.Echo "cscript [//nologo] renombra-conexion-de-red.vbs " & _
                 "nombre_viejo nombre_nuevo" & vbCrLf
    WScript.Echo vbCrLf & "Ejemplo: se cambia el nombre de la cone" & _
                 "xión de Conexión de área local a Privada. Obsérv" & _
                 "esé el uso de las comillas cuando el nombre (ya " & _
                 "sea el nuevo o el viejo) contiene espacios"
    WScript.Echo vbCrLf
    WScript.Echo "cscript //nologo renombra-conexion-de-red.vbs " & _
                 """Conexión de área local"" Privada"     
    
End Sub

2 comentarios to “Script VBScript Para Cambiar El Nombre A Una Conexión De Red”

  1. r3y said

    pero como quedaria el resultado?

  2. urpiano said

    R3y,

    Para cambiar “Conexión de área local” por “Pública” simplemente ejecutas:

    cscript //nologo renombra-conexion-de-red.vbs "Conexión de área local" "Pública"

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: