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

13

Je voudrais un écran de veille / script 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 \ drive1

J'ai également besoin d'utiliser un nom d'utilisateur / mot de passe pour me connecter à ce chemin.

FernandoSBS
la source

Réponses:

15

Vous pouvez utiliser la existcommande 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 (c'est-à-dire que votre utilisateur Windows actuel n'a pas accès à ce partage), ajoutez /user:

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

S'il y a une chance que le partage existe déjà et que vous souhaitez le supprimer s'il n'est plus disponible, ajoutez une elseclause:

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 /usersi vous en avez besoin.

Vous pouvez lier tout cela ensemble dans un fichier de commandes similaire au suivant:

@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
la source
ok je suis juste en train de coller cela dans le bloc-notes et d'enregistrer au format .vbs, mais lorsque j'exécute une tâche, cela donne une erreur Visual Basic?
FernandoSBS
1
Cette commande est une commande batch - elle devrait fonctionner à partir de n'importe quel fichier batch standard.
Geoff
C: \ Windows> s'il existe \\ 192.168.1.1 \ volume1 (net use y: \\ 192.168.1.1 \ volume1) e lse (net use / delete y:) La connexion réseau est introuvable. Plus d'aide est disponible en tapant NET HELPMSG 2250.
FernandoSBS
Je vais ajouter une modification ...
Geoff
Je suis désolé? (5 caractères)
FernandoSBS
6

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}
Austin T français
la source
ok je suis juste en train de coller cela dans le bloc-notes et d'enregistrer au format .vbs, mais lorsque j'exécute une tâche, cela donne une erreur Visual Basic?
FernandoSBS
1
Enregistrez-le en tant que .ps1 et exécutez-le à partir de Powershell.
Austin T French
Je ne connais pas PowerShell, comment puis-je l'automatiser dans le Planificateur de tâches?
FernandoSBS
Vous devriez vraiment diviser les 2 questions. Ceci est un site d'AQ. Aussi, google si vous ne l'avez pas déjà fait: google.com/…
Austin T French
ok j'ai compris. Quel est le bonus de l'utilisation de PowerShell?
FernandoSBS
0

Il est plus simple d'essayer de le mapper en utilisant l'explorateur de fichiers Windows ou en utilisant la commande net use. Soit ça marche, soit ça ne marche pas.

mdpc
la source
S'il est disponible, je veux être automatiquement connecté lorsque je me connecte / économiseur d'écran, sinon, je veux qu'il soit supprimé des lecteurs mappés. Donc ce que vous avez suggéré n'est pas une option.
FernandoSBS
Je ne comprends pas, si vous émettez une utilisation nette, si la commande réussit, elle sera connectée. Si la commande échoue, elle est supprimée des lecteurs mappés. Cela me semble simple.
mdpc
0

Ceci 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\volume1comme suggéré pour vérifier si le chemin réseau est disponible et ((New-Object System.IO.DriveInfo("Y:")).DriveType -ne "NoRootDirectory")pour vérifier si la lettre de lecteur existe.

FernandoSBS
la source