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 :

Problème avec mon script


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2008
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 42
    Par défaut MAPPAGE RESEAU:Problème avec mon script
    Bonjour,

    Le script suivant cherche les lecteurs à mapper selon mon OU et mappe les lecteurs à l'ouverture de session

    Donc avec mon script
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    Dim WshShell
    Dim objNet
    Dim objRootDSE
    Dim Tab
    Dim DN
    Dim i
    Dim strComputer
    DN = ""
    Set WshShell = WScript.CreateObject("WScript.Shell")
    Set objNet = WScript.CreateObject("WScript.Network")' create network object for vars
    Set objRootDSE = GetObject("LDAP://rootDSE")' bind to the rootDSE for portability
    strADsConfPath = "LDAP://" & objRootDSE.Get("configurationNamingContext")' bind to configuration to get Domain Controllers later
    strRootDSE = objRootDSE.Get("defaultNamingContext")' bind to the defaultContext for portability
    strUserName = UCase(objNet.UserName)' pull user name from environment variable
    Tab =  Split(GetDNUser(strUserName,"person"),",")
     
    For i=1 to UBound(Tab)
     If i = Ubound(Tab) Then
     
     DN = DN + Tab(i)
     Else
     DN = DN + Tab(i) + ","
     End If
    Next
    'MsgBox DN
    Const ADS_SCOPE_SUBTREE = 2
    Set objConnection = CreateObject("ADODB.Connection")
    Set objCommand =   CreateObject("ADODB.Command")
    objConnection.Provider = "ADsDSOObject"
    objConnection.Open "Active Directory Provider"
    Set objCommand.ActiveConnection = objConnection
    objCommand.CommandText = "Select Name, unCName, ManagedBy from " _
        & "'LDAP://"&DN&"' where objectClass='volume'"
    objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE 
    Set objRecordSet = objCommand.Execute
    objRecordSet.MoveFirst
    Do Until objRecordSet.EOF
        'Wscript.Echo "Share Name: " & objRecordSet.Fields("Name").Value
        msgbox objRecordSet.Fields("Name").Value
        msgbox objRecordSet.Fields("uNCName").Value
     
    Dim oNet 
    Set oNet = CreateObject("Wscript.Network") 
    oNet.MapNetworkDrive objRecordSet.Fields("Name").Value, objRecordSet.Fields("uNCName").Value
    objRecordSet.MoveNext
     
    Loop
     
    Function GetDNUser(param1,param2)
      Set objDSE = GetObject("LDAP://rootDSE")
      ON ERROR RESUME NEXT
      Set objConnection = CreateObject("ADODB.Connection")
      objConnection.Open "Provider=ADsDSOObject;"
      Set objCommand = CreateObject("ADODB.Command")
      objCommand.ActiveConnection = objConnection
      objCommand.CommandText = "SELECT distinguishedName, Sn " & "FROM 'LDAP://" & objDSE.Get("defaultNamingContext") & "' " & "WHERE objectCategory='" & param2 & "' AND sAMAccountName='" & param1 & "' " & "ORDER BY sAMAccountName"
      Set objRecordSet = objCommand.Execute
      GetDNUser = objRecordSet.Fields("distinguishedName")
      objConnection.Close
      if err.number <> 0 then
        msgbox "ERREUR: le nom renseigné n'existe pas dans l'AD.",16,Wscript.ScriptName & " " & version
        ERR.CLEAR
        wscript.quit
      end if
    End Function
    MsgBox "Mappage effectué"
    j'ai mes lecteurs qui sont bien mappé mais mon soucis c'est que j'ai ce message qui arrive quand je me reloge

    ( windows script host):
    Script: \\chemin de mon script
    Line:36
    Char:1
    Error: Either BOF or EOF is true, or the current record has been deleted.request operation requires a current record.
    Code: 800A0BCD
    Source: ADODB.Recordest

    Je suis nulle en vbscript, ce n'est pas moi qui l'ai fait mais on m'a dit que je peux oté les msgbox j'en ai oté et depuis j'ai ce message à l'ouverture de session.

    ( windows script host):
    Script: \\chemin de mon script
    Line: 41
    Char:1
    Error: the local device name is already in use
    Code: 80070055
    Source: WSHNetwork.MapNetworkDrive

    et voici le nouveau script qui me donne le message d'erreur ci dessus:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    Dim WshShell
    Dim objNet
    Dim objRootDSE
    Dim Tab
    Dim DN
    Dim i
    Dim strComputer
    DN = ""
    Set WshShell = WScript.CreateObject("WScript.Shell")
    Set objNet = WScript.CreateObject("WScript.Network")' create network object for vars
    Set objRootDSE = GetObject("LDAP://rootDSE")' bind to the rootDSE for portability
    strADsConfPath = "LDAP://" & objRootDSE.Get("configurationNamingContext")' bind to configuration to get Domain Controllers later
    strRootDSE = objRootDSE.Get("defaultNamingContext")' bind to the defaultContext for portability
    strUserName = UCase(objNet.UserName)' pull user name from environment variable
    Tab =  Split(GetDNUser(strUserName,"person"),",")
     
    For i=1 to UBound(Tab)
     If i = Ubound(Tab) Then
     
     DN = DN + Tab(i)
     Else
     DN = DN + Tab(i) + ","
     End If
    Next
     
    Const ADS_SCOPE_SUBTREE = 2
    Set objConnection = CreateObject("ADODB.Connection")
    Set objCommand =   CreateObject("ADODB.Command")
    objConnection.Provider = "ADsDSOObject"
    objConnection.Open "Active Directory Provider"
    Set objCommand.ActiveConnection = objConnection
    objCommand.CommandText = "Select Name, unCName, ManagedBy from " _
        & "'LDAP://"&DN&"' where objectClass='volume'"
    objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE 
    Set objRecordSet = objCommand.Execute
    objRecordSet.MoveFirst
    Do Until objRecordSet.EOF
     
    Dim oNet 
    Set oNet = CreateObject("Wscript.Network") 
    oNet.MapNetworkDrive objRecordSet.Fields("Name").Value, objRecordSet.Fields("uNCName").Value
    objRecordSet.MoveNext
     
    Loop
     
    Function GetDNUser(param1,param2)
      Set objDSE = GetObject("LDAP://rootDSE")
      ON ERROR RESUME NEXT
      Set objConnection = CreateObject("ADODB.Connection")
      objConnection.Open "Provider=ADsDSOObject;"
      Set objCommand = CreateObject("ADODB.Command")
      objCommand.ActiveConnection = objConnection
      objCommand.CommandText = "SELECT distinguishedName, Sn " & "FROM 'LDAP://" & objDSE.Get("defaultNamingContext") & "' " & "WHERE objectCategory='" & param2 & "' AND sAMAccountName='" & param1 & "' " & "ORDER BY sAMAccountName"
      Set objRecordSet = objCommand.Execute
      GetDNUser = objRecordSet.Fields("distinguishedName")
      objConnection.Close
      if err.number <> 0 then
        msgbox "ERREUR: le nom renseigné n'existe pas dans l'AD.",16,Wscript.ScriptName & " " & version
        ERR.CLEAR
        wscript.quit
      end if
    End Function
    Je souhaiterai enlever toutes les msgbox, puisque le script fonctionne tous mes lecteurs sont mappés et j'y ai accès correctement

  2. #2
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Je souhaiterai enlever toutes les msgbox, puisque le script fonctionne tous mes lecteurs sont mappés et j'y ai accès correctement
    Faux !!!
    Tu as des erreurs donc ton script ne fontionne pas. Ce n'est pas parce qu'il fait une partie du traitement qu'il fonctinne.

    Ton erreur n'as rien à voir avec la présence de msgbox, mais avec ceux-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    objRecordSet.Fields("Name").Value
    Cela plante à un moment donnée dans la boucle. Il faudrait rajouter des éléments informatifs dans la boucle pour déboguer, mais j'ai l'impression que tu n'as pas fait ce script et qu'il te sera difficille de le déboguer.

    As tu des utilisateurs en double dans ton AD ?

  3. #3
    Membre averti
    Inscrit en
    Décembre 2008
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 42
    Par défaut
    Citation Envoyé par ced600 Voir le message
    Faux !!!
    Tu as des erreurs donc ton script ne fontionne pas. Ce n'est pas parce qu'il fait une partie du traitement qu'il fonctinne.

    Ton erreur n'as rien à voir avec la présence de msgbox, mais avec ceux-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    objRecordSet.Fields("Name").Value
    Cela plante à un moment donnée dans la boucle. Il faudrait rajouter des éléments informatifs dans la boucle pour déboguer, mais j'ai l'impression que tu n'as pas fait ce script et qu'il te sera difficille de le déboguer.

    As tu des utilisateurs en double dans ton AD ?
    Oui je l ai dit c'est pas moi qui l'ai fait, non il a pas d'utilisateurs en double. Je m'y connais vraiment mais vraiment pas, j'ai fait un recherche j'ai trouvé ce script qui me convenait parfaitement. Parcontre j'ai des GPO en double elles font exactement la meme chose mais elles ont des noms différents.

    (Merci de t'etre penché sur mon problème)

  4. #4
    Membre averti
    Inscrit en
    Décembre 2008
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 42
    Par défaut
    Citation Envoyé par whyata Voir le message
    Oui je l ai dit c'est pas moi qui l'ai fait, non il a pas d'utilisateurs en double. Je m'y connais vraiment mais vraiment pas, j'ai fait un recherche j'ai trouvé ce script qui me convenait parfaitement. Parcontre j'ai des GPO en double elles font exactement la meme chose mais elles ont des noms différents.

    (Merci de t'etre penché sur mon problème)
    j'ai regardé sur ce site "S'il vous plait Monsieur script' là syntaxe est donne je ne comprends pas pourquoi en lançant mon script avec VbsEdit, il se bloque à la ligne:

    objRecordSet.MoveFirst

    en me mettant ce message d'erreur

    Script: \\chemin de mon script
    Line:36
    Char:1
    Error: Either BOF or EOF is true, or the current record has been deleted.request operation requires a current record.
    Code: 800A0BCD
    Source: ADODB.Recordest

  5. #5
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Je n'ai pas l'habitude de faire de de l'ADODB, mais il semble que soit tu tentes de te déplacer en dehors de la plage de ton record set, soit tu tentes de te déplacer sur une ligne du record set qui vient d'être supprimer.
    Peut être que ta commande est incorrect :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    objCommand.CommandText = "Select Name, unCName, ManagedBy from 'LDAP://" & DN & "' where objectClass='volume'"

  6. #6
    Membre averti
    Inscrit en
    Décembre 2008
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 42
    Par défaut
    Citation Envoyé par ced600 Voir le message
    Je n'ai pas l'habitude de faire de de l'ADODB, mais il semble que soit tu tentes de te déplacer en dehors de la plage de ton record set, soit tu tentes de te déplacer sur une ligne du record set qui vient d'être supprimer.
    Peut être que ta commande est incorrect :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    objCommand.CommandText = "Select Name, unCName, ManagedBy from 'LDAP://" & DN & "' where objectClass='volume'"
    j'ai modifié un peu le script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    Dim WshShell
    Dim objNet
    Dim objRootDSE
    Dim Tab
    Dim DN
    Dim i
    Dim strComputer
    DN = ""
    Set WshShell = WScript.CreateObject("WScript.Shell")
    Set objNet = WScript.CreateObject("WScript.Network")' create network object for vars
    Set objRootDSE = GetObject("LDAP://rootDSE")' bind to the rootDSE for portability
    strADsConfPath = "LDAP://" & objRootDSE.Get("configurationNamingContext")' bind to configuration to get Domain Controllers later
    strRootDSE = objRootDSE.Get("defaultNamingContext")' bind to the defaultContext for portability
    strUserName = UCase(objNet.UserName)' pull user name from environment variable
    Tab =  Split(GetDNUser(strUserName,"person"),",")
     
    For i=1 to UBound(Tab)
     If i = Ubound(Tab) Then
     
     DN = DN + Tab(i)
     Else
     DN = DN + Tab(i) + ","
     End If
    Next
     
    Const ADS_SCOPE_SUBTREE = 2
     
    Set objConnection = CreateObject("ADODB.Connection")
    Set objCommand =   CreateObject("ADODB.Command")
    objConnection.Provider = "ADsDSOObject"
    objConnection.Open "Active Directory Provider"
    Set objCommand.ActiveConnection = objConnection
    objCommand.CommandText = "Select Name, unCName, ManagedBy from " _
        & "'LDAP://"&DN&"' where objectClass='volume'"
    objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE 
    Set objRecordSet = objCommand.Execute
     
    Do Until objRecordSet.EOF
    'Wscript.Echo "Share Name: " & objRecordSet.Fields("Name").Value
    objRecordSet.MoveFirst
     
     
     
    Dim oNet 
    Set oNet = CreateObject("Wscript.Network") 
    oNet.MapNetworkDrive objRecordSet.Fields("Name").Value, objRecordSet.Fields("uNCName").Value
    objRecordSet.MoveNext
     
     On error resume next
    oNet.RemoveNetworkDrive objRecordSet.Fields("Name").Value
    On error goto 0
    Set oNet = nothing 
     
    On error resume next
    oNet.RemoveNetworkDrive objRecordSet.Fields("Name").Value
    On error goto 0
    Set oNet = nothing 
     
    Loop
     
    Function GetDNUser(param1,param2)
      Set objDSE = GetObject("LDAP://rootDSE")
      ON ERROR RESUME NEXT
      Set objConnection = CreateObject("ADODB.Connection")
      objConnection.Open "Provider=ADsDSOObject;"
      Set objCommand = CreateObject("ADODB.Command")
      objCommand.ActiveConnection = objConnection
      objCommand.CommandText = "SELECT distinguishedName, Sn " & "FROM 'LDAP://" & objDSE.Get("defaultNamingContext") & "' " & "WHERE objectCategory='" & param2 & "' AND sAMAccountName='" & param1 & "' " & "ORDER BY sAMAccountName"
      Set objRecordSet = objCommand.Execute
      GetDNUser = objRecordSet.Fields("distinguishedName")
      objConnection.Close
      if err.number <> 0 then
        msgbox "ERREUR: le nom renseigné n'existe pas dans l'AD.",16,Wscript.ScriptName & " " & version
        ERR.CLEAR
        wscript.quit
      end if
    End Function
    MsgBox "Mappage effectué"
    et avec VbsEdit j'ai plus de message d'erreur, parcontre quand je vais sur ma session test, j'ai ce message qui apparait

    ( windows script host):
    Script: \\chemin de mon script
    Line: 46
    Char:1
    Error: the local device name is already in use
    Code: 80070055
    Source: WSHNetwork.MapNetworkDrive

    et ensuite que le Mappage effectué donc je comprends pas

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP-JS] problème avec mon script de connexion
    Par agencep dans le forum Langage
    Réponses: 5
    Dernier message: 31/01/2008, 17h08
  2. [MySQL] Divers petits problèmes avec mon script
    Par fourniey dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 26/12/2007, 16h20
  3. Problème avec mon script shell case in esac
    Par Olivier Regnier dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 28/06/2007, 22h54
  4. Problème avec mon script
    Par Toinou0123 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 30/09/2006, 18h37
  5. [Mail] Problème avec mon script d'envoi de mail
    Par leroivert dans le forum Langage
    Réponses: 18
    Dernier message: 02/12/2005, 00h26

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