Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Hardware per WMI mit VB Script auslesen und in Textdatei schreiben

Frage Entwicklung VB for Applications

Mitglied: johnsch

johnsch (Level 1) - Jetzt verbinden

07.12.2008, aktualisiert 08.12.2008, 17434 Aufrufe, 7 Kommentare

Hallo,
ich bin kein VB Script Freak aber mit cmd kann ich leider nicht das realisieren was ich brauche.
ich möchte per VB Script bestimmte Hardware und Angaben des Rechners auslesen und in eine Textdatei schreiben.
z. Bsp. BIOS serial Nummer, Grafikkarte, wieviel Arbeitsspeicher und welche RAM module, die Netzwerkkarten inklusive Bluetooth und die MAC Adressen.

Als Anregung habe ich mir das WMI Script von der PC Welt heruntergeladen, das war recht einfach gehalten.
Leider passt meine Denkweise nicht.


Mein VB Code funktioniert nicht so wie ich es mir vorstellen würde:

on error resume next
set wmi = GetObject("winmgmts:")

WScript.Echo wmi.ExecQuery('select * from win32_BIOS')

habe auch schon andere Möglichkeiten probiert:

on error resume next
set wmi = GetObject("winmgmts:")
erg = "select * from win32_BIOS"
set ergebnis = wmi.ExecQuery(erg)

WScript.Echo wmi.ExecQuery(ergebnis)

wo liegt mein Denkfehler?

und gleich noch ne Frage, wie kann ich die WMI Abfrage so anpassen das nicht alle Werte zum Query ausgegeben werden sonder nur bestimmte,
z. Bsp. beim BIOS nur die SerialNumber ?
Mitglied: dog
07.12.2008 um 23:15 Uhr
01.
' WMI Provider - SWbemServices 
02.
Set wmi = GetObject("winmgmts:\\.\root\cimv2") 
03.
'SWbemObjectSet 
04.
set biosSet = wmi.ExecQuery("SELECT * FROM Win32_BIOS") 
05.
'SWbemObject 
06.
Set biosInfo = biosSet.ItemIndex(0) 
07.
' String 
08.
Msgbox biosInfo.SerialNumber
Grüße

Max
Bitte warten ..
Mitglied: bastla
07.12.2008 um 23:24 Uhr
Hallo johnsch und willkommen im Forum!

Das Ergebnis der Abfrage erhältst Du generell in Form einer Aufzählung.

Mit dem WMI Code Creator kannst Du ein entsprechendes Script erzeugen lassen - etwas gekürzt sähe das etwa so aus:
01.
strComputer = "."  
02.
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")  
03.
Set colItems = objWMIService.ExecQuery( _ 
04.
    "SELECT * FROM Win32_BIOS")  
05.
For Each objItem in colItems  
06.
    Wscript.Echo "SerialNumber: " & objItem.SerialNumber 
07.
Next
Grüße
bastla
Bitte warten ..
Mitglied: johnsch
08.12.2008 um 16:52 Uhr
hallo, danke f. die antworten.
der tipp mit dem wmi code creator war sehr hilfreich.

so geht es:

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery( _
"SELECT * FROM Win32_BIOS",,48)
For Each objItem in colItems
Wscript.Echo "SerialNumber: " & objItem.SerialNumber
Next

aber jetzt frag ich mich, muss man das mit einer For Each schleife auslesen oder kann man das Item SerialNumber nicht direkt ansprechen?

Und was bedeutet die 48 in
objWMIService.ExecQuery( _
"SELECT * FROM Win32_BIOS",,48)

gruss john
Bitte warten ..
Mitglied: bastla
08.12.2008 um 17:21 Uhr
Hallo johnsch!

So geht es:
Freut mich, dass wir einigermaßen übereinstimmende Scripts erhalten haben (allerdings ist meines schöner formatiert ) ...

muss man das mit einer For Each schleife auslesen oder kann man das Item SerialNumber nicht direkt ansprechen?
Ja
colItems(0).SerialNumber
scheitert bei mir mit "SWbemObjectSet: Allgemeiner Fehler" - warum, kann ich Dir leider (auch mit Hilfe von Accessing a Collection) nicht beantworten.

Und was bedeutet die 48 ...
http://msdn.microsoft.com/en-us/library/aa393866(VS.85).aspx

Grüße
bastla
Bitte warten ..
Mitglied: johnsch
08.12.2008 um 17:41 Uhr
hi, bin gerade am bastlen und wieder auf das nächste problem gestossen.

Set colItems = objWMIService.ExecQuery( _
"SELECT * FROM Win32_NetworkAdapter",,48)
For Each objItem in colItems
Wscript.Echo "Description: " & objItem.Description
Next

Set colItems = objWMIService.ExecQuery( _
"SELECT * FROM Win32_NetworkAdapter",,48)

For Each objItem in colItems
Wscript.Echo "MACAddress: " & objItem.MACAddress
Next

hiermit lasse ich mir die netzwerkkarten auflisten und dann die mac adressen.
wie bekomme ich die MAC adressen zu der dazugehörigen netzwerkkarte?
sonst hab ich nur eine liste mit netzwerkkarten, wobei hier auch die ganzen WAN Miniport und Virtual Machine Network Services Driver usw. mit aufgelistet werden. und darunter alle mac adressen, da man dann manuell der richtigen netzwerkkarte zuweisen müsste.

das wäre auch für andere angaben hilfreich, z. bsp. wenn man die festplatten mit der entsprechenden größe auflistet. so hat man immer 2 listen, die man dann verhackstücken muss.

gruss john
Bitte warten ..
Mitglied: bastla
08.12.2008, aktualisiert 24.07.2012
Hallo johnsch!

Einfach alles in einer Schleife abhandeln (sind ja jeweils nur unterschiedliche Eigenschaften des gerade aktuellen Objektes):
01.
For Each objItem in colItems 
02.
    Wscript.Echo "Description: " & objItem.Description 
03.
    Wscript.Echo "MACAddress: " & objItem.MACAddress 
04.
Next
Grüße
bastla
Bitte warten ..
Mitglied: johnsch
08.12.2008 um 17:55 Uhr
ja super, da hätte ich auch selber drauf kommen können.
danke
gruss john
Bitte warten ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
Outlook & Mail
gelöst Email Anhänge speichern VB Script aber nur bestimmte Dateitypen (Outlook) (4)

Frage von LindeUnimog zum Thema Outlook & Mail ...

VB for Applications
gelöst VB Script rekursiv statt nur ein Ordner (4)

Frage von Saschaaaaa zum Thema VB for Applications ...

VB for Applications
gelöst VB Script nach gefundenem Wort die nächsten 4 Zeichen ersetzten (2)

Frage von deutsch73 zum Thema VB for Applications ...

Batch & Shell
gelöst BATCH: Daten aus Textdatei auslesen und in neue Textdatei separieren (9)

Frage von Manuel1234 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (17)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Windows Netzwerk
Windows 10 RDP geht nicht (16)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...