web-dev-qa-db-fra.com

Script - Comment vérifier si un chemin réseau est disponible, puis le mappeur

Je voudrais un script d'économiseur d'écran/d'ouverture de session qui vérifie si un chemin d'accès réseau est disponible, puis le mapper à une unité. S'il n'est pas disponible, il se déconnecte/ne se connecte pas.

Le chemin réseau est\192.168.1.1\lecteur1

De plus, je dois utiliser nom d'utilisateur/mot de passe pour me connecter à ce chemin.

13
FernandoSBS

Vous pouvez utiliser la commande exist pour vérifier si le chemin est valide:

if exist \\192.168.1.1\drive1 Net Use s: \\192.168.1.1\drive1

Si vous devez fournir des informations d'identification (votre utilisateur Windows actuel n'a pas accès à ce partage, par exemple), ajoutez /user:

if exist \\192.168.1.1\drive1 Net Use s: \\192.168.1.1\drive1 /user:myDomain\myUser myPassword

S'il existe un risque que le partage existe déjà et que vous souhaitiez le supprimer s'il n'est plus disponible, ajoutez une clause else:

if exist \\192.168.1.1\drive1 (Net Use s: \\192.168.1.1\drive1) else (Net Use /delete s:)

Et encore une fois, ajoutez le /user si vous en avez besoin.

Vous pouvez associer tout cela dans un fichier de commandes semblable à celui-ci:

@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=
14
Geoff

Powershell rendrait cela facile:

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}
6
Austin T French

C'est le code 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 

J'utilise Test-Path \\192.168.1.1\volume1 comme suggéré pour vérifier si le chemin du réseau est disponible et ((New-Object System.IO.DriveInfo("Y:")).DriveType -ne "NoRootDirectory") pour vérifier si la lettre de lecteur existe.

0
FernandoSBS

Il est simplement plus simple d'essayer de le mapper à l'aide de l'explorateur de fichiers Windows ou de la commande Net Use. Ou ça marche ou ça ne marche pas.

0
mdpc