Translations of this page:

Dump some Windows hardware info in DokuWiki format



Script (sys2wiki.vbs) um Hardware Infos unter Windows in DokuWiki kompatiblen Format auszulesen.

' *********************************************************
' VERSION:      0.2
' CREATED:      01.07.2007
' LAST UPDATED: 05.07.2007
' AUTHOR:       Karsten Schoeke
' DECRIPTION:   Das Script scannt das System und gibt die Infos
'               im Dokuwiki-Format aus. 
'               Nach dem Durchlauf oeffnet notepad und die Infos koennen
'               direkt ins Wiki kopiert werden.
' PARAMS:       /H Hostname (optional, default localhost) remote only for administrators
'               /F Filename (optional, default hostinfo.txt)
'               /U Username (for emailaddress, default username)
'               /? Help
'
' *********************************************************

' Variablen und Constanten definieren
Const strHL = "===="
Dim strFileName, strDateiname, strComputername, strUserName, strUserDomainName
Dim strHWSerialNumber, strHWReleaseDate
Dim strHWManufacturer, strHWModel, strHWTotalPhysicalMemory
Dim strHostname, strOperatingsystem, strServicepack, strManufacturer
Dim intCPUnumber, strCPUname, strCPUspeed
Dim strPFFileSize
Dim strMACAddress, strNICName, strIPAddress, strNIC
Dim strPCI, strIDE, strSCSI
Dim strDisk
 
' Alle parameter auslesen
Do While i < Wscript.Arguments.Count
	' Hostname
	If Ucase(WScript.Arguments(i)) = "/H" or Ucase(WScript.Arguments(i)) = "-H" then
		i = i + 1
		strComputername = WScript.Arguments(i)
	' Textfile
	ElseIf WScript.Arguments(i) = "/F" or WScript.Arguments(i) = "-F" Then
		i = i + 1
		strFileName = WScript.Arguments(i)
	' Username
	ElseIf WScript.Arguments(i) = "/U" or WScript.Arguments(i) = "-U" Then
		i = i + 1
		strUserName = WScript.Arguments(i)
	ElseIf WScript.Arguments(i) = "/?" or WScript.Arguments(i) = "-?" Then
		Call About()
		WScript.Quit(1)
	End If
	i = i+1
Loop
 
'Computername ermitteln
Dim objWSHShell	: Set objWSHShell	= WScript.CreateObject("WScript.Shell")
Dim objEnv	: Set objEnv	= objWSHShell.Environment("Process")
If Len(strComputername) = 0 Then strComputername = objEnv("COMPUTERNAME")
If Len (strUserName) = 0 Then strUsername = objEnv("USERNAME")
strUserDomainName = objEnv("USERDNSDOMAIN")
 
' Dokuwiki File festlegen
Dim objFs	: Set objFs	= WScript.CreateObject("Scripting.FileSystemObject")
If Len(strFileName) = 0 Then strFilename = "hostinfo.txt"
strDateiname = objFs.GetBaseName(strFileName) 
 
' WMI 
Dim objWMI	: Set objWMI	= GetObject("winmgmts:{impersonationLevel=impersonate}!//" & strComputerName & "/root/cimv2")
 
'BIOS-Infos ermitteln
wql = "select Manufacturer, SerialNumber, ReleaseDate from Win32_BIOS"
Set HWSet = objWMI.ExecQuery(wql)
For each HW in HWSet
	strHWSerialNumber = HW.SerialNumber
	'leeren String abfangen
        If (InStr(HW.ReleaseDate,"000") => 1) Then
        	strHWReleaseDate = WMIDateStringToDate(HW.ReleaseDate)
        End If
        If Len(strHWReleaseDate) = 0 Then strHWReleaseDate = "unbekannt"
Next
 
'WEITERE Hardwareinfos ermitteln
wql = "select Manufacturer, Model, TotalPhysicalMemory from Win32_ComputerSystem"
Set HWSet = objWMI.ExecQuery(wql)
For each HW in HWSet
	strHWManufacturer = HW.Manufacturer
	strHWModel = HW.Model
	strHWTotalPhysicalMemory = ChangeMemorySize(HW.TotalPhysicalMemory)
