Se connecter à un répertoire réseau pour la première fois : login nécessaire
v.massip
Messages postés48Date d'inscriptionmardi 7 octobre 2003StatutMembreDernière intervention 9 décembre 2008
-
4 déc. 2008 à 16:25
v.massip
Messages postés48Date d'inscriptionmardi 7 octobre 2003StatutMembreDernière intervention 9 décembre 2008
-
9 déc. 2008 à 11:14
Bonjour à tous.
Voici mon problème :
J'utilise QuickTest Pro (donc du VBS) et je dois, dans le cadre d'un test, récupérer un fichier que l'application testée a généré.
QTP s'exécute sur une machine du réseau ayant son duo User/Mdp perso et le fichier généré se trouve sur un serveur ayant également son duo User/Mdp d'accès.
Mon soucis se trouve au niveau de la première connexion au répertoire dans lequel se trouve le fichier à récupérer.
En effet, manuellement, j'ai 2 possibilités pour accéder au répertoire final :
1) je crée une connexion au disque réseau dont un raccourci se trouvera sur mon poste de travail ;
2) j'indique le nom du serveur dans la commande 'Exécuter' de Windows et je navigue ensuite dans les répertoires.
Pour ces 2 méthodes, lors de la première connexion, une fenêtre de login apparaît.
Lors de l'automatisation du test qui doit récupérer le fichier, j'utilise une variante de FSO (en fait une bidouille avec Excel car j'ai des besoins très spécifiques au niveau de la recherche de fichier et de la performance), mais le schema reste le même. Donc, lors de la première connexion (où lors de la première exécution du test) une fenêtre de login s'affiche et cela fait planter mon test...
J'ai eu beau chercher, je n'ai pas trouvé d'objets, de fonctions, de méthodes, ni même d'exemples permettant de créer directement une connexion réseau avec login ou de se connecter directement à un répertoire réseau avec login...
J'ai bien trouvé l'objet WScript.WshNetwork, mais cela permet uniquement de créer ou de supprimer une connexion réseau avec raccourci (ce que j'aimerai finalement éviter...)...
Voilà, si vous aviez une réponse à ce problème ou même une approche différente de la mienne, cela m'aiderait énormément.
Merci d'avance et à bientôt !
A voir également:
Se connecter à un répertoire réseau pour la première fois : login nécessaire
v.massip
Messages postés48Date d'inscriptionmardi 7 octobre 2003StatutMembreDernière intervention 9 décembre 20082 8 déc. 2008 à 17:14
Bonjour et merci pour la rapidité de ta réponse !
J'ai regardé wbem et wmi et j'ai réussi à coder ceci :
'Objet FSO
Set objFSO = CreateObject("Scripting.FileSystemObject")
'Paramètre de sécurité
Const WbemAuthenticationLevelPktPrivacy = 6
'Paramètres de connexion
strUser = "USER"
strPassword = "PASSWORD"
strNamespace = "root\cimv2"
strComputer = "COMPUTER"
'Création de la connexion
Set objWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objWMIService = objwbemLocator.ConnectServer(strComputer, strNamespace, strUser, strPassword)
objWMIService.Security_.authenticationLevel = WbemAuthenticationLevelPktPrivacy
'Définition des variables
Dim colFiles, objFile, tmpF
'Récupération des fichiers souhaités sur le serveur
Set colFiles = objWMIService.ExecQuery("Select * " & _
"From CIM_DataFile " & _
"Where Drive = 'D:' " & _
"And Path = '\\REP1\\REP2\\' " & _
"And Filename Like '%FILTRE1%FILTRE2%'" & _
"And Extension = 'xml'")
'Récupération de la liste des fichiers et affichage
tmpF = ""
For Each objFile in colFiles
tmpF = tmpF & objFile.Filename & "." & objFile.Extension & " : " & objFile.Name & vbcr
Next
msgbox tmpF
'Répertoire local de téléchargement
Dim myfolder
myfolder = "D:\Documents and Settings\USER\Bureau\MonDossierTest"
'Copie des fichiers
Const OverwriteExisting = TRUE
For Each objFile in colFiles
objFSO.Copy myfolder & objFile.Filename & "." & objFile.Extension
Next
J'arrive donc bien à récupérer rapidement la liste des fichiers qui m'intéresse sur le serveur distant.
Mon soucis est que je n'arrive toujours pas à faire la copie de ces fichiers en local sur la machine exécutant le script...
J'ai l'impression que le FSO ne détecte toujours pas la connexion au serveur. Cela marche seulement lorsque je crée la première connexion manuellement (création d'un jeton de connexion ?)...
Aurais-tu d'autres idées pour me dépanner steuplé ?
Y-a-t-il par exemple des méthodes permettant la copie via wmi ou wbem ? Je n'en ai par trouvé mais on ne sait jamais...
v.massip
Messages postés48Date d'inscriptionmardi 7 octobre 2003StatutMembreDernière intervention 9 décembre 20082 8 déc. 2008 à 17:22
Bonjour et merci également pour ta réponse !
J'ai recherché des informations sur LDAP, mais après de multiples essais, je n'ai pas réussi à le mettre en pratique. En fait, je ne connais pas l'architecture réseau me permettant de définir les paramètres de connexion au réseau... (forêt, arbre, ...) Y aurait-il un moyen de le faire facilement ? Ou suis-je en train de partir complètement de travers ?
En revanche, pour WNetAddConnection2, je ne vois pas comment l'intégrer dans mon environnement de développement... Est-ce possible de l'intégrer dans du VBS ?
Merci encore pour ton aide !
Vous n’avez pas trouvé la réponse que vous recherchez ?
v.massip
Messages postés48Date d'inscriptionmardi 7 octobre 2003StatutMembreDernière intervention 9 décembre 20082 8 déc. 2008 à 18:16
Autant pour moi, j'avais bien utilisé l'objet FSO pour faire le CopyFile -->
objFSO.CopyFile "\" & strComputer & "\d$\REP1\REP2\REP3", myfolder
En revanche cela me donne une 'General Runtime Error'... Je pense que cela est dû au fait que la connexion au serveur créée n'est pas reconnue par le FSO (je me connecte en administrateur, je dois donc avoir les droits de copie...).
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 201827 8 déc. 2008 à 19:05
Re,
non testé
objFile.CopyFile objFile.Path & objFile.FileName, MyFolder & objFile.FileName, True
Pour éviter
myfolder = "D:\Documents and Settings\USER\Bureau\MonDossierTest"
voir du côté de l'objet Shell:
Set objShell = CreateObject("WScript.Shell")
strDesktop = objShell.SpecialFolders("Desktop")
MsgBox strDesktop & "\MonDossierTest" & objFile.Name
v.massip
Messages postés48Date d'inscriptionmardi 7 octobre 2003StatutMembreDernière intervention 9 décembre 20082 9 déc. 2008 à 11:14
Bonjour et merci !
'CopyFile' est une méthode du FSO et non de CIM_DataFile qui utilise 'Copy' ou 'CopyEx' (en revanche, l'écrasement du fichier de destination est impossible).
En fait, le FSO ne fait pas de copie via réseau. En revanche, le fait de créer un lecteur réseau le lui permet :
'Connexion du lecteur réseau
Set WSHNetwork = CreateObject("WScript.Network")
WSHNetwork.MapNetworkDrive"z:","\\COMPUTER\d$",True, strUser, strPassword
'Déconnexion du lecteur réseau
WSHNetwork.RemoveNetworkDrive"z:", true
Cela m'arrange moyennement mais si je ne trouve que cette solution, ce sera celle-là...
Donc j'essaie toujours la copie via CIM_DataFile !
Voici mon code :
'Constante de sécurité de connexion
Const WbemAuthenticationLevelPktPrivacy = 6
'Définition des paramètres de connexion
strUser = "USER"
strPassword = "PASSWORD"
strNamespace = "root\cimv2"
strComputer = "COMPUTER"
'Définition de la connexion au serveur
Set objWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objWMIService = objwbemLocator.ConnectServer(strComputer, strNamespace, strUser, strPassword)
objWMIService.Security_.authenticationLevel = WbemAuthenticationLevelPktPrivacy
'Définition de variables
Dim colFiles, objFile, myFile
'Définition du répertoire de destination de la copie
Set objShell = CreateObject("WScript.Shell")
myFolder = objShell.SpecialFolders("Desktop") & "\MonDossierTest"
'Copie locale de chaque fichier trouvé sur le répertoire de destination
ForEach objFile in colFiles
myFile = myFolder & objFile.Filename & "." & objFile.Extension
msgbox objFile.Copy(myFile)
Next
Le problème, c'est que le Copy semble bien se déclencher mais me renvoie la valeur '9', ce qui signifie 'Invalid object' selon la doc msdn.
J'ai essayé également le CopyEx mais la même valeur est retournée...