Powershell: Поиск запущенных служб в домене на примере Radmin

Найдём компьютеры в домене у которых установлен Radmin. Заодно выведем список рабочих станций у которых он не установлен. Всё это, разумеется, с помощью PowerShell.

Часто возникает задача, узнать запущена ли какая нибудь служба на компьютерах пользователей.
Первое же решение кажется очень простым:

  • командлетом Get-ADComputer получить список компьютеров в домене
  • командлетом Get-Service получить список запущенных служб
  • Решение очевидное, но не очень эффективное.
    Не эффективное оно по нескольким причинам:

  • Командлет Get-ADComputer - получит список всех устройств домена, включая сервера и сетевое оборудование
  • Из полученного списка не все машины будут включены
  • Итогом будет вечность выполнения скрипта.
    Поэтому скрипт будем писать с оглядкой на эти проблемы, а именно:

  • Сначала отфильтруем только рабочие станции
  • Потом пингом проверим включены ли они
  • Только потом, проверим запущена ли на них нужная нам служба
  • Наконец, выведем двумя списками компьютеры с запущенной и незапущенной службой
  • Скрипт и результат:

    Windows PowerShell ISE
    1. ##############################################################################
    2. #
    3. # Скрипт выводит список компьютеров на которых запущена указанная служба
    4. # На примере службы Radmin - rserver3
    5. #
    6. ###############################################################################
    7.  
    8.  
    9. # Получаем список компьютеров в сети, без серверов и сетевого оборудования
    10. $workstations = Get-ADComputer -Filter "operatingsystem -notlike '*server*'" -Properties operatingsystem `
    11. | where {$_.operatingsystem -notmatch "unknown" }
    12. # $workstations = Get-ADComputer -filter * -SearchBase "OU=Тест,DC=domain,DC=local"
    13.  
    14. # Что бы при каждом добавлении не пересоздавался весь массив
    15. # создадим System.Collections.ArrayList
    16. $Ena = New-Object System.Collections.ArrayList
    17. $Dis = New-Object System.Collections.ArrayList
    18.  
    19. # Начинаем проверять компьютеры из АД
    20. foreach ($RadminHost in $workstations.dnshostname)
    21.  {
    22.  # Сначало, включены ли они, тупо пингуем
    23.  $TurnOn = Get-WmiObject Win32_PingStatus -filter "Address='$RadminHost'"  
    24.     if ($TurnOn.StatusCode -eq 0) 
    25.     {
    26.     # Если пинг идёт - то смотрим запущена ли служба
    27.        $rsenable = Get-Service 'rserver3'  -ComputerName $RadminHost
    28.       # Если запущена, добавляем в массив запущенных
    29.        if ($rsenable.Status -eq 'running')
    30.           {
    31.             $Ena.Add($RadminHost)
    32.           }
    33.         # Если нет - где службу нужно установить
    34.         else
    35.             {
    36.                  $Dis.Add($RadminHost)
    37.             }
    38.      }
    39. }
    40.  
    41. # Выводим на экран
    42. Write-Host "*****************************"
    43. Write-Host "Radmin включен на:" -ForegroundColor Green
    44. $Ena
    45. Write-Host "Всего:" ($Ena).Count -ForegroundColor Green
    46. Write-Host "*****************************" 
    47. Write-Host "Radmin выключен на:" -ForegroundColor Red
    48. $Dis
    49. Write-Host "Всего:" ($Dis).Count -ForegroundColor Red
    50. Write-Host "*****************************"
    1. *****************************
    2. Radmin включен на:
    3. Comp02.domain.loc
    4. Comp03.domain.loc
    5. Comp07.domain.loc
    6. Comp11.domain.loc
    7. Comp16.domain.loc
    8. Всего: 5
    9. *****************************
    10. Radmin выключен на:
    11. Comp01.domain.loc
    12. Comp05.domain.loc
    13. Всего: 2
    14. *****************************
    15.  
    16. PS C:\>

     


    Сказать спасибо

    Сумма в белорусских рублях
    • Перевод осуществляется, через сервис электронных платежей ЗАО «Альфа-Банк»
    • Сумма в белорусских рублях BYN
    • Если карта в другой валюте — конвертация производится по курсу вашего банка
    • Комиссия 0%


    Популярные заметки

    Команды оснасток mmc, программ и настроек Windows

    Запуск команд Windows

    Узнать свой IP адрес

    IP адрес

    RDP: Доступ к требуемому сеансу отклонен

    RDP icon

     

    Комментарии


    • Оставьте первый комментарий — будьте первым

     

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *