Script de récupération de nom et d'ip

Nasbe

Habitué
Voilà un petit code qui permet de récupérer l'adresse ip et le nom d'utilisateur est de le placer dans un fichier texte.
Simplement j'aurai voulu apporter des modifications dessus.

1) Comment faire pour simplement récupérer le nom d'utilisateur et non le nom du PC, comme présenté ci-dessous, il récupère les deux.

2) Ce script peut seulement être exécuté en administrateur, comment faire pour que chaque utilisateur puisse l'éxécuter??

3) Si quelqu'un pouvait me le commenter en peu, ca serait cool.

4) Pour terminer il y a une ligne de code " strOutText = WshShell.SpecialFolders("Desktop") & "\AdresseIP.txt" qui va placer sur le bureau un fichier texte du nom de AdresseIP. Ce que j'aimerai faire, c'est éxécuter ce script au démarrage et le placer dans un dossier partagé. Pour que par la suite, je puisse récupérer l'ensemble des utilisateurs et leur adresse ip dans un seul fichier texte. Si quelqu'un aurait une piste, d'avance merci.


[cpp]strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")

Set colComputer = objWMIService.ExecQuery _
("Select * from Win32_ComputerSystem")
For Each objComputer in colComputer
msg = msg & objComputer.UserName & ","
Next


count = 1
For Each objItem in colItems
For Each strAddress in objItem.IPAddress

msg = msg &vbCrLf& strAddress & " , " & count
count = count +1

Next
Next

Set WshShell = WScript.Createobject("WScript.Shell")
strOutText = WshShell.SpecialFolders("Desktop") & "\AdresseIP.txt"
Set objFso = Createobject("Scripting.FileSystemObject")
Set objTxt = objFso_OpenTextFile(strOutText, 2, True)
objtxt.WriteLine msg
objtxt.Close
Wscript.Echo msg[/cpp]
 

zeb

Modérateur
Les réponses aux questions 1, 2 et 4 découleront justement de la question 3.

Or tu donnes l'impression de récupérer des bouts de code sans rien comprendre en nous demandant de réfléchir et de comprendre à ta place. Ce n'est pas du tout la philosophie de ce forum.

Au contraire, je te propose de faire l'exercice inverse : Essaie de tout comprendre, en t'aidant de l'aide de MS, de google, de ton cerveau, etc (A mettre dans l'ordre qui te conviendra). Ceci fait publie ce que toi tu en auras compris, ligne par ligne, mot par mot s'il le faut.

Les membres de ce forum se feront alors un plaisir de te contre-dire à chaque "inexactitude". Et s'il te reste des points obscurs, nous nous ferons un plaisir de te les éclaircir. Ta compréhension du sujet sera alors TOTALE ! :o
 

Nasbe

Habitué
Je me suis mal exprimé, le code je sais ce qu'il fait, je le comprends. J'aurai voulu des commentaires si quelqu'un apportait une modification.
 

zeb

Modérateur
tu donnes l'impression de ...
Tu as vu comme je suis prudent ;)

Alors commente-moi la ligne 26, par exemple, je répondrais alors à la question 4 ;)

Concernant le point 1, tu parles de nom de PC. Veux-tu dire "nom de domaine" ? Je n'ai pas de PCs en Groupe de travail pour vérifier, donne un exemple.

Si tu cherches à séparer NOM_PC\NOM_UTILISATEUR, voilà quelque chose de simple : utilise InStr et Mid, pour trouver le slash et ne prendre que la partie de la chaine qui t'intéresse.

Ce script peut donner un résultat correct, même pour un non-administrateur.
 

Nasbe

Habitué
strOutText = WshShell.SpecialFolders("Desktop" ) & "\AdresseIP.txt"

Je place dans une variable un objet qui contient des méthodes permettant d'accéder aux ressources systèmes. La propriété SpecialFolders va lister tout les accès aux dossiers environnement de Windows. Voilà simplement je n'ai pas trouvé d'information pour pouvoir stocker ceci dans un fichier qui se redirigerait dans un dossier partager, est-ce possible? apparement pas avec cette propriété.

Concerant le point 1, j'ai nommé mon ordinateur PC-de-Nasbe. Le script me fournis le résultat suivant PC-de-Nasbe\Nasbe. Je vais regarder les fonction InStr et Mid.

Lorsque j'exécute ce script avec un compte Invité, il me m'est un message d'erreur. Permission refusée : GetObject.

Merci déjà de ton aide.
 

zeb

Modérateur
Il y a plusieurs niveaux de permissions entre admin et invité. C'est à toi de les gérer. (Peut-être certains ici le savent mais c'est plus un problème lié aux droits sous Windows qu'un problème de programmation. Eventuellment, va voir dans la cat' ) Sinon, il y a toujours la possibilité de faire s'exécuter un programme avec les droits de quelqu'un d'autre.

La propriété SpecialFolders va lister tout les accès aux dossiers environnement de Windows
Ben voilà le problème. Ce n'est pas ce que tu veux faire [:spamafote] Comment s'appelle le dossier partagé ? S'il s'appelle P:\TOTO, essaie [fixed]strOutText = "P:\TOTO\AdresseIP.txt"[/fixed]S'il s'appelle \\server001\dossiers_partagés, essaie [fixed]strOutText = "\\server001\dossiers_partagés\AdresseIP.txt"[/fixed]
 

Nasbe

Habitué
Merci, c'est exactement ce qu'il me fallait. Mon dernier problème était de pouvoir renommer le nom du fichier texte (AdresseIP.txt) par le nom d'utilisateur. Comme ca lorsque je récupère l'ensemble des fichiers, il ne s'écrase pas les uns des autres.

Ma question est: est-il possible de nommer un fichier texte en utilisant le nom d'une variable. J'ai fais un deux tests mais j'ai chaque fois eu des erreurs.
 

Freeman23

Expert
Vu que tu utilises FSO tu peux par exemple passer par la méthode CopyFile pour créer ton fichier texte renommer et te servir de AdresseIP.txt comme d'un fichier de travail temporaire.

Sinon si tu as une variable à la création il suffit de l'utiliser.

Code:
StrOutText = "\\server001\toto\" & sNomUtil & ".txt"
 

zeb

Modérateur
Oui, c'est possible.

Comme écrit plus haut : Dis-nous comment tu as fait, nous aurons le "plaisir de te contre-dire". (irony-inside ;) ). Nous te dirons aussi pourquoi ça ne marche pas, comment faire pour que ça marche, voire comment faire autrement pour que ça marche mieux. Ainsi, le code que tu implémenteras sera le tien, modulo les remarques et conseils pêchés ici.
 

Nasbe

Habitué
C'est bon ca fonctionne
strOutText = "\\PC-DE-NASBE\Users\" &NomUtilisateur & " .txt"

moi j'utilisais ma variable msg.
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 098
Messages
6 717 052
Membres
1 586 282
Dernier membre
Yannick3553
Partager cette page
Haut