VB Script mit Scriptomat von MS erstellt
Hallo,
ich mit dem Tool Scriptomatic von MS ein VBS Script erstellt welches mir Informationen von Servern auslesen, sowie nachschauen ob im Eventlog Fehlercodes sind. Da ich diese INformationen mehrmals im Monat ziehen will. Momentan wird es als HTML Output angezeigt.
Langfristig möchte ich es als XML Fiel ablegen und die INformationen weiter verarbeiten
Wenn ich das Script über run starte macht es die Aufgaben einwandfrei. Ich habe es dann als VBS gespeichert. Rufe ich es dann über einen Doppelklick auf, bekomme ich nur einzelne Fenster mit den Informationen und dem OK Button angezeigt.
Wie kann ich es aufrufen um den gewünschten Effekt zu erzielen. Am liebsten wäre es mir es als ein exe File abzu speichern.
Habe zum erstenmal ein solches Script erstellt.
Wäre toll wenn einer eine Lösung dafür hätte.
Anbei das Script
[Edit Biber] Schnipsel auf umformtiert. Einiges wurde sonst falsch angezeigt. [/Edit]
ich mit dem Tool Scriptomatic von MS ein VBS Script erstellt welches mir Informationen von Servern auslesen, sowie nachschauen ob im Eventlog Fehlercodes sind. Da ich diese INformationen mehrmals im Monat ziehen will. Momentan wird es als HTML Output angezeigt.
Langfristig möchte ich es als XML Fiel ablegen und die INformationen weiter verarbeiten
Wenn ich das Script über run starte macht es die Aufgaben einwandfrei. Ich habe es dann als VBS gespeichert. Rufe ich es dann über einen Doppelklick auf, bekomme ich nur einzelne Fenster mit den Informationen und dem OK Button angezeigt.
Wie kann ich es aufrufen um den gewünschten Effekt zu erzielen. Am liebsten wäre es mir es als ein exe File abzu speichern.
Habe zum erstenmal ein solches Script erstellt.
Wäre toll wenn einer eine Lösung dafür hätte.
Anbei das Script
On Error Resume Next
'Auslesen der HW Informationen und Schreiben einer HTML Datei
'----------------------------
strComputer = "."
Public Regpfad
Dim Client
Dim Clientname
Dim WindowsVersion
Dim WSHEnvOS
Dim WSHEnvPrg
Dim fs
Dim fso
Set WSHShell = WScript.CreateObject("WScript.Shell")
Set WSHEnvOS = WSHShell.Environment("Process")
Set WSHEnvPrg = WSHShell.Environment("Process")
set fs = CreateObject ("Scripting.FileSystemObject")
Set WSHEnvPrg = WSHShell.Environment("Process")
set fs = CreateObject ("Scripting.FileSystemObject")
OS = WshEnvPrg("OS")
if OS="Windows_NT" then
Client = WshEnvOS("COMPUTERNAME")
Set fso = CreateObject("Scripting.FileSystemObject")
set WshShell = CreateObject("WScript.Shell")
RegPfad = "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\ProductName"
WindowsVersion = WshShell.RegRead(RegPfad)
RegPfad = "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\CSDVersion"
ServicePack = WshShell.RegRead(RegPfad)
RegPfad = "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\SystemRoot"
Systemroot = WshShell.RegRead(RegPfad)
RegPfad = "HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Version"
IeVs = Wshshell.RegRead(RegPfad)
'Wscript.Echo IeVs
Windowsversion=Windowsversion & ", " & ServicePack
end if
if not OS="Windows_NT" then
Set fso = CreateObject("Scripting.FileSystemObject")
set WshShell = CreateObject("WScript.Shell")
RegPfad = "HKEY_LOCAL_MACHINE\Network\Logon\Username"
Client = WshShell.RegRead(RegPfad)
RegPfad = "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Version"
WindowsVersion = WshShell.RegRead(RegPfad)
RegPfad = "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\SystemRoot"
Systemroot = WshShell.RegRead(RegPfad)
RegPfad = "HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Version"
IeVs = Wshshell.RegRead(RegPfad)
end if
Function GetOfficeVer()
sRegPre = "HKLM\SOFTWARE\Microsoft\Office\"
sRegPost = "\Common\InstallRoot\"
Select Case True
Case RegKeyExists(sRegPre & "11.0" & sRegPost)
sOfficeVer = "2003"
Case RegKeyExists(sRegPre & "10.0" & sRegPost)
sOfficeVer = "2002"
Case RegKeyExists(sRegPre & "9.0" & sRegPost)
sOfficeVer = "2000"
Case RegKeyExists(sRegPre & "8.0" & sRegPost)
sOfficeVer = "97"
Case Else
sOfficeVer = "Keine"
End Select
GetOfficeVer = sOfficeVer
End Function
Function RegKeyExists(ByVal sRegKey)
' Returns True or False based on the existence of a registry key.
Dim sDescription, oShell
Set oShell = CreateObject("WScript.Shell")
RegKeyExists = True
sRegKey = Trim (sRegKey)
If Not Right(sRegKey, 1) = "\" Then
sRegKey = sRegKey & "\"
End If
On Error Resume Next
oShell.RegRead "HKEYNotAKey\"
sDescription = Replace(Err.Description, "HKEYNotAKey\", "")
Err.Clear
oShell.RegRead sRegKey
RegKeyExists = sDescription <> Replace(Err.Description, sRegKey, "")
On Error Goto 0
End Function
clientname = "C:\log\" & client & ".txt"
'Pfad wird erstellt, wenn nicht vorhanden
'----------------------------------------
WshShell.Run "%comspec% /c if not exist C:\log\. md C:\log",0,true
'Windows 2000/XP/NT
'die Inventarisierungsdatei der Rechner wird bei jedem Neustart gelöscht
'-----------------------------------------------------------------------
if fs.FileExists(clientname) then
fs.DeleteFile(clientname)
end if
set fs=nothing
set fs = CreateObject ("Scripting.FileSystemObject")
set clientlog = fs.OpenTextFile (clientname,8,true)
'Auslesen der Windows-Hardwareinformationen
'------------------------------------------
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystemProduct",,48)
For Each objItem in colItems
modell=objItem.Vendor & " " & objItem.Name
serial="Seriennummer: " & objItem.IdentifyingNumber
Next
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_LogicalDisk",,48)
For Each objItem in colItems
if objItem.Caption = "C:" then festplatteC= objItem.Caption & " " & Round(objItem.FreeSpace /1024 /1024 /1024, 2) & " / " & Round(objItem.Size /1024 /1024 /1024,2) & " GByte"
if objItem.Caption = "D:" then festplatteD= objItem.Caption & " " & Round(objItem.FreeSpace /1024 /1024 /1024, 2) & " / " & Round(objItem.Size /1024 /1024 /1024,2) & " GByte"
if objItem.Caption = "E:" then festplatteE= objItem.Caption & " " & Round(objItem.FreeSpace /1024 /1024 /1024, 2) & " / " & Round(objItem.Size /1024 /1024 /1024,2) & " GByte"
if objItem.Caption = "F:" then festplatteF= objItem.Caption & " " & Round(objItem.FreeSpace /1024 /1024 /1024, 2) & " / " & Round(objItem.Size /1024 /1024 /1024,2) & " GByte"
Next
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Processor",,48)
For Each objItem in colItems
system= objItem.Name & ": " & objItem.CurrentClockSpeed & " Mhz"
Next
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_LogicalMemoryConfiguration",,48)
For Each objItem in colItems
speicher= "Gesamtspeicher (MB): " & objItem.TotalPhysicalMemory /1000
Next
'Schreiben in die clientdatei
'----------------------------
WScript.Echo "IT-System Check fuer"
WScript.Echo "=========================================="
WScript.Echo "Computer: " & Client
WScript.Echo "=========================================="
WScript.Echo "Datum: " & now
WScript.Echo " "
WScript.Echo " "
WScript.Echo modell
WScript.Echo serial
WScript.Echo system
WScript.Echo speicher
WScript.Echo " "
WScript.Echo " "
WScript.Echo "Festplatte verfuegbar/insgesamt " & FestplatteC
WScript.Echo "Festplatte verfuegbar/insgesamt " & FestplatteD
WScript.Echo "Festplatte verfuegbar/insgesamt " & FestplatteE
WScript.Echo "Festplatte verfuegbar/insgesamt " & FestplatteF
WScript.Echo " "
WScript.Echo " "
WScript.Echo "Betriebssystem: " & Windowsversion
WScript.Echo "WindowsVerzeichnis: " & Systemroot
WScript.Echo "Internet Explorer Vs: " & IeVs
WScript.Echo "Office Vs: " & GetOfficeVer()
WScript.Echo " "
WScript.Echo " "
'Auslesen des EventLogs und Sichern dieser
'----------------------------
Const wbemFlagReturnImmediately = &h10
Const wbemFlagForwardOnly = &h20
arrComputers = Array("Technik09")
For Each strComputer In arrComputers
WScript.Echo
WScript.Echo "=========================================="
WScript.Echo "=========================================="
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_NTLogEvent where EventType=1")
' Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_NTLogEvent", "WQL", _
' wbemFlagReturnImmediately + wbemFlagForwardOnly)
For Each objItem In colItems
WScript.Echo "Category: " & objItem.Category
WScript.Echo "CategoryString: " & objItem.CategoryString
WScript.Echo "ComputerName: " & objItem.ComputerName
strData = Join(objItem.Data, ",")
WScript.Echo "Data: " & strData
WScript.Echo "EventCode: " & objItem.EventCode
WScript.Echo "EventIdentifier: " & objItem.EventIdentifier
WScript.Echo "EventType: " & objItem.EventType
strInsertionStrings = Join(objItem.InsertionStrings, ",")
WScript.Echo "InsertionStrings: " & strInsertionStrings
WScript.Echo "Logfile: " & objItem.Logfile
WScript.Echo "Message: " & objItem.Message
WScript.Echo "RecordNumber: " & objItem.RecordNumber
WScript.Echo "SourceName: " & objItem.SourceName
WScript.Echo "TimeGenerated: " & WMIDateStringToDate(objItem.TimeGenerated)
WScript.Echo "TimeWritten: " & WMIDateStringToDate(objItem.TimeWritten)
WScript.Echo "Type: " & objItem.Type
WScript.Echo "User: " & objItem.User
WScript.Echo
Next
Next
Function WMIDateStringToDate(dtmDate)
WScript.Echo dtm:
WMIDateStringToDate = CDate(Mid(dtmDate, 5, 2) & "/" & _
Mid(dtmDate, 7, 2) & "/" & Left(dtmDate, 4) _
& " " & Mid (dtmDate, 9, 2) & ":" & Mid(dtmDate, 11, 2) & ":" & Mid(dtmDate,13, 2))
End Function
dtmThisDay = Day(Date)
dtmThisMonth = Month(Date)
dtmThisYear = Year(Date)
strBackupName = dtmThisYear & "_" & dtmThisMonth _
& "_" & dtmThisDay
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate,(Backup)}!\\" & _
strComputer & "\root\cimv2")
Set colLogFiles = objWMIService.ExecQuery _
("Select * from Win32_NTEventLogFile " _
& "Where LogFileName='Application'")
For Each objLogfile in colLogFiles
objLogFile.BackupEventLog("c:\log\" _
& strBackupName & _
"_application.evt")
objLogFile.ClearEventLog()
WScript.Echo "File saved in c:\log: " & strBackupName & _
"_application.evt"
Next
Set colLogFiles = objWMIService.ExecQuery _
("Select * from Win32_NTEventLogFile " _
& "Where LogFileName='System'")
For Each objLogfile in colLogFiles
objLogFile.BackupEventLog("c:\log\" _
& strBackupName & _
"_system.evt")
objLogFile.ClearEventLog()
WScript.Echo "File saved in c:\log: " & strBackupName & _
"_system.evt"
Next
[Edit Biber] Schnipsel auf umformtiert. Einiges wurde sonst falsch angezeigt. [/Edit]
Please also mark the comments that contributed to the solution of the article
Content-Key: 52220
Url: https://administrator.de/contentid/52220
Printed on: April 26, 2024 at 18:04 o'clock
4 Comments
Latest comment
Es ist ein Skript, also keine EXE.
Aber was spricht gegen cscript.exe namedesskripts.vbs ?
Und wscript.echo gibt immer im Fenster/Messagebox aus.
Die Output-Funktionen XML, HTML, Excel etc. der Scriptomatic 2 sind in der Scriptomatic integriert, nicht im generierten VBS Code.
Da hilft nur selber die Ausgabe entsprechend umzuprogrammieren.
Aber was spricht gegen cscript.exe namedesskripts.vbs ?
Und wscript.echo gibt immer im Fenster/Messagebox aus.
Die Output-Funktionen XML, HTML, Excel etc. der Scriptomatic 2 sind in der Scriptomatic integriert, nicht im generierten VBS Code.
Da hilft nur selber die Ausgabe entsprechend umzuprogrammieren.
Ich habe immer Ideen Manchmal bessere, manchmal ...
VBS kann Daten aus der Registry auslesen:
Set wshshell = CreateObject("Wscript.Shell")
wert = wshshell.RegRead("HKLM\SOFTWARE\TrendMicro\PC-cillinNTCorp\CurrentVersion\Misc.\ProgramVer")
RegRead gibt String oder Zahl zurück, je nach Wert in der Registry (was bei Binary zurückkommt, keine Ahnung)
Also einfach mit auslesen.
VBS kann Daten aus der Registry auslesen:
Set wshshell = CreateObject("Wscript.Shell")
wert = wshshell.RegRead("HKLM\SOFTWARE\TrendMicro\PC-cillinNTCorp\CurrentVersion\Misc.\ProgramVer")
RegRead gibt String oder Zahl zurück, je nach Wert in der Registry (was bei Binary zurückkommt, keine Ahnung)
Also einfach mit auslesen.