Назад | Перейти на главную страницу

Справка по массиву VBScript для оператора Select

Я использую оператор select, чтобы показать все службы в системе, в которой в настоящее время установлено значение Auto (автоматически). Беда в том, что список услуг, которые я не хочу видеть, растет. Пока еще не больший, чем список услуг, я не хочу видеть. Я надеюсь, что смогу поместить все службы, которые я не хочу видеть, в массив, а затем проверить массив во время запроса выбора (или впоследствии, если мне нужно), но пока я не могу найти пример, где что-то подобное сделано, и или у меня в голове есть PowerShell, и я не могу придумать, как это сделать vbscript

'Current Attempt
GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("select * from Win32_Service where StartMode='Auto' and DisplayName<>'Performance Logs and Alerts' and DisplayName<>'SBSD Security Center Service' and DisplayName<>'TPM Base Services'")

Делать это в запросе на выборку - не лучший вариант, поскольку в WQL нет оператора IN. Единственный способ сделать это - создать динамический запрос select на основе массива исключенных сервисов.

Я бы рекомендовал сделать это вторым способом, создав массив имен сервисов, получив ВСЕ сервисы с помощью вашего запроса select, а затем перебирая их. Во время итерации вам нужно будет сравнить их с массивом исключенных сервисов.

Ура, Тревор Салливан

=========================================================================

Excluded = Array("ccmexec", "wuauserv", "wudfsvc")

set svcs = GetObject("winmgmts:root\cimv2").ExecQuery("select * from win32_service where startmode = 'auto'")

for each svc in svcs
   skip = false
   for i = 0 to uBound(Excluded)
     if Excluded(i) =  svc.Name then skip = true
   next

   if skip = true then
      'msgbox svc.Name
   else
      ' Service was not skipped. Do stuff here.
   end if
next