MikaP 10 Geschrieben 25. Januar 2008 Melden Teilen Geschrieben 25. Januar 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 Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 25. Januar 2008 Melden Teilen Geschrieben 25. Januar 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 Zitieren Link zu diesem Kommentar
MikaP 10 Geschrieben 26. Januar 2008 Autor Melden Teilen Geschrieben 26. Januar 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. Zitieren Link zu diesem Kommentar
MikaP 10 Geschrieben 28. Januar 2008 Autor Melden Teilen Geschrieben 28. Januar 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 Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.