MikaP 10 Posted January 25, 2008 Report Posted January 25, 2008 Guten Tag Zusammen, Ich habe eine Frage zum Thema WMI Scripting mit VbSkript. Ich habe folgendes Problem, normalweise gibt man die Eigenschaften einer Klasse in WMI so aus: dim strPC, strNetworkAdapter strPC = MeinPC set objWbemServices = GetObject("winmgmts:\\" & strPC & "\root\cimv2") set objNetworkAdapter = objWbemServices.ExecQuery("Select * from Win32_NetworkAdapter where AdapterType = 'Ethernet 802.3'") for each strNetworkAdapter in objNetworkAdapter 'Nur den Namen des Netzwerkadapters ausgeben ... MsgBox strNetworkAdapter.Name next Nun möchte ich, aber nur eine Eigenschaft ausgeben und diese direkt in einer Variable speichern und das ohne den for each. Jemand eine Idee? Danke im Voraus Quote
blub 115 Posted January 25, 2008 Report Posted January 25, 2008 Hallo, Anstelle des Sterns in der Query kannst du ein oder mehrere, durch komma getrennte, Properties eintragen. Das ist besonders bei Queries über Netzwerk sinnvoll siehe die Tabelle in Microsoft Windows 2000 Scripting Guide - Retrieving Managed Resources Using WMI Query Language Da das zurückgegebene Objekt eine Collection ist, wirst du um ein "foreach" nicht rumkommen. cu blub Quote
MikaP 10 Posted January 26, 2008 Author Report Posted January 26, 2008 :( das hört sich, aber gar nicht gut an, den mein Problem ist das ich von einem Domain Controller aus, alle PC's in der Domain durchgehen muss und deren Port Geschwindigkeit messen soll, dann taucht nämlich ein Problem auf ... ich werde später ein backup von meiner notebook festplatte machen(mein Notebook ist kaputt) und den code dann hier posten und weiter auf's Problem eingehen. Quote
MikaP 10 Posted January 28, 2008 Author Report Posted January 28, 2008 Hab es nun hinbekommen, mit dem folgenden Code kann man in einer Domäne von jedem Computer die Port Geschwindigkeit auslesen, soweit man Rechte hat. Mh, die Formatierung scheint hier nicht richtig zu funktionieren ;( Option Explicit On Error Resume Next Const strFilePath = "c:\" Const strFileName = "PortSpeed.txt" dim objSearchDomains, strDomain, strDomainList, arrDomainList(), iCount, strDomainInput, strDomainExist, objAnalyzeDomain dim objFs, objFile, objWbemServices dim colNetAdapterList, colNetAdapterSpeed dim strPC dim strAdapterName, strAdapterSpeed iCount = 0 strDomainExist = false set objSearchDomains = GetObject("WinNT:") for each strDomain in objSearchDomains if iCount <= 0 then ReDim arrDomainList(iCount) arrDomainList(iCount) = strDomain.Name else ReDim Preserve arrDomainList(iCount) arrDomainList(iCount) = strDomain.Name end if iCount = iCount + 1 strDomainList = strDomainList & strDomain.Name & vbCr next if strDomainList <> "" then strDomainInput = InputBox("Bitte geben Sie die gewünschte Domain ein." & vbCr _ & "Gefundene Domains:" & vbCr & strDomainList, "Domain Eingeben") if strDomainInput <> "" then for iCount=0 to uBound(arrDomainList) if StrComp(arrDomainList(iCount), uCase(strDomainInput)) = 0 then strDomainExist = true exit for end if next if strDomainExist = true then set objAnalyzeDomain = GetObject("WinNT://" & strDomainInput) objAnalyzeDomain.Filter = array("Computer") set objFs = CreateObject("Scripting.FileSystemObject") set objFile = objFs.CreateTextFile(strFilePath & strFileName, true) for each strPC in objAnalyzeDomain set objWbemServices = GetObject("winmgmts:\\" & strPC.Name & "\root\cimv2") if Err.Number = 462 then objFile.WriteLine "PC: " & strPC.Name & " ||" & " NetController: " & "n/a" & " ||" & " PortSpeed: " & "n/a" & vbCr Err.Clear else set colNetAdapterList = objWbemServices.ExecQuery("Select Name from Win32_NetworkAdapter where AdapterType = 'Ethernet 802.3'") for each strAdapterName in colNetAdapterList set colNetAdapterSpeed = objWbemServices.ExecQuery("Select CurrentBandwidth from Win32_PerfRawData_Tcpip_NetworkInterface where Name = '" & strAdapterName.Name & "'") for each strAdapterSpeed in colNetAdapterSpeed if strAdapterSpeed.CurrentBandwidth <> "" then objFile.WriteLine "PC: " & strPC.Name & " ||" & " NetController: " & strAdapterName.Name & " ||" & " PortSpeed: " & (strAdapterSpeed.CurrentBandwidth / 1000) / 1000 & " MBit/s" & vbCr end if exit for next next end if objFile.WriteLine vbCr next objFile.close MsgBox "Die Daten wurden erfolgreich in die Datei " & strFilePath & strFileName & " geschrieben.", 0, "Schreiben erfolgreich" else MsgBox "Diese Domain existiert nicht.", 0, "Fehler: Domain existiert nicht." end if else MsgBox "Es wurde keine Domain eingegeben.", 0, "Fehler: Keine Domain Eingabe" end if else MsgBox "Es konnte keine Domains gefunden werden.", 0, "Fehler: Kein Domains vorhanden" end if Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.