Соедините значение свойств в цикле For Each с выводом одной строки - PullRequest
0 голосов
/ 30 мая 2019

Извините за мой плохой английский.

Здесь Анализ строки свойств в массиве для цикла For Each , с поддержкой https://stackoverflow.com/users/1630171/ Мне удалось прочитать батареюИнформация.Но это просто отдельная информация, так как мы собираем ее и экспортируем результаты в одну строку.

Dim strResult, objItem, arrayItem
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Battery")
arrayItems = Array("Name", "Availability", "BatteryStatus", "Chemistry")
For Each objItem in colItems
     For Each arrayItem In arrayItems
        strResult = Join(objItem.Properties_(arrayItem))
    Next
    WScript.Echo strResult
Next

И он показывает пустой результат вывода.

1 Ответ

1 голос
/ 30 мая 2019

Вам необходимо собрать свойства и объединить их в строку.

Попробуйте это:

Option Explicit

Dim objItem, arrayItems, strComputer
Dim objWMIService, colItems, arrResult, i

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

'The third parameter 48 for 'ExecQuery' is the combination of wbemFlagForwardOnly + wbemFlagReturnImmediately
'see: https://docs.microsoft.com/en-us/windows/desktop/wmisdk/swbemservices-execquery#parameters
Set colItems = objWMIService.ExecQuery("Select * from Win32_Battery",,48)
arrayItems = Array("Name", "Availability", "BatteryStatus", "Chemistry")

For Each objItem in colItems
    'create/clear an array to store the various pieces of information
    ReDim arrResult(UBound(arrayItems))
    For i = 0 To (UBound(arrayItems))
        ' Sometimes the WMI property returns a Null value (Nothing)..
        If Not IsNull (objItem.Properties_(arrayItems(i))) Then
            arrResult(i) = objItem.Properties_(arrayItems(i))
        Else
            arrResult(i) = "Unknown"
        End If
    Next
    'as example I'm using the Tab character to join the pieces
    WScript.Echo Join(arrResult, Chr(9))
Next
...