Impossibilité d'écrire à la suite dans un fichier sous systeme Win 2000...

alexalex55 Messages postés 4 Date d'inscription vendredi 7 juillet 2006 Statut Membre Dernière intervention 20 juillet 2006 - 20 juil. 2006 à 09:03
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 - 20 juil. 2006 à 12:55
Bonjour,

J'ai un ENORME problème que je n'arrive pas à résoudre.
Voila, j'ai créé deux scripts sous VBS qui s'éxécutent au démarrage et à la fermeture d'une session Utilisateur. Le but est simple : Un dossier intitulé "session_utilisateur" est partagé. Si toto se connecte à partir du poste client001 le 17/08/2008 alors une arborescence se crééra ( d:\session_utilisateur\client001\zozo\17.8.2006\rapport.txt). Rapport.txt est en fait unfichier de trace qui se fera incrémenté de ligne de texte spécifiant une déconnexion ou connexion pour utilisateur sur un poste pour un jour donné.



Le problème est le suivant : quand je fais mes test sous windows 2003 => TOUT FONCTIONNE CORRECTEMENT !! Le problème vient de mes clients 2000. Ceux ci crééscorrectement l'arborescence de dossier puis le ficheir mais aucun incrémentation se fait lors d'une déconnexion ou d'une reconnexion.

A croire que Windows 2000 n'arrive pas à ouvrir et écrire à la suite dans un fichier texte mappé.

Quelqu'un à t-il déja rencontré ce problème et/ou pourrait solutionner ce problème qui me fait perdre les cheveux sur ma tête.



Je joins le code du script de connexion ( a savoir que le script de déconnexion est quasi similaire !!) :

On Error Resume Next




Set WSHShell = WScript.CreateObject("WScript.Network")
Set objNetwork = CreateObject("Wscript.Network")
strUser = objNetwork.UserName




strPath = "

[file://\\serv-sb\journal$\Session_utilisateur\
\\serv-sb\journal$\Session_utilisateur\

]
" & WSHShell.computerName & "" & WSHShell.userName &"" & Replace(Date, "/",".") &"\Rapport_de_session.txt"




Set objFSO = CreateObject("Scripting.FileSystemObject")