Next
 
'Informationen über das OS ermitteln
wql = "select CSName, Caption, Version, BuildNumber, CSDVersion, Manufacturer from Win32_OperatingSystem"
Set OSSet = objWMI.ExecQuery(wql)
For each OS in OSSet
	strHostname = OS.CSName
	strOperatingsystem = OS.Caption & " - " & OS.Version & " - " & OS.BuildNumber
	strServicepack = OS.CSDVersion
	strManufacturer = OS.Manufacturer
	If Len(strServicepack) = 0 Then strServicepack = "ohne Servicepack"
Next
 
'CPU Infos ermitteln
wql = "select Name, CurrentClockSpeed from Win32_Processor"
Set CPUSet = objWMI.ExecQuery(wql)
For each CPU in CPUSet
        intCPUnumber = intCPUnumber + 1
	strCPUname = LTrim(CPU.Name)
	strCPUspeed = CPU.CurrentClockSpeed
Next
 
'Pagefileinfos ermitteln
wql = "select FileSize from Win32_PageFile"
Set PFSet = objWMI.ExecQuery(wql)
For each PF in PFSet
	strPFFileSize = ChangeMemorySize(PF.Filesize)
Next
 
'NIC Infos ermitteln
wql = "select * from Win32_NetworkAdapter"
Set NICSet = objWMI.ExecQuery(wql)
For each NIC in NICSet
        If (NIC.AdapterType = "Ethernet 802.3") Then
            If InStr(NIC.ProductName,"Paketplaner")=0 And InStr(NIC.ProductName,"1394")=0 and InStr(NIC.ProductName,"Net6")=0 Then
                  strMACAddress = NIC.MACAddress
                  strNICName = NIC.ProductName
                  'I/P Configuration für aktuelle card ermitteln
                  twql = "select * from Win32_NetworkAdapterConfiguration where IPEnabled = True and Index = " & NIC.Index
                  Set IPSet = objWMI.ExecQuery(twql)
                    For each IP in IPSet
                      If not IsEmpty(IP.IPAddress) Then strIPAddress = Join(IP.IPAddress, ",")
                    Next
                  strNIC = strNIC & "| " & NIC.ProductName & " | " & strIPAddress & " | " & NIC.MACAddress & " | " & vbCrLf
            End If
        End If
Next
 
