Script: cómo verificar si hay una ruta de red disponible y luego asignarla

13

Me gustaría un script de protector de pantalla / inicio de sesión que verifique si hay una ruta de red disponible y luego la asigne a una unidad. Si no está disponible, se desconecta / no conecta.

La ruta de red es \ 192.168.1.1 \ drive1

También necesito usar nombre de usuario / contraseña para conectarme a esa ruta.

FernandoSBS
fuente

Respuestas:

15

Puede usar el existcomando para verificar si la ruta es válida:

if exist \\192.168.1.1\drive1 net use s: \\192.168.1.1\drive1

Si necesita proporcionar credenciales (es decir, su usuario actual de Windows no tiene acceso a ese recurso compartido), agregue /user:

if exist \\192.168.1.1\drive1 net use s: \\192.168.1.1\drive1 /user:myDomain\myUser myPassword

Si existe la posibilidad de que el recurso compartido ya exista y desea eliminarlo si ya no está disponible, agregue una elsecláusula:

if exist \\192.168.1.1\drive1 (net use s: \\192.168.1.1\drive1) else (net use /delete s:)

Y una vez más, agregue el /usersi lo necesita.

Puede vincular todo esto en un archivo por lotes similar al siguiente:

@echo off
if exist \\192.168.1.1\drive1 (set shareExists=1) else (set shareExists=0)
if exist y:\ (set driveExists=1) else (set driveExists=0)
if %shareExists%==1 if not %driveExists%==1 (net use y: \\192.168.1.1\drive1)
if %shareExists%==0 if %driveExists%==1 (net use /delete y:)
set driveExists=
set shareExists=
Geoff
fuente
ok, solo estoy pegando eso en el bloc de notas y guardando como .vbs, pero cuando ejecuto una tarea, ¿aparece el error de Visual Basic?
FernandoSBS
1
Ese comando es un comando por lotes: debería funcionar desde cualquier archivo por lotes estándar.
Geoff
C: \ Windows> si existe \\ 192.168.1.1 \ volume1 (uso neto y: \\ 192.168.1.1 \ volume1) e lse (uso neto / eliminar y:) No se pudo encontrar la conexión de red. Hay más ayuda disponible escribiendo NET HELPMSG 2250.
FernandoSBS
Agregaré una edición ...
Geoff
¿Lo siento? (5 caracteres)
FernandoSBS
6

Powershell facilitaría esto:

If(Test-Path \\192.168.1.1\Drive1)
  {
    net use M: \\192.168.1.1\Drive1 /user:Domain\UserName Password
  }
else {net use M: /delete > nul}
Austin T French
fuente
ok, solo estoy pegando eso en el bloc de notas y guardando como .vbs, pero cuando ejecuto una tarea, ¿aparece el error de Visual Basic?
FernandoSBS
1
Guárdelo como .ps1 y ejecútelo desde Powershell.
Austin T French
No estoy familiarizado con PowerShell, ¿cómo puedo automatizarlo en el Programador de tareas?
FernandoSBS
Realmente deberías dividir las 2 preguntas. Este es un sitio de control de calidad. Además, búscalo en Google si aún no lo has hecho: google.com/…
Austin T French
Ok lo tengo. ¿Cuál es la ventaja de usar powershell?
FernandoSBS
0

Es más simple tratar de mapearlo usando el Explorador de archivos de Windows o usando el comando net use. O funciona o no funciona.

mdpc
fuente
Si está disponible, quiero conectarme automáticamente cuando inicio sesión / protector de pantalla, si no es así, quiero que se elimine de las unidades asignadas. Entonces, lo que sugirió no es una opción.
FernandoSBS
No entiendo, si emite un uso neto, si el comando tiene éxito, se conectará. Si el comando falla, se elimina de las unidades asignadas. Me parece simple.
mdpc
0

Este es el código final:

function run{
net use
If(Test-Path \\192.168.1.1\volume1)
  {
    if (((New-Object System.IO.DriveInfo("Y:")).DriveType -ne "NoRootDirectory")) 
        {
            "already mounted and accessible"
        }
    else
        {
            net use Y: \\192.168.1.1\volume1
            "mounting"
        }
  }
else { 
    if (((New-Object System.IO.DriveInfo("Y:")).DriveType -ne "NoRootDirectory"))
        {
            net use Y: /delete
            "removing"
        }
}
exit 4
}

run 

Lo uso Test-Path \\192.168.1.1\volume1como se sugiere para verificar si la ruta de red está disponible y ((New-Object System.IO.DriveInfo("Y:")).DriveType -ne "NoRootDirectory")para verificar si existe la letra de la unidad.

FernandoSBS
fuente