fabmin
Goto Top

VBScript - Ergebniss in .log ausgeben

Ich brauche einen Befehl, der die Ergebnisse des VBScipt

'* Benötigte Deklarationen  
Set wshNetwork = WScript.CreateObject( "WScript.Network" )  
Set WshShell = WScript.CreateObject("WScript.Shell")  
Company = "Bardusch GmbH&Co.KG Laufwerksmapping"  

'* Ermitteln des Nutzernamens, Computernamens un der Anmeldedomäne  
'* Erfolgt bereits hier, da im Loginscript öfter benötigt  
Do While wshNetwork.username = ""  
  WScript.Sleep 250
Loop
strComputerName  = wshNetwork.computerName
strUserName   = wshNetwork.userName
strDomainName   = wshNetwork.userDomain

'* Aufruf der Subroutine  
Call SubZusammenfassung

'* Die Routine           
Sub SubZusammenfassung ()
'* Benötigte Deklarationen  
	Set colDrives = wshNetwork.EnumNetworkDrives
	Set colPrinters = wshNetwork.EnumPrinterConnections
	Dim CRLF	
	CRLF = Chr(13) & Chr(10)
'* Der Beginn des Wahnsinns ;-)  
	strMsg = "Anmelde Ergebnisse" & CRLF & CRLF & "Benutzername" & Chr(9) & "= " & strUserName & CRLF & "Computername" & Chr(9) & "= " &  strComputerName & CRLF & "Domäne" & Chr(9) & Chr (9) & "= " & strDomainName & CRLF  
'* Verbundene Laufwerke Listen  
	If colDrives.Count = 0 Then
	   strMsg = strMsg & CRLF & "Kein Netzlaufwerk ist verbunden." & CRLF  
	Else
	   strMsg = strMsg & CRLF & "Verbundene Netzlaufwerk(e):" & CRLF  
	   For i = 0 To colDrives.Count - 1 Step 2
	      strMsg = strMsg & CRLF & colDrives(i) & Chr(9) & colDrives(i + 1)
	   Next
	End If
'* Verbundene Drucker Listen  
	If colPrinters.Count = 0 Then
	   strMsg = strMsg & CRLF & CRLF & _
	      "Kein Netzwerk-Drucker ist verbunden." & CRLF  
	Else
	   strMsg = strMsg & CRLF & CRLF & _
	      "Verbundene Netzwerk-Drucker:" & CRLF  
	   For i = 0 To colPrinters.Count - 1 Step 2
	      strMsg = strMsg & CRLF & colPrinters(i) & _
	         Chr(9) & colPrinters(i + 1)
	   Next
	End If
	strMsg = strMsg & CRLF & CRLF & "Dieses Fenster schließt sich in 10 Sekunden automatisch." & CRLF & "Wir wünschen noch einen schönen Arbeitstag"  
	BtnCode = WshShell.PopUp(strMsg,10,Company,64)
End Sub

in ein %MACHINENAME%.log auf \\zbw2ksv01\laufwerke schreibt.
Am liebsten wäre mit gleich, das gemoddete VBScipt.
Danke schonmal face-smile

Content-Key: 15760

Url: https://administrator.de/contentid/15760

Printed on: April 19, 2024 at 07:04 o'clock

Member: gemini
gemini Sep 09, 2005 at 15:51:48 (UTC)
Goto Top
strLog = "\\zbw2ksv01\laufwerke\" & strComputerName & ".log"  
Set objFSO = CreateObject("Scripting.FileSystemObject")  
Set objLog = objFSO.CreateTextFile(strLog, True)
objLog.Write strMSG 
objLog.Close

Nicht enthalten ist hier eine Prüfung, ob das Share erreichbar ist.
Außerdem wird das Log jedesmal überschrieben.

PS: Ich halte nicht sehr viel von Modding. Es sollte aber kein Problem für dich darstellen, das Schnipsel einzubauen.
Member: gemini
gemini Sep 09, 2005 at 16:13:50 (UTC)
Goto Top
Das hat mir jetzt keine Ruhe gelassen.
Logfiles, die überschrieben werden sind es nicht Wert überhaupt geschrieben zu werden.

Function GenLogfileName
strLog = "\\zbw2ksv01\laufwerke\"  
strExt = ".log"  
arrDate = Split(FormatDateTime(Date, 2),".")  
strLogFile = strComputerName & "_" & arrDate(2) & "." & arrDate(1) & "." & arrDate(0)  
strTemp = strLogFile
For i = 001 To 999
    If objFSO.FileExists(strLog & strLogFile & strExt) Then
        strLogFile = strTemp & "_" & i  
    Else
        GenLogFileName = strLog & strLogFile & strExt
        Exit Function
    End If
Next
End Function