If objFSO.FileExists(strPath) Then




 Wscript.Echo "Le fichier de log existait. Des info vont etre immédiatement inséré dedans"
 dim fso
 Set fso = Nothing
 ecriture_a_la_suite




 Else
 Wscript.Echo "Le fichier de log pour aujourd'hui n'existait pas. Il vient d'être créé"
 Set objFSO = CreateObject("Scripting.FileSystemObject")
 Set objFolder = objFSO.CreateFolder("

[file://\\serv-sb\journal$\Session_Utilisateur
\\serv-sb\journal$\Session_Utilisateur

]
")




 Set objFSO = CreateObject("Scripting.FileSystemObject")
 Set objFolder = objFSO.CreateFolder("

[file://\\serv-sb\journal$\Session_Utilisateur\
\\serv-sb\journal$\Session_Utilisateur\

]
"+ WSHShell.computerName)




 Set objFSO = CreateObject("Scripting.FileSystemObject")
 Set objFolder = objFSO.CreateFolder("

[file://\\serv-sb\journal$\Session_utilisateur\
\\serv-sb\journal$\Session_utilisateur\

]
" & WSHShell.computerName & "" & WSHShell.userName)




 ' CREATION DU DOSSIER PORTANT LA DATE COURANTE
 NewDate = "

[file://\\serv-sb\journal$\Session_utilisateur\
\\serv-sb\journal$\Session_utilisateur\

]
" & WSHShell.computerName & "" & WSHShell.userName &"" & Replace(Date, "/",".")
 Set fso = CreateObject("Scripting.FileSystemObject")
 If Not fso.FolderExists(Newdate) Then
     Set f = fso.CreateFolder(NewDate)
 End If  
 MsgBox Newdate
 Set fso = Nothing




 creation_et_remplissage




End If






function creation_et_remplissage ()




Dim NT
NT = Now
'CREATION DU FICHIER RAPPORT_DE_SESSION.TXT
Set fso = Nothing
Set fso = CreateObject("Scripting.FileSystemObject")
set rapor= fso.OpenTextFile("

[file://\\serv-sb\journal$\Session_utilisateur\
\\serv-sb\journal$\Session_utilisateur\

]
" & WSHShell.computerName & "" & WSHShell.userName &"" & Replace(Date, "/",".") &"\Rapport_de_session.txt",2,True)




rapor.WriteLine("-------------------------------------------------------------------------")
rapor.WriteLine("Information sur la connexion à une station blanche - Le "&Now)
rapor.WriteLine("-------------------------------------------------------------------------")
rapor.WriteBlankLines(1)




rapor.WriteLine("Heure de la connexion --> "&Now)
rapor.WriteBlankLines(1)
rapor.WriteLine("Nom de l'ordinateur: "+ WSHShell.ComputerName)




rapor.WriteBlankLines(1)
rapor.WriteLine("Nom de l'utilisateur de la station blanche: "+ WSHShell.userName)
rapor.WriteBlankLines(1)




strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\" & strComputer & "\root\cimv2")




Set colOperatingSystems = objWMIService.ExecQuery ("Select * from Win32_OperatingSystem")




For Each objOperatingSystem in colOperatingSystems
rapor.WriteLine("Nom du système d'exploitation: ")
rapor.WriteLine objOperatingSystem.Caption
Next
rapor.WriteBlankLines(1)




end function






Function ecriture_a_la_suite ()




 strComputer = "."
 Set objWMIService = GetObject("winmgmts:" _
 & "{impersonationLevel=impersonate}!\" & strComputer & "\root\cimv2")




 Set colItems = objWMIService.ExecQuery("Select * from Win32_LocalTime")




 For Each objItem in colItems




 Set WSHShell = WScript.CreateObject("WScript.Network")




 Dim fso, fichier, path, FicEntree
 Set fso = CreateObject("Scripting.FileSystemObject") Const ForReading 1, ForWriting 2, ForAppending=8
 path = "

[file://\\serv-sb\journal$\Session_utilisateur\
\\serv-sb\journal$\Session_utilisateur\

]
" & WSHShell.computerName & "" & WSHShell.userName &"" & Replace(Date, "/",".") &""




 FicEntree = "Rapport_de_session.txt"
 
 Set ObjTextStream = fso.OpenTextFile(Path & FicEntree, 8)
 
 Dim NT
 NT = Now




 ObjTextStream.WriteLine("-------------------------------------------------------------------------")
 ObjTextStream.WriteLine("Information sur la connexion à une station blanche - Le "&Now)
 ObjTextStream.WriteLine("-------------------------------------------------------------------------")
 ObjTextStream.WriteBlankLines(1)
 
 ObjTextStream.WriteLine("Heure de la connexion --> "&Now)
 ObjTextStream.WriteBlankLines(1)
 ObjTextStream.WriteLine("Nom de la station blanche: "+ WSHShell.ComputerName)
 
 ObjTextStream.WriteBlankLines(1)
 ObjTextStream.WriteLine("Nom de l'utilisateur: "+ WSHShell.UserName)
 
 ObjTextStream.WriteBlankLines(1)
 
 ObjTextStream.WriteLine
 ObjTextStream.Close
 Set fso = Nothing
 Set ObjTextStream = Nothing
 next
Set fso = Nothing
end function

1 réponse

cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
20 juil. 2006 à 12:55
 Bonjour,

1)  Essaie avec LogEvent

Set WshShell = WScript.CreateObject("WScript.Shell")
rc = runLoginScript()      'Renvoie true si la connexion a réussi.
if rc then
   WshShell.
 LogEvent 
0, "Fin du script d'ouverture de session"
else
   WshShell.
LogEvent
1, "Échec du script d'ouverture de session"
end if

Doc SCRIPT56
La méthode LogEvent renvoie une valeur booléenne (true si l'événement est consigné correctement, false dans le cas contraire). Dans Windows NT/2000, les événements sont consignés dans le journal d'événements de Windows NT. Dans Windows 9x/Me, les événements sont consignés dans WSH.log (situé dans le répertoire Windows). Il existe six types d'événements.

Type |Valeur |----
0, SUCCESS, ----
1, ERROR, ----
2, WARNING, ----
4, INFORMATION, ----
8, AUDIT_SUCCESS, ----
16, AUDIT_FAILURE

2)  dim fso
 Set fso = Nothing

est une aberration => Création d'une variable + libération

3) Pour rappel, malgré l'envoi d'un mail, tu n'as pas validé tes 2 précédents topics,
alors que tu utilises, dans ce script, les réponses fournies dans

http://www.vbfrance.com/infomsg_PROBLEME-POUR-NOMMER-DOSSIER-AVEC-DATE-COURANTE_780393.aspx#2
et
http://www.vbfrance.com/infomsg_ECRIRE-SUITE-DANS-FICHIER-TXT_779712.aspx#3 
 
Si réponse satisfaisante, ne pas oublier de valider la(les) réponse(s).

4) Donc, fait un petit effort si tu veux que l'on t'aide !!!!

Merci.
jean-marc
0
Rejoignez-nous