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 :

Récupérer liste des utilisateur domaine d'une machine


Sujet :

VBScript

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 9
    Par défaut Récupérer liste des utilisateur domaine d'une machine
    Bonjour a tous !

    Je suis actuellement en train de créer un script permettant d'effectuer automatiquement la sauvegarde de tous les profils utilisateur de mon domaine ayant utilisé une meme machine.
    Ce script sera executé directement sur la machine concernée.
    Pour se faire, je souhaiterai être en mesure de recupérer la liste des utilisateur de mon domaine ayant ouvert une session sur cette machine.

    Sauriez-vous comment je peux procéder ?

    D'autre part, je rencontre un léger soucis lors de la copie des données. En effet, je voudrais voir les données en cours de tranfert. J'ai pour cela utilisé une commande ms-dos. Etrangement cette commande fonctionne très bien sous windows vista (machine personnelle de test) mais ne semble pas vouloir fonctionner sous windows XP. Auriez-vous une solution pour ce problème ?

    Merci par avance

    Cordialement

  2. #2
    Membre expérimenté
    Inscrit en
    Mai 2008
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 189
    Par défaut
    pour ta première problématique, tu as 2 options :

    soit tu logue au login de tous tes utilisateurs, et après tu filtre le fichier de log par machine.

    Soit tu logue au niveau de la machine, par contre ca sera un script qui tourne en local du coup, et qui vérifie périodiquement l'utilisateur connecté, ou la clé de registre du lastlogon.

    Selon tes contraintes coté domaine et de ce que tu compte faire par la suite, la première méthode est plus propre (à administrer coté AD) et permet d'étendre l'utilisation du log plus facilement.



    pour la 2eme problématique, je ne comprends pas ce que tu veux faire. Tu as un exemple du code qui tourne sur Vista ? Quel est l'intéret, quel protocole de tranfert utilises-tu ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 9
    Par défaut
    En gros pour la deuxieme question je voudrais du verbose.
    Voici le code que j'utilise

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cmdline = "cmd /c xcopy " & mes_documents & " " & rep_sauvegarde1 & " /E /W"
    WshShell.run cmdline
    Sous vista ça marche...pas sous XP
    J'ai donc la solution du copyfolder mais il ne me montre pas ce qu'il est en train de copier, tout se passe en arriere plan (donc pas de verbose et pas de signe d'activité du scipt), ce qui me gène.


    Pour la première question, je ne travaillerai que du point de vue de la machine locale. Mais je pense avoir trouvé la solution ^^ je vais récupérer la liste des repertoires present dans C:\Documents and settings\ et virer ceux qui ne m'interressent pas.

  4. #4
    Membre expérimenté
    Inscrit en
    Mai 2008
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 189
    Par défaut
    Ok, donc d'après ce que j'ai compris, c'est pas le logue des copies, mais tu lance toi la copie par un exe qui lui fait les logs.


    bon bah à priori s'il marche plus c'est soit lié au fait que sous vista la variable mes_documents n'a pas le même chemin soit au fait que l'exe n'est pas compatible (mais j'en doute ...).

    Essaie de modifier le path de destination en "c:\temp\" pour voir si ca marche.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 9
    Par défaut
    bon j'ai essayé de changer le repertoire source et le repertoire cible mais cela ne change rien.
    Je vois bien une fenetre cmd qui s'ouvre mais elle se referme presque aussitot et rien ne se fait

  6. #6
    Membre expérimenté
    Inscrit en
    Mai 2008
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 189
    Par défaut
    est ce que tu l'a changé pour pointer vers un dossier de base (genre c:\) au lieu d'un dossier utilisateur ?

    Sinon y'a aussi les variables d'envirronements, c'est mieux, mais bon déjà pour dépatouiller, indique moi comment tu déclare :

    _ mes_documents
    _ rep_sauvegarde1

    et si tu peux poser ton code complet sera plus simple.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 9
    Par défaut
    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
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    ' ### Déclaration des variables ###
    
    Dim  nom_user, reseau, repertoire, objFSO, rep_user, mes_documents, MyDay, MyMonth, MyYear, MyDate, cmdline
    
    ' ### Création des objets ###
    
    Set objFSO = CreateObject("Scripting.FileSystemObject" )
    Set reseau = CreateObject("Wscript.Network") 
    Set WshNetwork = WScript.CreateObject("WScript.Network")
    Set WshShell = WScript.CreateObject("WScript.Shell")
    
    ' ### Mappage du lecteur de sauvegarde ###
    
    If objFSO.DriveExists("J:" ) Then
    	reseau.RemoveNetworkDrive "J:"
    End if
    'reseau.MapNetworkDrive "J:", "\\10.0.2.65\c$"
    rep_sauvegarde = "c:\"
    
    
    ' ### Création de la variable contenant le repertoire utilisateur du domaine ###
    
    nom_user = WshNetwork.UserName
    rep_user = "C:\Documents and Settings\" & nom_user
    rep_sauvegarde = rep_sauvegarde & nom_user
    
    
    
    ' ### Mise en variable d'un format de date dd-mm-yyyy ###
    
    MyDay = Day(Now())
    MyMonth = Month(Now())
    MyYear = Year(Now())
    MyDate = MyDay & "-" & MyMonth & "-" & MyYear
    
    
    
    ' ### Creation du répertoire de sauvegarde ###
    
    if objFSO.FolderExists(rep_sauvegarde) = TRUE then
    		if objFSO.FolderExists(rep_sauvegarde & "\" & MyDate) <> TRUE then
    			SET Mondossier = objFSO.Createfolder(rep_sauvegarde & "\" & MyDate)
    		end if
    		rep_sauvegarde = rep_sauvegarde & "\" & MyDate
    else
    		SET Mondossier = objFSO.Createfolder(rep_sauvegarde)
    		SET Mondossier = objFSO.Createfolder(rep_sauvegarde & "\" & MyDate)
    		rep_sauvegarde = rep_sauvegarde & "\" & MyDate
    end if
    
    
    ' ### Vérification de l'existence des répertoires utilisateur ###
    
    ' ### Mes documents ###
    
    mes_documents = rep_user & "\Mes documents"
    'If objFSO.FolderExists(mes_documents) <> True Then
    '	mes_documents = ""
    'else
    '	if objFSO.FolderExists(rep_sauvegarde & "\Mes documents") <> TRUE then
    '		SET Mondossier = objFSO.Createfolder(rep_sauvegarde & "\Mes documents")
    '	end if 
    rep_sauvegarde1 = rep_sauvegarde & "\Mes documents"
    'end if
    'objFSO.CopyFolder mes_documents , rep_sauvegarde1
    'wscript.echo mes_documents
    'wscript.echo rep_sauvegarde1
    
    
    ' ### Bureau ###
    
    bureau = rep_user & "\bureau"
    If objFSO.FolderExists(bureau) <> True Then
    	bureau = ""
    end if
    
    
    ' ### Favoris ###
    favoris = rep_user & "\favoris"
    If objFSO.FolderExists(favoris) <> True Then
    	favoris = ""
    end if
    
    
    ' ### Copie des données ###
    rep_sauvegarde1="C:\temps2"
    mes_documents="C:\Documents and Settings\bcaron\Menu Démarrer"
    cmdline = "cmd /c xcopy " & mes_documents & " " & rep_sauvegarde1 & " /E /W"
    WshShell.run cmdline
    Je pense avoir saisi d'ou vient le souci.
    Sous windows Vista, le cmd est un emulateur qui sait interpreter les espaces alors que sous XP c'est du Dos...Du coup mon chemin d'accès present dans la variable mes_documents doit être entouré de guillemets dans la commande à lancer...mais je sais pas comment faire car je ne peux pas rajouter des guillemets (enfin je ne sais pas comment le faire)
    (note : mon code est tout plein de commentaire car je fais des test au fur et à mesure)

  8. #8
    Membre expérimenté
    Inscrit en
    Mai 2008
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 189
    Par défaut
    pour rajouter un " il faut en ecrire 3 comme ca """

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 9
    Par défaut
    heu ok ^^
    j'ai essayé et définitivement je dois être la quiche du mois

    cmdline = "cmd /c xcopy " & mes_documents & " " & rep_sauvegarde1 & " /E /W"

    En gros je voudrais rajouter des guillemets autour des variables mes_documents et rep_sauvegarde1...J'ai essayé mais je n'y arrive pas :'( Je n'arrive manifestement pas a me caller sur la bonne synthaxe

    Merci par avance

  10. #10
    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
    cmdline = "cmd /c xcopy """ & mes_documents & """ """ & rep_sauvegarde1 & """ /E /W"

    Après un ptit WScript.echo cmdline pour vérifier que c'est bien ce que tu veux

  11. #11
    Membre expérimenté
    Inscrit en
    Mai 2008
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 189
    Par défaut
    je viens de regarder le code de plus près :

    comme je t'ai dit, en prenant un chemin windows invariable (c:\) ca ne pose pas de problème :

    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
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
     
     
    ' ### Déclaration des variables ###
     
    Dim  nom_user, reseau, repertoire, objFSO, rep_user, mes_documents, MyDay, MyMonth, MyYear, MyDate, cmdline
     
    ' ### Création des objets ###
     
    Set objFSO = CreateObject("Scripting.FileSystemObject" )
    REM Set reseau = CreateObject("Wscript.Network") 
    REM Set WshNetwork = WScript.CreateObject("WScript.Network")
    Set WshShell = WScript.CreateObject("WScript.Shell")
     
    ' ### Mappage du lecteur de sauvegarde ###
     
    REM If objFSO.DriveExists("J:" ) Then
    	REM reseau.RemoveNetworkDrive "J:"
    REM End if
    REM 'reseau.MapNetworkDrive "J:", "\\10.0.2.65\c$"
    REM rep_sauvegarde = "c:\"
     
     
    ' ### Création de la variable contenant le repertoire utilisateur du domaine ###
     
    REM nom_user = WshNetwork.UserName
    REM rep_user = "C:\Documents and Settings\" & nom_user
    REM rep_sauvegarde = rep_sauvegarde & nom_user
     
     
     
    ' ### Mise en variable d'un format de date dd-mm-yyyy ###
     
    REM MyDay = Day(Now())
    REM MyMonth = Month(Now())
    REM MyYear = Year(Now())
    REM MyDate = MyDay & "-" & MyMonth & "-" & MyYear
     
     
     
    ' ### Creation du répertoire de sauvegarde ###
     
    REM if objFSO.FolderExists(rep_sauvegarde) = TRUE then
    		REM if objFSO.FolderExists(rep_sauvegarde & "\" & MyDate) <> TRUE then
    			REM SET Mondossier = objFSO.Createfolder(rep_sauvegarde & "\" & MyDate)
    		REM end if
    		REM rep_sauvegarde = rep_sauvegarde & "\" & MyDate
    REM else
    		REM SET Mondossier = objFSO.Createfolder(rep_sauvegarde)
    		REM SET Mondossier = objFSO.Createfolder(rep_sauvegarde & "\" & MyDate)
    		REM rep_sauvegarde = rep_sauvegarde & "\" & MyDate
    REM end if
     
     
    ' ### Vérification de l'existence des répertoires utilisateur ###
     
    ' ### Mes documents ###
     
    REM mes_documents = rep_user & "\Mes documents"
    'If objFSO.FolderExists(mes_documents) <> True Then
    '	mes_documents = ""
    'else
    '	if objFSO.FolderExists(rep_sauvegarde & "\Mes documents") <> TRUE then
    '		SET Mondossier = objFSO.Createfolder(rep_sauvegarde & "\Mes documents")
    '	end if 
    REM rep_sauvegarde1 = rep_sauvegarde & "\Mes documents"
    'end if
    'objFSO.CopyFolder mes_documents , rep_sauvegarde1
    'wscript.echo mes_documents
    'wscript.echo rep_sauvegarde1
     
     
    REM ' ### Bureau ###
     
    REM bureau = rep_user & "\bureau"
    REM If objFSO.FolderExists(bureau) <> True Then
    	REM bureau = ""
    REM end if
     
     
    REM ' ### Favoris ###
    REM favoris = rep_user & "\favoris"
    REM If objFSO.FolderExists(favoris) <> True Then
    	REM favoris = ""
    REM end if
     
     
    ' ### Copie des données ###
    rep_sauvegarde1="C:\temp1"
    'mes_documents="C:\Documents and Settings\bcaron\Menu Démarrer"
    mes_documents="C:\temp2"
    cmdline = "cmd /c xcopy " & mes_documents & " " & rep_sauvegarde1 & " /E /W > c:\log.txt"
    WshShell.run cmdline

    j'ai vérifier le log.txt :
    Appuyez sur une touche pour commencer la copie du ou des fichiers

    C:\temp2\test.txt
    1 fichier(s) copi‚(s)
    ton problème vient du chemin que tu utilises qui diffère selon la version de windows.

    Essaie cette ligne là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mes_documents="%UserProfile%"


    pour ton log j'ai pas compris, parce que ton code ne gardais pas le log, j'ai rajouté un > c:\log.txt, mais si tu veux juste le faire afficher et conserver la fenetre dos, rajoute un commutateur /k à ton cmd.

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 9
    Par défaut
    Bon la ligne de commande marche très bien Merci à toi
    Par contre %userprofil% ne donne rien

    Je suis maintenant fasse a un soucis plus amusant ^^ La copie commence et pour une raison qui m'échappe totalement, elle s'arrete au bout d'un moment et ne copie qu'une petite partie des dossiers...
    Je ne comprend plus rien

  13. #13
    Membre expérimenté
    Inscrit en
    Mai 2008
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 189
    Par défaut
    ok, je t'ai mis ce qui marche sous xp chez moi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Set WshShell = WScript.CreateObject("WScript.Shell")
    rep_sauvegarde1="C:\temp1"
    mes_documents= """%USERPROFILE%"""
    wscript.echo rep_sauvegarde1
    wscript.echo mes_documents
    cmdline = "cmd /k xcopy " & mes_documents & " " & rep_sauvegarde1 & " /E"
    WshShell.run cmdline
    enjoy ^^

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 9
    Par défaut
    \o/ ça marche

    J'ai juste une derniere question (ce n'est pas un probleme ce coup ci :p)
    Dans la commande cmd, tu as mis cmd /k alors que j'avais cmd /c ...c'est quoi la diférence ?

  15. #15
    Membre expérimenté
    Inscrit en
    Mai 2008
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 189
    Par défaut
    la différence tu peux l'avoir en tapant cmd /?

    en fait il conserve la fenetre apparente, parce que sinon ca sert a rien que tu affiche si cà disparait aussitot (vu que ton code ne logue pas dans l'état actuel).

Discussions similaires

  1. la liste des utilisateurs actifs d'une application
    Par john_wili dans le forum Servlets/JSP
    Réponses: 17
    Dernier message: 22/02/2010, 14h52
  2. Retrouver la liste des utilisateurs d'une machine
    Par Silverbob dans le forum VBScript
    Réponses: 0
    Dernier message: 18/07/2008, 12h05
  3. [Interbase] Liste des utilisateurs enregistrés pour une BD
    Par touhami dans le forum Bases de données
    Réponses: 4
    Dernier message: 14/02/2007, 07h29
  4. Réponses: 2
    Dernier message: 24/03/2006, 09h55
  5. Comment récupérer la liste des logiciels installés sur une machine ?
    Par david_chardonnet dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 19/09/2003, 17h41

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