votar

Unidades de Red

Publicada el 27/09/2006 a las 06:09 y leída 2709 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.

[vb]‘———————————————————————————
‘ UNIDADES DE RED
‘ ————————————-
‘ Autor : Hanok
‘ Información : http://www.hnkweb.com
‘ Fecha : 09/2006
‘———————————————————————————

‘DEFINICIÓN DE VARIABLES
‘———————————————————————————
Dim WshNet, WshShell, fso, Unidades_de_red, perfil

‘Creación del objeto red, el objetoy shell y el acceso a la estructura de ficheros

Set WshNet = Wscript.CreateObject(“WScript.Network”)
Set WshShell = WScript.CreateObject(“WScript.Shell”)
Set fso = WScript.CreateObject(“Scripting.FileSystemObject”)

‘Asignación de las unidades de red a una matriz
Set unidades_de_red = WshNet.EnumNetworkDrives

‘FUNCIONES
‘———————————————————————————
Function Nueva_Unidad(unidad,ruta, usuario, password)
Dim num
num = unidad & “:”
On Error Resume Next
WshNet.MapNetworkDrive num , ruta, False, usuario, password
Nueva_Unidad = Err.Number = 0
End Function

Function EnumerarUnidades
Set unidades_de_red = WshNet.EnumNetworkDrives
If unidades_de_red.count = 0 then
msgbox “No hay Unidades de red conectadas.”, vbInformation + vbOkOnly
Else
strMsg = “Conexiones actuales a unidades de red: ” & chr(13)
For i = 0 To unidades_de_red.Count – 1 Step 2
strMsg = strMsg & chr(13) & unidades_de_red(i) & Chr(9) & Unidades_de_red(i + 1)
Next
MsgBox strMsg, vbInformation + vbOkOnly
End If
End Function

‘INICIO
‘———————————————————————————

Set unidades_de_red = WshNet.EnumNetworkDrives

‘Borrar todas las unidad de red, en caso de que el usuario así lo quiera
If unidades_de_red.count > 0 then
borrar = msgbox(“¿Borramos todas las Unidades de red?”, vbQuestion+vbYesNo,”Redes”)
If borrar = vbYes then
For n_prueba = 26 To 5 Step -1
num = chr(n_prueba + 64) & “:”
On Error Resume Next
WshNet.RemoveNetworkDrive num , True
Next
End if
End if

perfil = InputBox(“Introduzca el perfil al que se desea conectar:”, “Unidades de Red – Perfil”, “Oficina”)

Select Case true
Case UCase(perfil) = “CASA”
Nueva_Unidad “D”, “\\192.168.0.1\DATOS”, NULL, NULL
Case UCase(perfil) = “OFICINA”
Nueva_Unidad “D”, “\\servidor\Documentos”, “administrador”, “1234″
Nueva_Unidad “S”, “\\servidor\Software”, “administrador”, “1234″
Nueva_Unidad “U”, “\\servidor\Usuarios”, “administrador”, “1234″
Case UCase(perfil) = “CLIENTE1″
Nueva_Unidad “P”, “\\220.10.60.8\Excels”, “usuario”, “contraseña”
End Select

‘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()[/vb]

Descargar: Unidades de Red.vbs

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