我正在使用 select 语句显示当前设置为 Auto(自动)的系统上的所有服务。问题是我不想看到的服务列表正在增长。但仍然不大于我不想看到的服务列表。我希望我可以将所有我不想看到的服务放在一个数组中,然后在 select 查询期间(或之后,如果需要)对照数组进行检查,但到目前为止,我找不到一个类似的例子,或者我脑子里有 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'")
答案1
在选择查询中执行此操作并不是最好的选择,因为 WQL 中没有“IN”运算符。唯一的方法是根据排除的服务数组动态构建选择查询。
我建议采用后一种方式,即构建一个服务名称数组,使用选择查询检索所有服务,然后对它们进行迭代。在迭代过程中,您必须根据排除的服务数组检查它们。
干杯,特雷弗·沙利文
=========================================================================
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