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 :

Exécuter un Script en fonction d'une liste de postes de travail.


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2017
    Messages : 3
    Par défaut Exécuter un Script en fonction d'une liste de postes de travail.
    Bonjour à tous,

    Novice dans le domaine, j'utilise des scripts pour effectuer des opérations basiques sur des postes de travail en réseau.

    Il s'agit le plus souvent de vérification d’existence de fichiers et répertoires et de copie de ceux-ci.

    Actuellement, je répète les instructions dans mon script en modifiant les noms de machines.

    J'aimerais pouvoir m'appuyer sur un fichier de type .txt (liste_pc.txt)

    Pouvez-vous me guider un peu ?

    Merci pour votre aide.

    Voici le script que j'utilise actuellement (exemple pour 2 postes de travail) :

    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
    '*** Déclaration des variables
    Dim ObjetNetwork
    Dim WshShell, BtnCode
    Set WSHShell = WScript.CreateObject("WScript.Shell")
    Set ObjetNetwork = CreateObject("WScript.Network")
    Set fso = WScript.CreateObject("Scripting.FileSystemObject")
     
    '*** Permet de continuer le script même s'il y a une erreur
    On Error Resume Next
     
    '***********************************Poste 1 ****************************************************
    '*** Connection des lecteurs réseaux
    ObjetNetwork.MapNetworkDrive "Z:", "\\Poste1\C$", True, "Login@AD", "Password"
     
    '*** Copie du répertoire Cours
    If fso.FolderExists("Z:\Cours") Then
    	Else
    		fso.CopyFolder "C:\temp\Cours","Z:\", True
    End If
     
    '*** Copie du Répertoire Bureau vers profil Public
    fso.CopyFolder "c:\temp\Desktop", "Z:\Users\Public\", True
     
    '*** => Déconnection des anciens lecteurs réseaux
    ObjetNetwork.RemoveNetworkDrive "Z:", True, True
     
    '***********************************Poste 2 ****************************************************
    '*** Connection des lecteurs réseaux
    ObjetNetwork.MapNetworkDrive "Z:", "\\Poste2\C$", True, "Login@AD", "Password"
     
    '*** Copie du répertoire Cours
    If fso.FolderExists("Z:\Cours") Then
    	Else
    		fso.CopyFolder "C:\temp\Cours","Z:\", True
    End If
     
    '*** Copie du Répertoire Bureau vers profil Public
    fso.CopyFolder "c:\temp\Desktop", "Z:\Users\Public\", True
     
    '*** => Déconnection des anciens lecteurs réseaux
    ObjetNetwork.RemoveNetworkDrive "Z:", True, True
     
    BtnCode = WshShell.Popup("fin de script", 5)
     
    '*** Destruction des objets
    Set ObjetNetwork = Nothing
     
    WScript.Quit

  2. #2
    Membre expérimenté
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2011
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2011
    Messages : 163
    Par défaut
    Salut !

    J'ai un script qui recherche un profil local sur une liste de postes Win7 ...
    (il recherche un identifiant dans C:\Users\ sur les poste de la liste)

    Comme ton script, il fonctionne par mappages successifs du partage administratifs (\\NomPoste\C$) sur le lecteur Z:
    (droits d'admin requis)

    Tu peux peut-être t'en inspirer et adapter ce qui t'intéresse ... ?

    Voici le code :

    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
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    Const ForReading = 1, ForWriting = 8
    Dim oFSO, oSh, WSHShell, WSHNetwork
    Dim Fichier_Rapport, Message, Date_Heure
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    Set WSHShell = WScript.CreateObject("WScript.Shell")
    Set WSHNetwork = CreateObject("WScript.Network")
    Public StrComputer, onlinestate, i, pathfile
    date_heure = now
     
    ' *****************************
    ' Saisissez le profil recherché
    ' *****************************
     
    usrprofil = InputBox("Saisissez le profil recherché")
     
    MyFolder = "Z:\Users\" & usrprofil
     
    ' ******************
    ' Fichier de données
    ' ******************
     
    Fichier_pc_txt = "LISTE_PC.txt"
    Fichier_tmp = "LISTE_TMP.txt"
    Fichier_Rapport = "RAPPORT_RECHERCHE.txt"
     
    ' **************************************
    ' Test Fichier_pc_txt existe et non-vide
    ' **************************************
     
    If oFSO.FileExists(Fichier_pc_txt) = False Then MsgBox"Liste des postes non-trouvée :" & VbCrLf & Fichier_pc_txt & VbCrLf & VbCrLf & "FIN DU SCRIPT", vbOkOnly : Wscript.Quit
    Set oFl = oFSO.GetFile(Fichier_pc_txt)
    If oFl.Size = 0 Then MsgBox"Aucun poste dans la liste :" & VbCrLf & Fichier_pc_txt & VbCrLf & VbCrLf & "FIN DU SCRIPT", vbOkOnly : Wscript.Quit
    If oFSO.FileExists(Fichier_Rapport) Then oFSO.DeleteFile Fichier_Rapport, True
     
    ' ******************************
    ' Ecriture du fichier temporaire
    ' ******************************
     
    Set Var_tmp = oFSO.CreateTextFile(Fichier_tmp) : Var_tmp.close
    Set lect = oFSO.OpenTextFile(Fichier_pc_txt, ForReading)
    Set ecr = oFSO.OpenTextFile(Fichier_tmp, ForWriting)
    While Not lect.AtEndOfStream
    Texte = lect.ReadLine
    Texte = Trim(Texte)
    If len(Texte) > 0 Then
    ecr.WriteLine Texte
    End if
    Wend
    lect.close
    ecr.close
     
     
    ' ****************
    ' Lecture liste PC
    ' ****************
     
    Set f = oFSO.OpenTextFile(Fichier_tmp, ForReading)
    ts = f.ReadAll
    nbr_pc = f.Line
    f.close
    Set f = oFso.OpenTextFile(Fichier_tmp, ForReading)
    Dim list_pc()
    Redim list_pc(nbr_pc,3)
    i = 1
    Do While Not f.AtEndOfStream
    list_pc(i,1) = f.Readline
    i = i + 1
    Loop
    f.close
    If oFSO.FileExists(Fichier_tmp) Then oFSO.DeleteFile Fichier_tmp, True
    if list_pc(nbr_pc,1) = "" Then nbr_pc = nbr_pc - 1
     
    ' *******************
    ' Ajout date et heure	
    ' *******************
     
    If oFso.FileExists(Fichier_Rapport) = False then oFso.CreateTextFile(Fichier_Rapport)
    set myfile = oFso.OpenTextFile(Fichier_Rapport, ForWriting) : myfile.Write("Début du test : " & date_heure & vbNewLine & vbNewLine) : myfile.Close
     
    ' *********************
    ' Test online / Offline
    ' *********************
     
    For i = 1 to nbr_pc
    StrComputer = list_pc(i,1)
    Call online
     
    ' *** Poste inaccessible ***
    If list_pc(i,2) = 0 Then
    Set myfile = oFso.OpenTextFile(Fichier_Rapport, ForWriting) : Message = StrComputer & " : *** Inaccessible ***" & vbNewLine : myfile.Write(Message) : myfile.Close
    Else
    	' *** Mapping poste accessible ***
    	if oFSO.DriveExists("Z:") Then WSHNetwork.RemoveNetworkDrive("Z:")
    	WScript.Sleep 2000
    	chem = "\\" & StrComputer & "\c$"
    	WSHNetwork.MapNetworkDrive "Z:", chem
    	WScript.Sleep 2000
     
    	' *** Répertoire recherché existe ***
    	if oFSO.FolderExists(MyFolder) Then
    		Set oFL = oFSO.GetFolder(Myfolder)
    		Message = StrComputer & " : Profil trouvé " & oFL.DateLastModified & vbNewLine
    	Else
    		' *** Répertoire recherché n'existe pas ***
    		Message = StrComputer & " : " & "Profil inexistant" & vbNewLine
    	end if
     
    ' écriture dans le rapport
    Set myfile = oFso.OpenTextFile(Fichier_Rapport, ForWriting)
    myfile.Write(Message) : myfile.Close
     
    end if
    Next
     
    ' **************************************************
    ' Ouverture du fichier de rapport & fin du programme
    ' **************************************************
     
    date_heure = now
    set myfile = oFso.OpenTextFile(Fichier_Rapport, ForWriting) : myfile.Write(vbNewLine & "Fin du test : " & date_heure & vbNewLine & vbNewLine & "___________________________________" & vbNewLine & vbNewLine) : myfile.Close
    if oFSO.DriveExists("Z:") Then WSHNetwork.RemoveNetworkDrive("Z:")
    MsgBox "Traitement terminé !" & vbNewLine & "Consulter " & Fichier_Rapport
    WScript.Quit
     
    ' *****************************
    ' Sous fonction ping des postes
    ' *****************************
     
    Sub online
    Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}!\\").ExecQuery("select * from Win32_PingStatus where address = '" & StrComputer & "'")
    For Each objStatus in objPing
    If objStatus.Statuscode = 0 Then list_pc(i,2) = 1 else list_pc(i,2) = 0
    Next
    End Sub
    Bon courage !
    ++

  3. #3
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2017
    Messages : 3
    Par défaut
    Merci Beaucoup !

    Je test ça dès que possible et te fait un retour

  4. #4
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2017
    Messages : 3
    Par défaut
    Mieux vaut tard que jamais parait-il

    Ça fonctionne correctement.

    Seul problème rencontré, Je n'ai pas réussi à utiliser : WSHNetwork.MapNetworkDrive "Z:" avec User et Password, j'ai donc utiliser la commande suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ObjetNetwork.MapNetworkDrive "Z:", chem, True, "User", "Password"
    Merci encore pour ton aide.

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

Discussions similaires

  1. [formulaire]appliquer un filtre en fonction d'une liste
    Par hansaplast dans le forum Access
    Réponses: 1
    Dernier message: 24/07/2006, 12h31
  2. afficher un lien en fonction d'une liste
    Par bigbabou dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 13/05/2006, 02h48
  3. choisir un fichier .js à éxécuter en fonction d'une liste
    Par bikerman dans le forum Général JavaScript
    Réponses: 16
    Dernier message: 10/04/2006, 14h48
  4. Réponses: 10
    Dernier message: 25/11/2005, 17h12
  5. Comment rappeler une fonction dans une liste déroulante
    Par strogos dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/05/2005, 23h54

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