Если тогда утверждение с предложением или в VBS / HTA - PullRequest
0 голосов
/ 28 апреля 2011

У меня есть раздел кода VBScript, который запрашивает Win32_Service на основе определенного условия имени. Теперь у нас есть половина среды, перенесенная на новое имя, поэтому мне нужно изменить скрипт для запуска блока кода при любом условии. Я искал в Интернете, но не могу найти никаких примеров. Я вставляю два блока кода. Мне нужно запросить RGL или Reed в качестве начала имени службы и вернуть результаты. Любые идеи приветствуются.

 ' Initialize Objects.
  Set g_objWMIService = GetObject("winmgmts:\\.")
  Set g_colServices = g_objWMIService.InstancesOf("Win32_Service")

  If c_Debug Then h_divStatus.style.display = "block"

   For Each g_objService In g_colServices 
    'Status "Checking service..."
    If c_Reedonly Then
      If LCase(Left(g_objService.DisplayName, 4)) = LCase("RGL ") Then
'      'If c_Debug Then
'        'WScript.Echo "Name: " & g_objService.Name & vbCrLf & _ 
'        '    "Display Name: " & g_objService.DisplayName & vbCrLf & _ 
'        '    " Description: " & g_objService.Description & vbCrLf & _ 
'        '    " Path Name: " & g_objService.PathName & vbCrLf & _ 
'        '    " Start Mode: " & g_objService.StartMode & vbCrLf & _ 
'        '    " State: " & g_objService.State & vbCrLf 
'        'AddRowLinePartial(g_objService.Name)
        AddRowLinePartial "h_tblServices", g_objService.DisplayName, g_objService.Name, g_objService.State, g_objService.StartMode
      End If
    Else
      AddRowLinePartial "h_tblServices", g_objService.DisplayName, g_objService.Name, g_objService.State, g_objService.StartMode
    End if
    Next
    Else
    For Each g_objService In g_colServices 
    'Status "Checking service..."
    If c_Reedonly Then
      If LCase(Left(g_objService.DisplayName, 4)) = LCase("Reed") Then
'      'If c_Debug Then
'        'WScript.Echo "Name: " & g_objService.Name & vbCrLf & _ 
'        '    "Display Name: " & g_objService.DisplayName & vbCrLf & _ 
'        '    " Description: " & g_objService.Description & vbCrLf & _ 
'        '    " Path Name: " & g_objService.PathName & vbCrLf & _ 
'        '    " Start Mode: " & g_objService.StartMode & vbCrLf & _ 
'        '    " State: " & g_objService.State & vbCrLf 
'        'AddRowLinePartial(g_objService.Name)
        AddRowLinePartial "h_tblServices", g_objService.DisplayName, g_objService.Name, g_objService.State, g_objService.StartMode
      End If
    Else
      AddRowLinePartial "h_tblServices", g_objService.DisplayName, g_objService.Name, g_objService.State, g_objService.StartMode
    End if
  Next 

1 Ответ

0 голосов
/ 28 апреля 2011

Просто используйте ключевое слово Or в вашем операторе If.Вы можете сделать оба сразу.

' Initialize Objects.
Set g_objWMIService = GetObject("winmgmts:\\.")
Set g_colServices = g_objWMIService.InstancesOf("Win32_Service")

If c_Debug Then h_divStatus.style.display = "block"

For Each g_objService In g_colServices 
    'Status "Checking service..."
    If c_Reedonly Then
        If LCase(Left(g_objService.DisplayName, 4)) = LCase("RGL ") _
                Or LCase(Left(g_objService.DisplayName, 4)) = LCase("Reed") Then
'   'If c_Debug Then
'   'WScript.Echo "Name: " & g_objService.Name & vbCrLf & _ 
'   '   "Display Name: " & g_objService.DisplayName & vbCrLf & _ 
'   '   " Description: " & g_objService.Description & vbCrLf & _ 
'   '   " Path Name: " & g_objService.PathName & vbCrLf & _ 
'   '   " Start Mode: " & g_objService.StartMode & vbCrLf & _ 
'   '   " State: " & g_objService.State & vbCrLf 
'   'AddRowLinePartial(g_objService.Name)
            AddRowLinePartial "h_tblServices", g_objService.DisplayName, g_objService.Name, g_objService.State, g_objService.StartMode
        End If
    Else
        AddRowLinePartial "h_tblServices", g_objService.DisplayName, g_objService.Name, g_objService.State, g_objService.StartMode
    End If
Next
...