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 :

Fichier log pour un logon script


Sujet :

VBScript

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2015
    Messages : 13
    Points : 5
    Points
    5
    Par défaut Fichier log pour un logon script
    Bonjour,

    Depuis quelque temps, j'ai mon logon script qui s'exécute mal sur certain poste mais sur d'autre tout fonctionne parfaitement.
    Donc j'aimerais savoir si il y a la possibilité de faire un fichier log par connexion en fonction du bon déroulement ou pas du logon script.
    Cela me permettrais de comprendre d'ou viens mon problème et surtout comment le résoudre rapidement si besoin.
    Pour que se fichier se fasse correctement, il faudrait qu'il s'inscrive dans un dossier particulier classer par date et par user.
    Par avance merci de votre aide

    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
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    On Error resume next
    Dim WSHShell, WSHNetwork, objDomain, DomainString, UserString, UserObj, Path, sTime, sDate, UserGroups, GroupObj
    set WshShell = CreateObject("WScript.Shell")
    Set WshNetwork = WScript.CreateObject("WScript.Network")
    DomainString = Wshnetwork.UserDomain
    UserString = WSHNetwork.UserName
    Set oShell = CreateObject("Shell.Application")
    Set UserObj = GetObject("WinNT://" & DomainString & "/" & UserString)
    Set oDrives = WshNetwork.EnumNetworkDrives 
    strComputer = WSHNetwork.ComputerName
     
    Function InGroup(strGroup)
    	InGroup=False
    		If InStr(UserGroups,"[" & strGroup & "]") Then
    			InGroup=True
    		End If
    End Function
     
    For Each GroupObj In UserObj.Groups 
    	UserGroups=UserGroups & "[" & GroupObj.Name & "]" 
    Next
     
     
    'Deconnexion de tout les lecteurs reseaux
    'WshShell.Run "NET USE * /delete /Y"
    For intDrive = 0 To oDrives.Count - 1 Step 2
    	If oDrives.Item(intDrive) <> "" Then
    		WshNetwork.RemoveNetworkDrive oDrives.Item(intDrive) , true, true
        Else
    		WshNetwork.RemoveNetworkDrive oDrives.Item(intDrive+1) , true, true
        End if
    Next 
     
    'Lecteur par default
    WshNetwork.MapNetworkDrive "X:","\\bfasrv4.bfa.intra\id200", True
    oShell.NameSpace("X:\").Self.Name = "ID200"
    WshNetwork.MapNetworkDrive "P:","\\bfa-fil1.bfa.intra\Prive\" & wshNetwork.Username, False
    oShell.NameSpace("P:\").Self.Name = "PRIVE"
     
    '--------------------------------
    '  Lecteurs des administrateurs |
    '--------------------------------
    if InGroup("Admins du domaine") then
    	WshNetwork.MapNetworkDrive "K:","\\yoda.sovex.intra\kiosque", True
    	oShell.NameSpace("K:\").Self.Name = "KIOSQUE"
    	WshNetwork.MapNetworkDrive "M:","\\bourvil.sovex.intra\Marketing", True
    	oShell.NameSpace("M:\").Self.Name = "MARKETING"
    	WshNetwork.MapNetworkDrive "N:","\\sovexdata.sovex.intra\public", True
    	oShell.NameSpace("N:\").Self.Name = "PUBLIC-SOVEX"
    	WshNetwork.MapNetworkDrive "U:","\\bfa-fil1.bfa.intra\bm\travail", True
    	oShell.NameSpace("U:\").Self.Name = "TRAVAIL-BM"
    	WshNetwork.MapNetworkDrive "O:","\\yoda.sovex.intra\id200", True
    	oShell.NameSpace("O:\").Self.Name = "ID200_SOVEX"
    end if 
     
    'Lecteurs du groupe DOC_INFO
    if InGroup("DOC_INFO") then
    	WshNetwork.MapNetworkDrive "I:","\\bfa-fil1.bfa.intra\doc-info", True
    	oShell.NameSpace("I:\").Self.Name = "DOC-INFO"
    end if
     
    'Lecteurs du groupe BFA
    if InGroup("BFA") then
    	WshNetwork.MapNetworkDrive "T:","\\bfa-fil1.bfa.intra\bfa\public", True
    	oShell.NameSpace("T:\").Self.Name = "PUBLIC-BFA"
    end if
     
    'Lecteur du groupe BM
    if InGroup("Ballande&Meneret") then
    		WshNetwork.MapNetworkDrive "T:","\\bfa-fil1.bfa.intra\bm\travail", True
    		oShell.NameSpace("T:\").Self.Name = "TRAVAIL-BM"
    end if
     
    'LCB
    If Ingroup ("LCB Logistique") then
    	WshNetwork.MapNetworkDrive "I:","\\bfasrv4.bfa.intra\iDGamma\DTI+", True
    	oShell.NameSpace("I:\").Self.Name = "DTI+"
    end if
     
    'Lecteur du groupe de la comptabilité
    if InGroup("Compta BFA") then
    		WshNetwork.MapNetworkDrive "S:","\\supertramp.bfa.intra\sage", True
    		oShell.NameSpace("S:\").Self.Name = "SAGE"
    		WshNetwork.MapNetworkDrive "Y:","\\supertramp.bfa.intra\sage\documents standard", True
    		oShell.NameSpace("Y:\").Self.Name = "DOCUMENTS STANDARD"
    end if
     
    'Lecteurs du groupe EX-VITIS
    if InGroup("EX-VITIS") then
    	WSHNetwork.RemoveNetworkDrive "T:", True, True
    	WshNetwork.MapNetworkDrive "V:","\\bfa-fil1.bfa.intra\VPC", True
    	oShell.NameSpace("V:\").Self.Name = "VPC"
    	WshNetwork.MapNetworkDrive "M:","\\bfa-fil1.bfa.intra\BM\Travail", True
    	oShell.NameSpace("M:\").Self.Name = "TRAVAIL-BM"
    	WshNetwork.MapNetworkDrive "T:","\\bfa-fil1.bfa.intra\BFA\public", True
    	oShell.NameSpace("T:\").Self.Name = "PUBLIC-BFA"
    	If WshNetwork.Username = "henriotst" then
    		WSHNetwork.RemoveNetworkDrive "V:", True, True
    	end if
    end if
     
    'RETAIL
    if Ingroup("Retail") then 
    	WshNetwork.MapNetworkDrive "R:","\\bfa-fil1.bfa.intra\retail", True
    	oShell.NameSpace("R:\").Self.Name = "RETAIL"
    end if
     
    'Non-ID200
    if Ingroup("Non-ID200") then 
    	WSHNetwork.RemoveNetworkDrive "X:", True, True
    End If
     
    'Chateau Prieuré Lichine
    if Ingroup("Chateau Prieure LICHINE")	then
    	WshNetwork.MapNetworkDrive "T:","\\bfa-fil1.bfa.intra\PRIEURE", True
    	oShell.NameSpace("T:\").Self.Name = "PRIEURE_BFA"
    	WshNetwork.MapNetworkDrive "M:","\\cplsrv3.prieure.intra\PRIEURE", True
    	oShell.NameSpace("M:\").Self.Name = "PUBLIC_PRIEURE"
    end if
     
    'ID200-SOVEX
    if Ingroup("ID200-SOVEX")	then
    	WshNetwork.MapNetworkDrive "O:","\\yoda.sovex.intra\id200", True
    	oShell.NameSpace("O:\").Self.Name = "ID200-SOVEX"
    end if
     
    'My report
    if Ingroup("My-REPORT")	then
    	WshNetwork.MapNetworkDrive "Z:","\\supertramp.bfa.intra\MySystem BALLANDE", True
    	oShell.NameSpace("Z:\").Self.Name = "MY REPORT"
    End if
     
    '-------------------
    '| Cas particulier |
    '-------------------
     
     
    '------------------
    '| Arnaud NANDRIN |
    '------------------
    If WshNetwork.Username = "nandrinar" then
    	WshNetwork.MapNetworkDrive "T:","\\bfa-fil1.bfa.intra\bm\travail", True
    	oShell.NameSpace("T:\").Self.Name = "TRAVAIL-BM"
    	WshNetwork.MapNetworkDrive "Y:","\\bfa-fil1.bfa.intra\BFA\public", True
    	oShell.NameSpace("Y:\").Self.Name = "PUBLIC-BFA"
    	WshNetwork.MapNetworkDrive "I:","\\bfasrv4.bfa.intra\iDGamma", True
    	oShell.NameSpace("I:\").Self.Name = "IDGAMMA"
    	WshNetwork.MapNetworkDrive "S:","\\sovexdata.sovex.intra\public" , True
    	oShell.NameSpace("S:\").Self.Name = "PUBLIC-SOVEX"
    end if
     
    '-------------------------------------
    '| Client BFA200 pour Sandrine DULAS |
    '-------------------------------------
    If WshNetwork.Username = "dulassa" then
    	WshNetwork.MapNetworkDrive "V:","\\radiohead.bfa.intra\client", True
    	oShell.NameSpace("V:\").Self.Name = "CLIENT-BFA200"
    end if
     
    '------------------------------------
    '  Partage de compta BFA et prieure |
    '------------------------------------
    if InGroup("compta_prieure") then
    	WshNetwork.MapNetworkDrive "W:","\\bfa-fil1.bfa.intra\prieure", True
    	oShell.NameSpace("W:\").Self.Name = "COMPTA_PRIEURE"
    end if
     
    '-----------------
    '  acces a ID150 |
    '-----------------
    if InGroup("ID150") then
    	WshNetwork.MapNetworkDrive "Z:","\\bfa-fil1.bfa.intra\bfa", True
    	oShell.NameSpace("Z:\").Self.Name = "ID150"
    end if
     
    '------------------
    '  Philippe GODIN |
    '------------------
    If WshNetwork.Username = "godinph" then
    	WshNetwork.MapNetworkDrive "N:","\\bfa-fil1.bfa.intra\PRIEURE", True
    	oShell.NameSpace("N:\").Self.Name = "PRIEURE"
    	WshNetwork.MapNetworkDrive "M:","\\bfa-fil1.bfa.intra\Travail-BM", True
    	oShell.NameSpace("M:\").Self.Name = "TRAVAIL-BM"
    end if
     
     
    '----------------------
    '  Alexandre de GANAY |
    '----------------------
    If WshNetwork.Username = "deganayal" then
    	WshNetwork.MapNetworkDrive "Y:","\\bfa-fil1.bfa.intra\sources", True
    	oShell.NameSpace("Y:\").Self.Name = "SOURCES"
    	WshNetwork.MapNetworkDrive "Z:","\\BFA.INTRA\NETLOGON", True
    	oShell.NameSpace("Z:\").Self.Name = "NETLOGON_BFA"
    	WshNetwork.MapNetworkDrive "W:","\\SOVEX.INTRA\NETLOGON", True
    	oShell.NameSpace("W:\").Self.Name = "NETLOGON_SOVEX"
    end if
     
    '------------------
    '  PASCAL BROUET  |
    '------------------
    If WshNetwork.Username = "brouetpa" then
    	WshNetwork.MapNetworkDrive "L:","\\bfa-fil1.bfa.intra\bfa\Public\Partage LCB Pascal  - Beatrice", True
    	oShell.NameSpace("L:\").Self.Name = "LCB PASCAL - BEATRICE"
    end if
     
    '-------------------
    '  Chantal DU PATY |
    '-------------------
    If WshNetwork.Username = "dupatych" then
    	WshNetwork.MapNetworkDrive "S:","\\bfa-fil1.bfa.intra\bfa\public", True
    	oShell.NameSpace("S:\").Self.Name = "PUBLIC-BFA"
    end if

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2015
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Une petite aide SVP

  3. #3
    Membre confirmé Avatar de pitchalov
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 340
    Points : 582
    Points
    582
    Par défaut
    Bonjour,

    Pour commencer, un peu de doc sur l'écriture dans un fichier dans la FAQ VBScript

    Après, pour être fin dans l'écriture de log de ton script de logon, il va falloir le revoir entièrement pour :
    - Ecrire dans le fichier de log à chaque fois que tu veux mettre une info
    - Mettre en place une gestion d'erreur, car sinon ton script s'arrêtera avant même d'écrire l'info pertinente dans le fichier de log (sans "On Error Resume Next") ou passera l'erreur sans la logger (avec un "On Error Resume Next" global et pas de gestion d'erreur, comme c'est ton cas actuellement)

    Donc pour la faire courte il te faut selon moi :
    - Choisir un emplacement centralisé (share réseau) sur lequel tous les utilisateurs auront un droit d'écriture.
    - Choisir ce que tu vas logger.
    - Placer dans des Sub ou fonctions tous les bouts de code répétitifs qui pourraient générer des erreurs afin de les gérer, avec un "On Error Resume Next" et des tests sur l'objet Err.

    Exemple (non testé) :
    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
    ' Emplacement des fichiers de log centralisé
    Const STR_LOG_SHARE = "\\Server\log_share" 'tu peux mettre un répertoire local pour test tests "C:\Tests" par exemple
     
    ' Procédure pour incrémenter la variable globale strLogContent
    Sub IncrLog (strNewLine)
      strLogContent = strLogContent & strNewLine & VbCrLf
    End Sub
     
    ' Procédure pour écrire le fichier de log
    Sub WriteLogFile (strLogFilePath, strLogFileContent)
      Const ForWriting = 2 
      On Error Resume Next
      Set objFso =CreateObject("Scripting.FileSystemObject") 
      Set objLogFile = objFso .OpenTextFile(strLogFilePath, ForWriting, True) 
      objLogFile.write(strLogFileContent)
      objLogFile.Close
    End Sub
     
    ' Procédure pour mapper un disque avec gestion d'erreur
    Sub MapNetworkDrive (strLetter, strShare, strSelfName)
      On Error resume next
      Dim objWshShell 
      Set objWshShell = CreateObject("WScript.Shell")
      IncrLog "Mappage du share <" & strShare & "> sur la lettre <" & strLetter & "> et affectation du nom <" & strSelfName & ">"
      objWshShell.MapNetworkDrive strLetter, strShare, True
      objWshShell.NameSpace(strLetter).Self.Name = strSelfName
      If Err.Number <> 0 Then 
        IncrLog "Erreur (Error Number <" & Err.Number & "> Description <" & Err.Description & ">"
      Else
        IncrLog "OK"
      End If
    End Sub
     
    ' Procédure pour Supprimer un lecteur réseau, à faire la même manière
     
    ' Définition des variables
    Dim objWSHNetwork
    Dim strLogContent, strLogFileName, strComputerName ', Dim ... etc.
     
    ' Main
     
    Set objWSHNetwork= WScript.CreateObject("WScript.Network")
    strComputerName = objWSHNetwork.ComputerName
     
    ' Initialisation variable globale de contenu du log
    strLogContent = ""
     
    'Nom du fichier de log
    strLogFileName = Year(Now) & "-" & Month(Now) & "-" & Day(Now) & "_" & Hour(Now) & "-" & Minute(Now) & "-" & Second (Now)  & "_" & strComputerName 
     
    ' ...... ton script
     
    ' Mappage d'un lecteur pour exemple
    MapNetworkDrive "X:", "\\bfasrv4.bfa.intra\id200", "ID200"
     
    ' ... etc.
     
    ' Ecriture du fichier de log
    WriteLogFile STR_LOG_SHARE & "\" & strLogFileName, strLogContent
    Y a un peu de boulot...

    Bonne continuation.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2015
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Effectivement il y a un peu de boulot mais je prend mon temps pour que tout cela soit bon.

    Par contre car je fait quelques petits test j'ai un message d'erreur dans mon fichier log qui me met

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Mappage du share <\\bfasrv4.bfa.intra\id200> sur la lettre <X:> et affectation du nom <ID200>
    Erreur (Error Number <438> Description <Cet objet ne gère pas cette propriété ou cette méthode>
    Sais tu comment résoudre le problème? car je ne vois pas du tout comment faire

  5. #5
    Membre confirmé Avatar de pitchalov
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 340
    Points : 582
    Points
    582
    Par défaut
    Bonjour,

    Il doit y avoir des erreurs de code dans mon exemple que je n'avais pas testé.
    Enlève tous les "On Error Resume Next" pour avoir le "vrai" message d'erreur qui t'indiquera l'endroit exact de l'erreur.

    Bonne continuation

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2015
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Merci de ton aide pitchalov mais je ne comprend pas du tout le message d'erreur
    Il me met comme message d'erreur: Cet objet ne gère pas cette propiété ou cette méthode: 'objWshShell.MapNetworkDrive' code 800A01B6.

    J'ai beau chercher cher mon amis google mais n'ai rien trouver.

    Surtout, je ne comprend pas pourquoi il me met se message d'erreur, quel est cette méthode dont il me parle? Est-ce le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sub MapNetworkDrive (strLetter, strShare, strSelfName)
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim objWshShell 
      Set objWshShell = CreateObject("WScript.Shell")
    Aurais tu la possibilité de me donner quelques détail sur cette méthode stp?

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2015
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Désoler pour toute mes questions mais je pense avoir trouver mes réponses. Pour ceux qui veulent savoir voici la ligne qu'il faut modifier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Set objWshShell = CreateObject("WScript.Shell")
    il faut remplacer par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set objWshShell = CreateObject("Shell.Application")
    	Set objNetwork = CreateObject("WScript.Network")
    Le premier Set sert à la déclaration du nom du partage réseau et le second pour le mappage réseau.

    Mais ce n'ai pas fini, maintenant je cherche le moyen dans le bas du script (c'est à dire après les mappage réseaux commun) faire en sorte qu'il aille interroger le nom du groupe dans l'AD pour qu'il puisse monté les lecteur réseaux en fonction du groupe d'appartenance.

    Et donc si une âme charitable aurais une idée je suis preneur...

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2015
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Bonjour à tous,

    Finalement j'ai trouvé comment faire en sorte que mes lecteurs réseaux montent en fonction des groupes de l'utilisateur.

    voici le code qui pourrais intéresser certaine personne qui aimerais faire la même chose que moi

    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
    ' Emplacement des fichiers de log centralisé
    Const STR_LOG_SHARE = "C:\scripts" 'tu peux mettre un répertoire local pour test tests "C:\Tests" par exemple
     
    ' Procédure pour incrémenter la variable globale strLogContent
    Sub IncrLog (strNewLine)
    	strLogContent = strLogContent & strNewLine & VbCrLf
    End Sub
     
    ' Procédure pour écrire le fichier de log
    Sub WriteLogFile (strLogFilePath, strLogFileContent)
    	Const ForWriting = 2 
    	On Error Resume Next
    	Set objFso =CreateObject("Scripting.FileSystemObject") 
    	Set objLogFile = objFso.OpenTextFile(strLogFilePath, ForWriting, True) 
    	objLogFile.write(strLogFileContent)
    	objLogFile.Close
    End Sub
     
    ' Procédure pour mapper un disque avec gestion d'erreur
    Sub MapNetworkDrive (strLetter, strShare, strSelfName)
    	'On Error resume next
    	Dim objWshShell, objNetwork
    	Set objWshShell = CreateObject("Shell.Application")
    	Set objNetwork = CreateObject("WScript.Network") 
    	IncrLog "Le mappage Réseau <" & strShare & "> sur la lettre <" & strLetter & "> et affectation du nom <" & strSelfName & ">"
    	objNetwork.MapNetworkDrive strLetter, strShare, True
    	objWshShell.NameSpace(strLetter).Self.Name = strSelfName
    	If Err.Number <> 0 Then 
    		IncrLog "Erreur (Error Number <" & Err.Number & "> Description <" & Err.Description & ">"
    	Else
    		IncrLog "OK"
    	End If
    End Sub
     
    Set WshNetwork = WScript.CreateObject("WScript.Network")
    Set oDrives = WshNetwork.EnumNetworkDrives  
    WriteLogFile STR_LOG_SHARE & "\" & strLogFileName, strLogContent
     
    For intDrive = 0 To oDrives.Count - 1 Step 2
    	If oDrives.Item(intDrive) <> "" Then
    		WshNetwork.RemoveNetworkDrive oDrives.Item(intDrive) , true, true
        Else
    		WshNetwork.RemoveNetworkDrive oDrives.Item(intDrive+1) , true, true
        End if
    Next
     
    ' Définition des variables
    Dim objWSHNetwork
    Dim strLogContent, strLogFileName, strComputerName 
    Dim WSHShell, WSHNetwork, objDomain, DomainString, UserString, UserObj, Path, sTime, sDate, UserGroups, GroupObj, objSysInfo, objUser
    Set objSysInfo = CreateObject("ADSystemInfo")
    DomainString = Wshnetwork.UserDomain
    UserString = WSHNetwork.UserName
    Set objUser = GetObject("WinNT://" & DomainString & "/" & UserString)
    Set objWSHNetwork= WScript.CreateObject("WScript.Network")
     
    For Each GroupObj In objUser.Groups 
    	UserGroups=UserGroups & "[" & GroupObj.Name & "]" 
    Next
     
    strComputerName = objWSHNetwork.ComputerName
    strUserName = objWSHNetwork.UserName
    ' Initialisation variable globale de contenu du log
    strLogContent = ""
     
    Function InGroup(strGroup)
    	InGroup=False
    	If InStr(UserGroups,"[" & strGroup & "]") Then
    		InGroup=True
    	End If
    End Function
     
    'Nom du fichier de log
    strLogFileName = Year(Now) & "-" & Month(Now) & "-" & Day(Now) & "_" & Hour(Now) & "-" & Minute(Now) & "-" & Second (Now)  & "_" & strComputerName &  "_" & strUserName & ".log"
     
    ' Mappage d'un lecteur pour exemple
    MapNetworkDrive "X:", "\\bfasrv4.bfa.intra\id200", "ID200"
    MapNetworkDrive "P:", "\\bfa-fil1.bfa.intra\prive\" & wshNetwork.Username, "PERSO"
     
    if InGroup ("DOC_INFO") then
    	MapNetworkDrive "I:", "\\bfa-fil1.bfa.intra\doc-info", "DOC-INFO"
    end If
     
    ' Ecriture du fichier de log
    WriteLogFile STR_LOG_SHARE & "\" & strLogFileName, strLogContent
    Le seul problème que je rencontre c'est dans le fichier log il me met une erreur Quelqu'un peu m'aider SVP??

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2015
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Un petit coup de main SVP

  10. #10
    Membre confirmé Avatar de pitchalov
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 340
    Points : 582
    Points
    582
    Par défaut
    Bonjour,

    Tant que ton script contient des erreurs comme celle que tu rencontres, il faut commenter chaque ligne de "On Error Resume Next" afin de savoir à quelle ligne elle se produit, et pourquoi tu la rencontres.
    Ensuite, une fois les erreurs corrigées, tu peux remettre les "On Error Resume Next" pour ta gestion d'erreur, et le log des erreurs dans le fichier de logs.

    Ton code légèrement revu, avec une gestion de l'erreur sur la suppression des lecteurs réseau :
    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
    ' Emplacement des fichiers de log centralisé
    Const STR_LOG_SHARE = "C:\temp" 'tu peux mettre un répertoire local pour test tests "C:\Tests" par exemple
     
    ' Procédure pour incrémenter la variable globale strLogContent
    Sub IncrLog (strNewLine)
    	strLogContent = strLogContent & strNewLine & VbCrLf
    End Sub
     
    ' Procédure pour écrire le fichier de log
    Sub WriteLogFile (strLogFilePath, strLogFileContent)
    	Const ForWriting = 2 
    	On Error Resume Next
    	Set objFso =CreateObject("Scripting.FileSystemObject") 
    	Set objLogFile = objFso.OpenTextFile(strLogFilePath, ForWriting, True) 
    	objLogFile.write(strLogFileContent)
    	objLogFile.Close
    End Sub
     
    ' Procédure pour mapper un disque avec gestion d'erreur
    Sub MapNetworkDrive (strLetter, strShare, strSelfName)
    	On Error resume next
    	Dim objWshShell, objWSHNetwork
    	Set objWshShell = CreateObject("Shell.Application")
    	Set objWSHNetwork = CreateObject("WScript.Network") 
    	IncrLog "Mappage réseau du partage <" & strShare & "> sur la lettre <" & strLetter & "> et affectation du nom <" & strSelfName & ">"
    	objWSHNetwork.MapNetworkDrive strLetter, strShare, True
    	objWshShell.NameSpace(strLetter).Self.Name = strSelfName
    	If Err.Number <> 0 Then 
    		IncrLog vbTab & "Erreur (Error Number <" & Err.Number & "> Description <" & Err.Description & ">"
    	Else
    		IncrLog vbTab & "OK"
    	End If
    End Sub
     
    ' Procédure pour supprimer les montages de disques réseau avec gestion d'erreur
    Sub RemoveAllNetworkDrives ()
    	On Error resume next
    	Dim objNetDrives, objWSHNetwork, intDrive
    	Set objWSHNetwork = CreateObject("WScript.Network")
    	Set objNetDrives = objWSHNetwork.EnumNetworkDrives  
    	For intDrive = 0 To objNetDrives.Count - 1 Step 2
    		IncrLog "Suppression de la lettre réseau <" & objNetDrives.Item(intDrive) & "> correspondant au share <" & objNetDrives.Item(intDrive) & ">"
    		objWSHNetwork.RemoveNetworkDrive objNetDrives.Item(intDrive), true, true
    		If Err.Number <> 0 Then 
    			IncrLog vbTab & "Erreur (Error Number <" & Err.Number & "> Description <" & Err.Description & ">"
    		Else
    			IncrLog vbTab & "OK"
    		End If
    	Next
    End Sub
     
    ' Définition des variables
    Dim objWSHNetwork
    Dim strLogContent, strLogFileName, strComputerName 
    Dim  objDomain, DomainString, UserString, UserObj, Path, sTime, sDate, UserGroups, GroupObj, objSysInfo, objUser
     
    Set objSysInfo = CreateObject("ADSystemInfo")
    Set objWSHNetwork= WScript.CreateObject("WScript.Network")
    DomainString = objWSHNetwork.UserDomain
    UserString = objWSHNetwork.UserName
    Set objUser = GetObject("WinNT://" & DomainString & "/" & UserString)
     
    For Each GroupObj In objUser.Groups 
    	UserGroups=UserGroups & "[" & GroupObj.Name & "]" 
    Next
     
    strComputerName = objWSHNetwork.ComputerName
    strUserName = objWSHNetwork.UserName
     
    ' Initialisation variable globale de contenu du log
    strLogContent = "Fichier de log du loginscript pour l'utilisateur <" & strUserName & "> sur l'ordinateur <" & strComputerName & ">" & vbCrLf
     
    Function InGroup(strGroup)
    	InGroup=False
    	If InStr(UserGroups,"[" & strGroup & "]") Then
    		InGroup=True
    	End If
    End Function
     
    'Nom du fichier de log
    strLogFileName = Year(Now) & "-" & Month(Now) & "-" & Day(Now) & "_" & Hour(Now) & "-" & Minute(Now) & "-" & Second (Now)  & "_" & strComputerName &  "_" & strUserName & ".log"
     
    ' Suppression des lecteurs réseau 
    RemoveAllNetworkDrives
     
    ' Mappage de 2 lecteurs réseau pour tous
    MapNetworkDrive "X:", "\\bfasrv4.bfa.intra\id200", "ID200"
    MapNetworkDrive "P:", "\\bfa-fil1.bfa.intra\prive\" & wshNetwork.Username, "PERSO"
     
    ' Mappage de lecteurs réseau en fonction des groupes AD
    if InGroup ("DOC_INFO") then
    	MapNetworkDrive "I:", "\\bfa-fil1.bfa.intra\doc-info", "DOC-INFO"
    end If
     
    ' Ecriture du fichier de log
    WriteLogFile STR_LOG_SHARE & "\" & strLogFileName, strLogContent
    Pas d'erreur pour ma part.

    Bonne continuation.

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2015
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Effectivement il faut réactivé "On Error Resume Next" et cela fonctionne bien et je suis en train de le déployer et cela fonctionne très bien

    Merci à pitchalov pour ton aide bien précieuse

Discussions similaires

  1. Faire fichier log pour mon script
    Par zara5 dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 28/07/2014, 17h20
  2. Créer des fichiers log pour les pages web visitées hors ligne
    Par AprilD dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 23/03/2008, 22h01
  3. fichier log pour quicktime
    Par olivier57b dans le forum Apple
    Réponses: 6
    Dernier message: 22/10/2007, 13h38
  4. Fichier log pour suivre les actions d'un utilisateur
    Par Maxi-môme dans le forum VBA Access
    Réponses: 6
    Dernier message: 01/08/2007, 12h37
  5. [Oracle 8i/Fichier de log] - fichier log pour analyse erreur
    Par shaun_the_sheep dans le forum Oracle
    Réponses: 4
    Dernier message: 25/01/2005, 19h06

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