IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

Compter les lecteurs réseau mapés


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Compter les lecteurs réseau mapés
    Bonjour à tous,

    Je tente de réaliser un script d'ouverture de session permettant de connecter les lecteurs réseau.
    Pour tout les utilisateurs, les lecteurs à maper sont les mêmes.

    En glanant des informations à gauche et à droite, le déroulement de mon script devra être le suivant :

    1) Je déconnecte tout les lecteurs
    2) Puis je connecte les lecteurs à mettre à disposition des utilisateurs.
    3) Je renomme le nom de partage .

    Actuellement, les étapes 2 et 3 fonctionnent.

    C'est l'étape 1 qui me pose soucis.
    Le code de déconnection étant le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    '* Début du code **
    Set WshNetwork = CreateObject("Wscript.Network")
    Set oDrives = WshNetwork.EnumNetworkDrives
     
    '...
     
    For i = 0 to oDrives.Count - 1 Step 2
    WshNetwork.RemoveNetworkDrive oDrives.Item(i), true, true
    Next
     
    '...
    '*** Fin du code ***
    Si j'ai bien compris, oDrives.count doit renvoyer le nombre de lecteurs réseaux mapés.
    Le constat que je fais est que la valeur renvoyée est parfois erronée.
    Lorsque je compare le nombre de lecteurs réseaux mapés listé par l'explorateur et la valeur renvoyé, soit c'est concordant, soit la valeur renvoyée est inférieur.

    D'autre part, lorsque les deux valeurs concordent, et que la déconnection se déroule, il me reste toujours un lecteur mapé. Ce qui, d'après le code ci-dessus, est normal.
    J'ai 5 lecteurs mapés => oDrives.count = 6, du coup je ne passe que 4 fois dans ma boucle.
    Ce qui m'étone, est que ce code n'est pas de moi, l'ayant trouvé sur le Net, sur ce forum y compris. Donc, si ce code n'était pas bon, j'aurais dû trouver des retours en ce sens.

    Pouvez-vous m'aider, SVP ?
    Dernière modification par ProgElecT ; 19/01/2011 à 17h39. Motif: Bienvenue sur DVP, pour le code c'est le bouton # en haut à droite de l'éditeur, NON FACULTATIF.

  2. #2
    Membre chevronné Avatar de pitchalov
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 340
    Par défaut
    Bonjour

    Pour commencer un peu de lecture sur la méthode EnumNetworkDrives sur le msdn de microsoft.

    En gros, cette méthode te retourne une collection d'items contenant des informations (par paire) sur les lecteurs réseau connectés (2 informations par lecteur).
    Première info : Le nom local du lecteur réseau
    2e info : Le chemin UNC correspondant.

    Exemple : oDrives.Item(0) --> "F:", oDrives.Item(1) --> "\\serveur\partage1", oDrives.Item(2) --> "G:", oDrives.Item(3) --> "\\serveur\partage2", etc.

    Si j'ai bien compris, oDrives.count doit renvoyer le nombre de lecteurs réseaux mapés.
    Donc, ce n'est pas le cas. oDrives.count te renvoie le nombre de tes lecteurs réseaux multiplié par 2. D'où le "Step 2" dans ta boucle qui récupère les infos de tes lecteurs réseau.

    J'ai 5 lecteurs mapés => oDrives.count = 6, du coup je ne passe que 4 fois dans ma boucle.
    Si oDrives.count = 6, tu ne passeras que 3 fois dans ta boucle, et ton script déconnectera les lecteurs correspondant à oDrives.Item(0), oDrives.Item(2) et oDrives.Item(4)

    Par contre c'est bizarre que le EnumNetworkDrives ne te renvoie que 3 lecteurs si tu en as 5 de connectés. Ce sont bien tous des lecteurs réseau ?

    Pour ma part, j'avais constaté que EnumNetworkDrives me renvoyait parfois plus de lecteurs connectés que j'en avais de présents dans le poste de travail, car il listait aussi les partages serveurs ouverts avec l'explorateur (avec un nom local vide).

    Pour voir un peu plus clair, commence par afficher ce que fait ton script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    For i = 0 to oDrives.Count - 1 Step 2
      ' Affichage des infos du lecteur à déconnecter :
      Wscript.Echo "Déconnection du lecteur n° " & (i+2)/2 & " : " & oDrives.Item(i) & " --> " & oDrives.Item(i+1)
      ' Déconnection
      WshNetwork.RemoveNetworkDrive oDrives.Item(i), true, true
      ' Test d'erreur
      If Error.Number <> 0 Then Wscript.Echo "Erreur n° " & Error.Number
    Next
    Tu trouveras peut-être les réponses à tes questions avec ça.

    En espérant t'aider.

Discussions similaires

  1. Changement de disque : récupérer les lecteurs réseau
    Par Christophe P. dans le forum Windows XP
    Réponses: 4
    Dernier message: 20/11/2013, 10h50
  2. Mapping lecteur réseau
    Par mucky dans le forum Réseau
    Réponses: 0
    Dernier message: 15/11/2010, 17h03
  3. mapping lecteur réseau
    Par faamugol dans le forum Windows XP
    Réponses: 2
    Dernier message: 02/06/2009, 17h37
  4. connexion automatique de tous les lecteurs réseau
    Par sam-sam dans le forum Windows
    Réponses: 4
    Dernier message: 04/05/2008, 15h57
  5. lister les lecteurs réseau
    Par A2rem dans le forum Framework .NET
    Réponses: 1
    Dernier message: 09/08/2007, 15h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo