27/09Unidades de Red
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.
-
‘ — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — -
-
‘ 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()
Descargar: Unidades de Red.vbs
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
responder »Cristian Sanchez
25/04/08 @ 21:13
comentarios recientes
@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.
responder »hanok
28/04/08 @ 15:38
comentarios recientes
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!!!
responder »drotha2
5/06/08 @ 12:03
comentarios recientes
@drotha2: Hola, estos son los pasos que tienes que seguir para preparar el script:
responder »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
hanok
5/06/08 @ 12:11
comentarios recientes
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
responder »Set WshNet = Nothing
Set WshShell = Nothing
Set fso = Nothing
Set Unidades_de_red = Nothing WScript.Quit()
drotha2
5/06/08 @ 12:57
comentarios recientes
Me falto una cosa en la linea Nueva_Unidad “j”, “\192.168.15.144\compartida”, NULL, NULL
responder »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!!
drotha2
5/06/08 @ 13:34
comentarios recientes
@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.
responder »hanok
5/06/08 @ 13:39
comentarios recientes
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.
responder »drotha2
5/06/08 @ 14:05
comentarios recientes
@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.
responder »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.
hanok
5/06/08 @ 14:18
comentarios recientes