У кого-нибудь есть пример кода, который делает запросы WMI к классу CIM_DataFile?

Что-то, что делает SELECT для получения информации о файле или каталоге? Что-то, что действительно работает?

Язык не имеет значения, меня больше всего интересует синтаксис запроса.


person JCCyC    schedule 02.06.2009    source источник


Ответы (3)


Вот несколько примеров:

  • Запрос файла:

    SELECT * FROM CIM_DataFile WHERE Name='C:\\WINDOWS\\NOTEPAD.EXE'
    SELECT * FROM CIM_DataFile WHERE Drive='C:' AND Path='\\Windows\\' AND FileName='Notepad' AND Extension='EXE'
    
  • Запрос папки:

    SELECT * FROM CIM_Directory WHERE Name='C:\\Windows'
    SELECT * FROM CIM_Directory WHERE Drive='C:' AND Path='\\Program Files\\' AND FileName='Internet Explorer'
    

Дополнительные сведения о синтаксисе запросов см. в разделе WQL (SQL для WMI). См. также CIM_DataFile и CIM_Directory для списка свойств файлов и папок, которые можно использовать в предложениях SELECT и WHERE.

person Helen    schedule 14.06.2009

Я нашел ответ, и все это было вызвано моей глупой ошибкой: мне не удавалось удвоить обратную косую черту в строке пути, и я думал, что это делается. Кроме того, вы должны указать все четыре поля в предложении WHERE: диск, путь, имя файла и расширение.

person JCCyC    schedule 18.06.2009

Создатель кода WMI есть помощь.
См. этот код:

strComputer = "." 
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") 
Set colItems = objWMIService.ExecQuery( _
    "SELECT * FROM CIM_DataFile",,48) 
For Each objItem in colItems 
    Wscript.Echo "-----------------------------------"
    Wscript.Echo "CIM_DataFile instance"
    Wscript.Echo "-----------------------------------"
    Wscript.Echo "AccessMask: " & objItem.AccessMask
    Wscript.Echo "Archive: " & objItem.Archive
    Wscript.Echo "LastAccessed: " & objItem.LastAccessed
    Wscript.Echo "LastModified: " & objItem.LastModified
    Wscript.Echo "Manufacturer: " & objItem.Manufacturer
    Wscript.Echo "Name: " & objItem.Name
    Wscript.Echo "Path: " & objItem.Path
    Wscript.Echo "Readable: " & objItem.Readable
    Wscript.Echo "Status: " & objItem.Status
    Wscript.Echo "System: " & objItem.System
    Wscript.Echo "Version: " & objItem.Version
    Wscript.Echo "Writeable: " & objItem.Writeable
Next

ИЗМЕНИТЬ

В этом примере вы просматриваете перечисление всех файлов на компьютере .

Попробуйте этот формат запроса, чтобы:

Select * From Win32_Directory Where FileName = 'Scripts'

Подробнее о создании запроса WQL с использованием LIKE.
Попробуйте также: Scriptomatic 2.0.

person lsalamon    schedule 04.06.2009
comment
Запрос, который получает каждую строку (то есть любой файл), не приносит мне пользы. Мне нужно предложение WHERE, чтобы получить информацию только из одного файла. - person JCCyC; 06.06.2009