Что нового

Не срабатывает подстановка значения из массива

DyadyaGenya

Знающий
Сообщения
300
Репутация
10
Доброго времени суток. Собираю в массив данные InstanceName (id винчестера). Потом пробую вставлять их для получения остальных сведений смарт по конкретному винту. Если прописываю в ручную эти InstanceName (id) то значения смарт получаю. А если из массива подставляю, то получение не срабатывает.
Код:
#include <Array.au3>

Const $wbemFlagReturnImmediately = 0x10
Const $wbemFlagForwardOnly = 0x20
Global $strVendorSpecific[0], $strVendorSpecificA[0], $vendor[3]

$vendor[0]="IDE\DiskHitachi_HDS721050CLA362_________________JP2OA50E\5&2932390f&0&0.1.0_0"
$vendor[1]="IDE\DiskWDC_WD3200AAJS-00B4A0___________________01.03A01\5&2932390f&0&0.0.0_0"
$vendor[2]="SCSI\Disk&Ven_TOSHIBA&Prod_DT01ACA200\4&3714eef5&0&000000_0"
$objWMIService = ObjGet("winmgmts:\\" & @ComputerName & "\root\WMI")
;$colItems = $objWMIService.ExecQuery("SELECT * FROM MSStorageDriver_ATAPISmartData Where InstanceName=""SCSI\\Disk&Ven_TOSHIBA&Prod_DT01ACA200\\4&3714eef5&0&000000_0""", "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly) ; Вот так срабатывает
$colItems = $objWMIService.ExecQuery("SELECT * FROM MSStorageDriver_ATAPISmartData Where InstanceName=" & String($vendor[1]), "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly)  ; Вот так не срабатывает
; Ниже оставлены строки для проверки результата
       For $objItem In $colItems
             $strVendorSpecific = $objItem.VendorSpecific
            ConsoleWrite ("VendorSpecific: " & _ArrayToString($strVendorSpecific,",")&@CR)
$VendorSpecific3 = $objItem.VendorSpecific3
   ConsoleWrite($objItem.VendorSpecific3 & @CR)
   $strVendorSpecific4 = $objItem.VendorSpecific4
 ConsoleWrite ("VendorSpecific4: " & _ArrayToString($strVendorSpecific4,",")&@CR)
Next

Единственное - приходится дублировать слэши. Без дублирования тоже не срабатывает (Видимо особенности пунктуации). Но при подстановке из массива это не помогает.
Как бы получать значения смарт с помощью подстановки значений из массива?
 

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
Код:
$colItems = $objWMIService.ExecQuery('SELECT * FROM MSStorageDriver_ATAPISmartData Where InstanceName="' & $vendor[0]&'"', "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly)  ; Вот так не срабатывает
ну и двойной слеш тоже нужен
 
Верх