Generiert einen Namen für das Logfile in der Form <<a>computername<a>>_2005.09.09.log
Wenn das Logfile bereits existiert wird der Name um einen dreistelligen Zähler erweitert.
Member: Biber
Biber Sep 09, 2005 at 17:07:43 (UTC)
Goto Top
@gemini

Das hat mir jetzt keine Ruhe gelassen, Logfiles, die überschrieben werden sind
es nicht Wert überhaupt geschrieben zu werden.
Seh ich auch so.

Aber, wenn ich FaBMiN richtig verstanden habe, will er sicherlich alle Rechner protokollieren lassen, sinnvollerweise auch nach Tagen getrennt, aber in eine LogDatei je Tag. Nicht in eine je Computer und Anmeldung und Tag. Der %Compostername% steht doch schon in Stefans Script-Part. Also dann müsste doch die Ermittlung des Tages-Log-Namens reichen:
Function GenLogfile4AllName 
strLogPath = "\\zbw2ksv01\laufwerke\"   
strExt = ".log"   
arrDate = Split(FormatDateTime(Date, 2),".")   
strLogFile =  arrDate(2) & "-" & arrDate(1) & "-" & arrDate(0)   
GenLog4AllFileName = strLogPath & strLogFile & strExt 
End Function 

Gibt den Namen der heutigen LogDatei zurück in der Form
"\\server\freigabepfad\2005-09-09.log"
Und oben in dem anderen Schnipsel ein
 
...
If !objFSO.FileExists(strTodaysLogfile) Then
   Set  objLog = CreateTextFile( strTodaysLogFile, True)
else
   Set objLog = OpenTextFile( strTodaysLogFile,,FOR_APPEND) ' oder wie immer das FOR_APPEND in *vbs heißen mag  
End If
objLog.Write
objLog.Close
..
Oder mach ich jetzt einen Denkfehler?
[Edit]
Ganz vergessen:
Schönes und baldiges Wochenende an alle! face-wink
Biber
[/Edit]
Member: gemini
gemini Sep 09, 2005 at 17:48:08 (UTC)
Goto Top
@Biber
Er wollte dass das Script die Daten
in ein %MACHINENAME%.log auf \\zbw2ksv01\laufwerke schreibt.
So habe ich das verstanden und so hab ich ihm im ersten Post auch gemacht.

Man könnte es natürlich auch "Je Client Pro Monat" schreiben oder mit AD-Einsatz nach Gruppenmitgliedschaft|Standort. Der Spielleidenschaft sind hier keine Grenzen gesetzt face-wink

~~~~~~~~~~~~~~
Davon abgesehen, dass mit persönlich der Wert von Logfiles dieser Art verschlossen bleibt.
Wer sich wann angemeldet hat, sehe ich im Ereignisprotokoll.
Wenn das Laufwerks-/Druckermapping oder sonstwas nicht funktioniert, erfahre ich das lange bevor ich das Log gelesen habe.

FOR_APPEND meint zum Anfügen, aber das muss ich dir sicher nicht erklären face-wink face-wink
Wenn du ForAppending einsetzt musst du ihm vorher den Wert 8 zuweisen, also
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Die 8 macht nichts anderes als ans Ende der Datei zu schreiben, also in etwa
DiesIstEinText >> LogFile.log
Member: Biber
Biber Sep 09, 2005 at 22:24:18 (UTC)
Goto Top
@gemini
Thx für die Erklärung und Du hast natürlich recht - hatte ich überlesen mit dem "> in ein %MACHINENAME%.log auf \\zbw2ksv01\laufwerke"

Zum Sinn oder Unsinn von Logfiles könnten wir sicherlich auch einen eigenen lustigen Thread aufmachen.
Habe auch schon mal -wahrscheinlich nicht als einziger hier im Forum- LogFiles auf Platten gefunden, die für die meisten gängigen Editoren eine echte Herausforderung sind (>64 MByte bis hin zu einer 1,2 GigaByte *.log-Datei, deren Dateieigner seit 1 Jahr nicht mehr im Unternehmen war)
Mein Lieblings-Logverzeichnis ist auch /dev/null.
Member: gemini
gemini Sep 09, 2005, updated at Oct 17, 2012 at 13:53:14 (UTC)
Goto Top
@Biber
Na, mit nem 1,2 GB Log hast auf jeden Fall was zu lesen für lange Winterabende face-wink

@FaBMiN
Gehört zwar nicht zum Thread, aber Gratulation zu deinem sehr gelungenen RIS-Tut.
Microsoft Windows XP Service Pack 2 Unattended Installation RIS
Habs erst jetzt gesehen und gleich mal gebookmarkt.
Member: FaBMiN
FaBMiN Sep 12, 2005 at 05:44:56 (UTC)
Goto Top
 '* Benötigte Deklarationen  
