Unidades de Red

Publicada el 27/09/2006 a las 06:09 y leída 2334 veces. Traducir ao galego Traducir ao galego.

Como normalmente en mi trabajo necesito conectarme a unidades de red y, no solo en la oficina, sino que también en los clientes a los que me desplazo, me he programado un script en VBS para la gestión de las conexiones.

La idea es simple: iremos añadiendo perfiles al VBS con las distintas direcciones de las conexiones a las unidades de red que necesitemos, incluyendo el usuario y contraseña para validarse en los casos que sea preciso. Al ejecutar el script nos solicitará un nombre de perfil al que conectarse. Previamente, si existen unidades de red ya conectadas nos preguntará si queremos desconectarnos de ellas. Últimamente nos mostrará un mensaje con las unidades de red disponibles.

Visual Basic:
  1. '---------------------------------------------------------------------------------
  2. '  UNIDADES DE RED
  3. ' -------------------------------------
  4. '  Autor       : Hanok
  5. '  Información : http://www.hnkweb.com
  6. '  Fecha       : 09/2006
  7. '---------------------------------------------------------------------------------
  8.  
  9. 'DEFINICIÓN DE VARIABLES
  10. '---------------------------------------------------------------------------------
  11. Dim WshNet, WshShell, fso, Unidades_de_red, perfil
  12.  
  13. 'Creación del objeto red, el objetoy shell y el acceso a la estructura de ficheros
  14.  
  15. Set WshNet = Wscript.CreateObject("WScript.Network")
  16. Set WshShell = WScript.CreateObject("WScript.Shell")
  17. Set fso = WScript.CreateObject("Scripting.FileSystemObject")
  18.  
  19. 'Asignación de las unidades de red a una matriz
  20. Set unidades_de_red = WshNet.EnumNetworkDrives
  21.  
  22. 'FUNCIONES
  23. '---------------------------------------------------------------------------------
  24. Function Nueva_Unidad(unidad,ruta, usuario, password)
  25. Dim num
  26. num = unidad & ":"
  27. On Error Resume Next
  28. WshNet.MapNetworkDrive num , ruta, False, usuario, password
  29. Nueva_Unidad = Err.Number = 0
  30. End Function
  31.  
  32. Function EnumerarUnidades
  33. Set unidades_de_red = WshNet.EnumNetworkDrives
  34. If unidades_de_red.count = 0 then
  35. msgbox "No hay Unidades de red conectadas.", vbInformation + vbOkOnly
  36. Else
  37. strMsg = "Conexiones actuales a unidades de red: " & chr(13)
  38. For i = 0 To unidades_de_red.Count - 1 Step 2
  39. strMsg = strMsg & chr(13) & unidades_de_red(i) & Chr(9) & Unidades_de_red(i + 1)
  40. Next
  41. MsgBox strMsg, vbInformation + vbOkOnly
  42. End If
  43. End Function
  44.  
  45. 'INICIO
  46. '---------------------------------------------------------------------------------
  47.  
  48. Set unidades_de_red = WshNet.EnumNetworkDrives
  49.  
  50. 'Borrar todas las unidad de red, en caso de que el usuario así lo quiera
  51. If unidades_de_red.count> 0 then
  52. borrar = msgbox("¿Borramos todas las Unidades de red?", vbQuestion+vbYesNo,"Redes")
  53. If borrar = vbYes then
  54. For n_prueba = 26 To 5 Step -1
  55. num = chr(n_prueba + 64) & ":"
  56. On Error Resume Next
  57. WshNet.RemoveNetworkDrive num , True
  58. Next
  59. End if
  60. End if
  61.  
  62. perfil = InputBox("Introduzca el perfil al que se desea conectar:", "Unidades de Red - Perfil", "Oficina")
  63.  
  64. Select Case true
  65. Case UCase(perfil) = "CASA"
  66. Nueva_Unidad "D", "\\192.168.0.1\DATOS", NULL, NULL
  67. Case UCase(perfil) = "OFICINA"
  68. Nueva_Unidad "D", "\\servidor\Documentos", "administrador", "1234"
  69. Nueva_Unidad "S", "\\servidor\Software", "administrador", "1234"
  70. Nueva_Unidad "U", "\\servidor\Usuarios", "administrador", "1234"
  71. Case UCase(perfil) = "CLIENTE1"
  72. Nueva_Unidad "P", "\\220.10.60.8\Excels", "usuario", "contraseña"
  73. End Select
  74.  
  75. 'Enumerar las unidades de red
  76. EnumerarUnidades
  77.  
  78. 'Liberamos la memoria
  79. Set WshNet = Nothing
  80. Set WshShell = Nothing
  81. Set fso = Nothing
  82. Set Unidades_de_red = Nothing
  83.  
  84. WScript.Quit()

