Jump to content

Ausgabe eines einzigen Elements Collection(Array) in WMI


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Recommended Posts

Posted

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

Posted

:( 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.

Posted

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 

Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...