Set MyFiles = CreateObject("Scripting.FileSystemObject")  
Set wshNetwork = WScript.CreateObject( "WScript.Network" )  
Set WshShell = WScript.CreateObject("WScript.Shell")  
Company = "Bardusch GmbH&Co.KG Laufwerksmapping"  
 

'* Ermitteln des Nutzernamens, Computernamens un der Anmeldedomäne  
'* Erfolgt bereits hier, da im Loginscript öfter benötigt  
Do While wshNetwork.username = ""  
WScript.Sleep 250
Loop
strComputerName = wshNetwork.computerName
strUserName = wshNetwork.userName
strDomainName = wshNetwork.userDomain
 
If Not MyFiles.FileExists("\\zbw2ksv01\laufwerke\" & strComputerName & ".log") Then MyFiles.CreateTextFile("\\zbw2ksv01\laufwerke\"& strComputerName & ".log")  
 
Set logfile = MyFiles.OpenTextFile("\\zbw2ksv01\laufwerke\" & strComputerName & ".log",8)  
 
'* Aufruf der Subroutine  
Call SubZusammenfassung
 
'* Die Routine  
Sub SubZusammenfassung ()
'* Benötigte Deklarationen  
Set colDrives = wshNetwork.EnumNetworkDrives
Set colPrinters = wshNetwork.EnumPrinterConnections
Dim CRLF
CRLF = Chr(13) & Chr(10)
'* Der Beginn des Wahnsinns  
strMsg = cRLF & "------------------" & CRLF & "Anmelde Ergebnisse" & CRLF & CRLF & "Benutzername" & Chr(9) & "= " & strUserName & CRLF & "Computername" & Chr(9) & "= " & strComputerName & CRLF & "Domäne" & Chr(9) & Chr (9) & "= " & strDomainName & CRLF  
 
'* Verbundene Laufwerke Listen  
If colDrives.Count = 0 Then
strMsg = strMsg & CRLF & "Kein Netzlaufwerk ist verbunden." & CRLF  
Else
strMsg = strMsg & CRLF & "Verbundene Netzlaufwerk(e):" & CRLF  
For i = 0 To colDrives.Count - 1 Step 2
strMsg = strMsg & CRLF & colDrives(i) & Chr(9) & colDrives(i + 1)
Next
End If
'* Verbundene Drucker Listen  
If colPrinters.Count = 0 Then
strMsg = strMsg & CRLF & CRLF & _
"Kein Netzwerk-Drucker ist verbunden." & CRLF  
Else
strMsg = strMsg & CRLF & CRLF & _
"Verbundene Netzwerk-Drucker:" & CRLF  
For i = 0 To colPrinters.Count - 1 Step 2
strMsg = strMsg & CRLF & colPrinters(i) & _
Chr(9) & colPrinters(i + 1)
Next
logfile.write(strMsg)
End If
logfile.close
strMsg = strMsg & CRLF & CRLF & "Dieses Fenster schließt sich in 10 Sekunden automatisch." & CRLF & "Wir wünschen noch einen schönen Arbeitstag"  
BtnCode = WshShell.PopUp(strMsg,10,Company,64)
End Sub 


@gemini ...haste auch artig bewertet? ;)
Ich hab das jetzt mal so gelöst.Danke an alle eifrigen helfer face-smile
...gelogen - der Harry (Inti31) hats gelöst face-smile
Member: Inti31
Inti31 Sep 12, 2005 at 06:38:29 (UTC)
Goto Top
...soso... - So hast DU das jetzt gelöst... face-smile

Gruß Inti31
Member: FaBMiN
FaBMiN Sep 12, 2005 at 06:45:48 (UTC)
Goto Top
habs verbessert ;) *auf Knien seinen Gott anbetend*
Danke :D
Member: Biber
Biber Sep 12, 2005 at 09:05:11 (UTC)
Goto Top
@FaBMiN
Zwei Dinge würde ich noch ändern:

1) Keine Variable verschwenden für den Zeilenumbruch. Da gibt es schon die vordefinierte vbCRLF .
2) Die Abschlussmeldung ändern von
ALT: "Dieses Fenster schließt sich in 10 Sekunden automatisch."
"Wir wünschen noch einen schönen Arbeitstag"

auf
NEU: "Mein Tagewerk ist in 10 Sekunden vollbracht.."
"Du hast noch fast 10 Stunden Arbeitstag vor Dir. Viel Spaß"


Stressarmen Wochenbeginn allen Admins und Adminen
Frank / der Biber aus Bremen
Member: FaBMiN
FaBMiN Sep 12, 2005 at 09:10:56 (UTC)
Goto Top
...lol
Es lacht grade eine ganze Abteilung mit Dir face-smile und mich hats vom stuhl gehauen ;=