Сканирование службы на онлайн-устройствах с помощью скрипта Powershell - PullRequest
0 голосов
/ 27 февраля 2020

Я написал сценарий, чтобы сообщить мне, работает ли основная служба SEP для всех компьютеров, перечисленных в файле, запустите службу, если она остановлена, и дайте мне знать, если она не существует. Он работает, но когда скрипт попадает на компьютер, который не подключен к сети, он замедляется до тех пор, пока не будет возвращена ошибка, а затем, наконец, перейдет к следующему компьютеру в списке. Есть ли способ сканировать только службу в списке устройств, которые находятся в сети и могут быть проверены в сети?

$computers = Get-Content -Path "C:\temp2\ComputerList.txt"
foreach ($computer in $computers) {
   $service = Get-Service -name SepMasterService -computername $computer
   $ServiceStatus = $service.Status
   $ServiceDisplayName = $service.DisplayName

   if ($ServiceStatus -eq 'Running') {
      Write-Output "Service OK - Status of $ServiceDisplayName is $ServiceStatus on $computer"
   }
   elseif ($ServiceStatus -eq 'stopped') {
      Start-Service -Name SepMasterService -PassThru
   }
   else {
      Write-Output "Symantec Endpoint Protection doesn't exist on $computer"
   }
}

1 Ответ

0 голосов
/ 27 февраля 2020

Добавьте проверку для подключенных компьютеров с помощью командлета test-connection и go к следующему компьютеру.

$computers = Get-Content -Path "C:\temp2\ComputerList.txt"
foreach ($computer in $computers) {
    if(!(Test-Connection -ComputerName $computer -Count 1 -Quiet))
    {
        Write-Output "$computer is offline"
        continue
    }
   $service = Get-Service -name SepMasterService -computername $computer
   $ServiceStatus = $service.Status
   $ServiceDisplayName = $service.DisplayName

   if ($ServiceStatus -eq 'Running') {
      Write-Output "Service OK - Status of $ServiceDisplayName is $ServiceStatus on $computer"
   }
   elseif ($ServiceStatus -eq 'stopped') {
      Start-Service -Name SepMasterService -PassThru
   }
   else {
      Write-Output "Symantec Endpoint Protection doesn't exist on $computer"
   }
}

Параметр -Count указывает, сколько раз нужно пропинговать компьютер. По умолчанию 4, но это ускорит ваш процесс. Оператор continue прекратит выполнение любого кода в текущей итерации foreach l oop и go на следующем компьютере.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...