Script - Como verificar se um caminho de rede está disponível e mapeá-lo

12

Eu gostaria de um script de proteção de tela / logon que verifique se um caminho de rede está disponível e, em seguida, mapeie-o para uma unidade. Se não estiver disponível, desconecta / não conecta.

O caminho da rede é \ 192.168.1.1 \ drive1

Também preciso usar nome de usuário / senha para se conectar a esse caminho.

    
por FernandoSBS 21.05.2013 / 20:53

4 respostas

13

Você pode usar o comando exist para verificar se o caminho é válido:

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

Se você precisar fornecer credenciais (ou seja, o usuário atual do Windows não tiver acesso a esse compartilhamento), adicione /user :

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

Se houver uma chance de o compartilhamento já existir e você desejar excluí-lo, se ele não estiver mais disponível, adicione uma cláusula else :

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

E mais uma vez, adicione o /user se você precisar dele.

Você pode juntar tudo isso em um arquivo em lote semelhante ao seguinte:

@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=
    
por 21.05.2013 / 21:58
6

Powershell facilitaria isso:

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}
    
por 21.05.2013 / 21:31
0

É mais simples tentar mapear usando o Windows File explorer ou usando o comando net use. Ou funciona ou não.

    
por 21.05.2013 / 20:55
0

Este é o 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 

Eu uso Test-Path \192.168.1.1\volume1 como sugerido para verificar se o caminho da rede está disponível e ((New-Object System.IO.DriveInfo("Y:")).DriveType -ne "NoRootDirectory") para verificar se a letra da unidade existe.

    
por 22.05.2013 / 03:22