2016-07-09 6 views
0

Я хотел бы отслеживать список услуг на удаленных машинах. Эти службы не являются одинаковыми на всех удаленных компьютерах.Как контролировать список услуг на удаленных компьютерах?

Ближайшее, что у меня есть, - это отслеживать все службы, которые останавливаются на удаленных компьютерах, но я не могу найти способ сценария для отслеживания списка услуг.

Это сценарий, я работаю над:

$Date = Get-Date -Format dd-MMM-yyyy 
$Time = Get-Date -Format "hh:mm:ss tt" 
$Style = @" 
<!DOCTYPE html> 
<html> 
... 
"@ 

$ServerList = Get-Content -Path C:\temp\computers1.txt 
$body = $ServerList | 
     Foreach-Object { 
      Get-Service -ComputerName $_ | Where-Object { 
      $_.Status -ne "Running" -and 
      $_.StartType -like "Automatic" 
      } 
     } | 
     Select-Object MachineName, Status, DisplayName, StartType | 
     Sort-Object -Property MachineNAme -Descending | 
     ConvertTo-Html 

$colorTagTable = @{ 
    Stopped = ' bgcolor="#ff0000">Stopped<'; 
    Running = ' bgcolor="#00ff00">Running<' 
} 

# get possible values look them in text sorrounded by > < and replace 
# them with style (pun intended). 
$colorTagTable.Keys | foreach { 
    $body = $body -replace ">$_<", ($colorTagTable.$_) 
} 

ConvertTo-Html -Head $Style -Body $body | Out-File "C:\temp\srv.htm"  

ответ

1

Если вы сомневаетесь, прочитайте documentation.

-ComputerName < String [] >
Возвращает службы, работающие на указанных компьютерах. По умолчанию используется локальный компьютер.
Введите имя NetBIOS, IP-адрес или полное доменное имя (FQDN) удаленного компьютера. Чтобы указать локальный компьютер, введите имя компьютера, точку (.) Или localhost.
[...]
-Name < String [] >
Задает имена служб услуг, которые будут загружены. Подстановочные знаки разрешены. По умолчанию этот командлет получает все службы на компьютере.

$Style = @" 
<style> 
... 
</style> 
"@ 

$ServiceList = 'NetLogon', 'Spooler', 'W32Time' 
$ServerList = Get-Content -Path C:\temp\computers1.txt 

Get-Service -ComputerName $ServerList -Name $ServiceList | 
    Select-Object MachineName, Status, DisplayName, StartType | 
    Sort-Object -Property MachineNAme -Descending | 
    ConvertTo-Html -Head $Style | 
    Out-File 'C:\temp\srv.htm' 

Услуги, которые не существуют на конкретном компьютере, игнорируются, если ни одна из служб не работает на этом компьютере, в этом случае вы получите сообщение об ошибке. Запустите Get-Service с параметром -ErrorAction SilentlyContinue, если вы хотите его игнорировать.

0

для списка услуг у меня будет что-то вроде этого на самом деле получить услугу, которая должна быть запущена и иметь отчеты по электронной почте вместо протоколирования и проверки HTML-страниц

$servicelist=Get-WmiObject -Class Win32_Service -Filter "state = 'stopped' and startmode = 'auto'" | select Name 


$From = "[email protected]" 
$To = "[email protected]" 
$Subject = "Daily Service Report From " 
$Body = "get-content C:\temp\srv.htm " 
$SMTPServer = "smtp.email.com" 
#$SMTPPort = "587" 
Send-MailMessage -From $From -to $To -Subject $Subject ` 
-Body $Body -SmtpServer $SMTPServer #-port $SMTPPort 
Смежные вопросы