'Devices auslesen
wql = "select * from Win32_pnpEntity"
Set DeviceSet = objWMI.ExecQuery(wql)
For each Device in DeviceSet
        'nur PCI Geraete und keine Standardsystemgeraete auflisten
        If (InStr(Device.DeviceID,"PCI\")=1) and (InStr(Device.Manufacturer,"Standard")=0) Then
                  strPCI = strPCI & "| " & Device.Manufacturer & " | " & Device.Name & " | " & vbCrLf
        End If
        'nur IDE Geraete auflisten
        If (InStr(Device.DeviceID,"IDE\")=1) Then
                  strIDE = strIDE & "| " & Device.Description & " | " & Device.Name & " | " & vbCrLf
        End If
        'nur SCSI Geraete auflisten
        If (InStr(Device.DeviceID,"SCSI\")=1) Then
                  strSCSI = strSCSI & "| " & Device.Description & " | " & Device.Name & " | " & vbCrLf
        End If
Next
 
'lokales Filesystem auslesen
wql = "select * from Win32_LogicalDisk"
Set DiskSet = objWMI.ExecQuery(wql)
For each Disk in DiskSet
        'nur lokale Festplatten auflisten
        If (InStr(Disk.Description,"Lo")=1) Then
          strDisk = strDisk & "| " & Disk.DeviceID & " | " & Disk.FileSystem & " | " & ChangeDiskSize(Disk.Size) & " | " & vbCrLf
        End If
Next
 
' Informationen in WikiDatei schreiben
Dim wikifile	: Set wikifile	= objFs.CreateTextFile(strDateiname, True)
' Beginne mit General
wikifile.WriteLine strHL &  " General " & strHL
wikifile.WriteLine "^ Hostname | " & strHostname & "." & strUserDomainName & " | "
wikifile.WriteLine "^ Hersteller | " & strHWManufacturer & " - " & strHWModel & " | "
wikifile.WriteLine "^ Seriennummer | " & strHWSerialNumber & " | "
wikifile.WriteLine "^ BIOS Release | " & strHWReleaseDate & " | "
wikifile.WriteLine "^ CPU | " & strCPUname & " | "
wikifile.WriteLine "^ MHZ | " & strCPUspeed & " Mhz | "
wikifile.WriteLine "^ # CPU Core | " & intCPUnumber & " | "
wikifile.WriteLine "^ RAM | " & strHWTotalPhysicalMemory & " | "
wikifile.WriteLine "^ Auslagerungsdatei | " & strPFFileSize & " | "
wikifile.WriteLine "^ System | " & strManufacturer & " | "
wikifile.WriteLine "^ OS | " & strOperatingsystem & " | "
wikifile.WriteLine "^ Servicepack | " & strServicepack & " | "
wikifile.WriteLine " "
wikifile.WriteLine "verantwortlich: <" & strUserName & "@" & strUserDomainName & ">"
wikifile.WriteLine " "
' weiter mit network info's
wikifile.WriteLine strHL &  " Network " & strHL
wikifile.WriteLine "^ Name ^ IP-Adresse ^ MAC-Adresse ^"
wikifile.Write strNIC
' weiter mit PCI-Bus info's
wikifile.WriteLine strHL &  " PCI Bus Hardware " & strHL
wikifile.WriteLine "^ Hersteller ^ Details ^"
wikifile.Write strPCI
' weiter mit dem Filesystem
wikifile.WriteLine strHL &  " Filesystem " & strHL
wikifile.WriteLine "^ Name ^ Type ^ Groesse ^"
wikifile.Write strDisk
' weiter mit den IDE Devices
If not(IsEmpty(strIDE)) Then
	wikifile.WriteLine strHL &  " IDE Devices " & strHL
	wikifile.WriteLine "^ Typ ^ Details ^"
	wikifile.Write strIDE
End If
' weiter mit SCSI Devices
If not(IsEmpty(strSCSI)) Then
	wikifile.WriteLine strHL &  " SCSI Devices " & strHL
	wikifile.WriteLine "^ Typ ^ Details ^"
	wikifile.Write strSCSI
End If
 
'Wiki Datei anzeigen
objWSHShell.run "notepad """ & strDateiname & """" , , True
 
' Ausgabefile schliessen Objekte terminieren
 wikifile.Close
 Set objWSHShell = Nothing
 Set objEnv = Nothing
 Set objFs = Nothing
 Set objWMI = Nothing
 Set wikifile = Nothing
 
 
'**************************************************************'
' Functionen                                                   '
'**************************************************************'

Function About
	WScript.Echo "sys2wiki Script by Karsten Schoeke <karsten.schoeke(at)geobasis-bb.de>" & vbLF & vbLF & _
	 "Usage:	sys2wiki.vbs [/H] [/F [/?]" & vbLF & _
	 "	/H	-	Hostname (default localhost) remote only for administrators" & vbLF & _
	 "	/F	-	Filename for wikifile (default hostinfo.txt)" & vbLF & _
	 "	/U	-	Username for emailaddress, only for remote access" & vbLF & _
	 "	/?	-	This message"
End Function
 
'Formatieren des WMI Datumsformat
Function WMIDateStringToDate(dtmDate)
	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
 
'Umrechnen von Bits nach MB, GB, usw. incl. Format der Ausgabe
Function ChangeMemorySize(MemorySize)
Dim intMemorySize
	If MemorySize >= 1000000000 Then 
	  intMemorySize = CLng(MemorySize/1000000000)
	  ChangeMemorySize = CStr(intMemorySize) & " GB"
	ElseIf MemorySize >= 1000000 Then
	  intMemorySize = CLng(MemorySize/1000000)	
	  ChangeMemorySize = CStr(intMemorySize) & " MB"
	Else
	  intMemorySize= CLng(MemorySize/100)	
	  ChangeMemorySize = CStr(intMemorySize) & " kB"
	End if
End Function 
 
'Umrechnen von Bits nach MByte, GByte, usw. incl. Format der Ausgabe
Function ChangeDiskSize(DiskSize)
Dim intDiskSize
	If DiskSize >= 1099511627776 Then 
	  intDiskSize = CLng(DiskSize/1099511627776)
	  ChangeDiskSize = CStr(intDiskSize) & " TByte"
	ElseIf DiskSize >= 1073741824 Then 
	  intDiskSize = CLng(DiskSize/1073741824)
	  ChangeDiskSize = CStr(intDiskSize) & " GByte"
	ElseIf DiskSize >= 1048576 Then
	  intDiskSize = CLng(DiskSize/1048576)	
	  ChangeDiskSize = CStr(intDiskSize) & " MByte"
	Else
	  intDiskSize= CLng(DiskSize/1024)	
	  ChangeDiskSize = CStr(intDiskSize) & " kByte"
	End if	
End Function

Beispiel

Das Script kann man z.B wie folgt aufrufen

%windir%\System32\runas.exe /user:<domainname>\<adminuser> "wscript \"C:\sys2wiki.vbs\" /H <Hostname /F <Filename> /U <Hostverantworliche User>"

Zu beachten ist wenn Remote abgefragt werden soll, das der User administrative Rechte innerhalb der Domain hat.

und das ganze sieht dann so aus


General

Hostname SERVERNAME.DOMAIN.LOCAL
Hersteller Intel - L440GX0
Seriennummer 176767867
BIOS Release 17.02.2003
CPU Intel(R) Pentium(R) III processor
MHZ 995 Mhz
# CPU Core 2
RAM 1 GB
Auslagerungsdatei 537 MB
System Microsoft Corporation
OS Microsoft(R) Windows(R) Server 2003, Standard Edition - 5.2.3790 - 3790
Servicepack Service Pack 1

verantwortlich: <admin@DOMAIN.LOCAL>

Network

Name IP-Adresse MAC-Adresse
Intel(R) 82559 Fast Ethernet LAN on Motherboard 10.13.0.152 00:D0:B8:A7:CF:38

PCI Bus Hardware

Hersteller Details
Intel Intel 82443GX Pentium(R) II Xeon™ Processor to AGP Controller
ICP vortex GDT6x18RS Disk Array Controller
Adaptec Adaptec AIC-7896/AIC-7897 - Ultra2 SCSI
Adaptec Adaptec AIC-7896/AIC-7897 - Ultra2 SCSI
Intel Intel(R) 82559 Fast Ethernet LAN on Motherboard
Intel Intel(R) PRO/1000 F Server Adapter
Intel Intel 82371AB/EB PCI to ISA bridge (ISA mode)
Intel Intel(R) 82371AB/EB PCI Bus Master IDE Controller
Intel Intel® 82371AB/EB PCI to USB Universal Host Controller
Cirrus Logic Cirrus Logic 5480 Compatible Graphics Adapter

Filesystem

Name Type Groesse
C: NTFS 17 GByte
D: NTFS 18 GByte
E: NTFS 465 GByte

IDE Devices

Typ Details
CD-ROM Drive DVD-ROM

SCSI Devices

Typ Details
Controller Management Device Controller Management Device
Disk drive ICP Drive #00 HA #0 SCSI Disk Device
Disk drive IFT A08U-G1410 SCSI Disk Device
Quantum Super DLTtape™ SDLT 320 Drive Quantum Super DLTtape™ SDLT 320 Drive
Overland LibraryXpress Medium Changers Overland LibraryXpress Medium Changers
Hewlett Packard LTO Ultrium-3 drive Hewlett Packard LTO Ultrium-3 drive
Hewlett Packard LTO Ultrium-3 drive Hewlett Packard LTO Ultrium-3 drive
Overland Neo Series Medium Changers Overland Neo Series Medium Changers

Noch weiter Fragen dazu?

Wenn Ihr Probleme oder Fragen habt, so postet diese einfach im Forum

vicodas 11.07.2007 10:02

nagios/howtos/wiki_hardware_windows.txt · Zuletzt geändert: 2011/07/19 17:48 von tduemesnil
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0