Descargar: Unidades de Red.vbs

Otras entradas relacionadas

dolcebita

  • Leyder Tacuma
    Hola @drotha2,

    me podrias colaborar con el codigo completo del scrip que se ejecuta sin pedir nada.

    muchas gracias.

    Mi Correo es leyder.tacuma@gmail.com
  • @drotha2: estás eliminando más líneas de las que te indico. Te paso un correo con el script completo para no llenar los comentarios con código.


    Si el usuario tiene otra unidad de red mapeada la va a perder, tendrías que añadirsela al script para que también la mapeara, pues el borrado elimina todas.



    En relación con cómo lanzar el script al inicio tendrás que buscar si existe esa opción en Windows. A lo mejor puedes añadir una entrada en el "Run" del registro de Windows; pero en esto no te puedo ayudar.
  • puse esto pero me da un erro, la intencion es q borre la unidad mapeada sin preguntar...

    Set unidades_de_red = WshNet.EnumNetworkDrives

    If unidades_de_red.count > 0 Then
    WshNet.RemoveNetworkDrive num , True
    End if

    Nueva_Unidad "t", "\\192.168.15.144\compartida", NULL, NULL
    ' , "administrador", "1234"

    Me da un error y creo que me falta algo, como ya comente la unidad de red ya se mapea, otra cuestion es, el usuario ya tiene una unidad mapeada por lo que no me interesa que se borre, solo necesito borrar la que yo mapeo. También estoy pensando en si el vbs se podría ejecutar al inicio de sesión, cuando carga los controladores y hace el logueo del usuario, de esa forma, desde mi punto de vista, no tendria necesidad de borrar la unidad antes y el usuario no podria borrarme el archivo.
  • @drotha2: como te comenté al principio, si borras las líneas 52, 53 y 59 del script [solo esas, no las intermedias] entras en el bucle que elimina todas las unidades de red (RemoveNetworkDrive) al iniciar.
  • Me falto una cosa en la linea Nueva_Unidad “j”, “\192.168.15.144\compartida”, NULL, NULL
    Ahora mi problema es que esa unidad al iniciar el equipo esta mapeada pero no loguea, se podría poner una linea anterior para que borrara la unidad antes de crearla???... Siento las molestias!!
  • A ver si lo entendi... el tema quedo asi... que conste que ahora las pruebas las estoy realizando sobre una unidad q no me pide ni clave ni contraseña, una vez verificado que funciona tendre que usarlas.

    'INICIO
    '---------------------------------------------------------------------------------

    Set unidades_de_red = WshNet.EnumNetworkDrives

    Nueva_Unidad "j", "\\192.168.15.144\compartida"
    ' , "administrador", "1234"


    'Enumerar las unidades de red
    EnumerarUnidades

    'Liberamos la memoria
    Set WshNet = Nothing
    Set WshShell = Nothing
    Set fso = Nothing
    Set Unidades_de_red = Nothing

    WScript.Quit()
  • @drotha2: Hola, estos son los pasos que tienes que seguir para preparar el script:


    Eliminar las líneas 52, 53 y 59 para borrar las unidades automáticamente.



    Reemplazar desde la 62 hasta la 73 con una única llamada a Nueva_Unidad pasándole los parámetros necesarios.



    Eliminar las líneas 75 y 76 para que no muestre el mensaje de las unidades conectadas.



    Un saludo
  • Hola, Podrías decirme que quito para q el script se ejecute sin pedir nada, necesito colocarlo en inicio, todos los programas, inicio para que mapee una unidad de red a la que se accede con clave y contraseña. Tengo que instalarselo a muchos usuarios. Al iniciar sesion la unidad de red aparece desconectada, no se si seria mejor que el script primero borrara la unidad mapeada y después la creara otra vez.

    Muchas Gracias!!!
  • @Cristian Sanchez: hola, hace mucho que no toco el ASP, pero ten en cuenta que es un lenguaje que se ejecuta del lado del servidor, me pareceria raro (y grave) que permitiese ejecutar este tipo de operaciones en el cliente.
    saludos.
  • Cristian Sanchez
    hola, necesito que me ayudes en un problema que tengo. Tengo que hacer lo mismo que hicites en este código, pero lo tengo que realizar en ASP. Es posible que me puedas ayudar con algun código que puedas tener o decirme si se puede realizar o no. muchas gracias
blog comments powered by Disqus