【问题标题】:Powershell Script - Services Running eq OK or list Services Not RunningPowershell 脚本 - 正在运行的服务 eq OK 或列出未运行的服务
【发布时间】:2013-05-09 21:37:33
【问题描述】:

我有这个脚本可以检查多个服务器是否有特定的服务正在运行。

我需要有关如何使其不拉回运行/不运行响应的帮助或指示。我需要让它成为“如果所有查询的服务都在运行 = OK,如果没有列出服务未运行”

这可行吗?

脚本:

$Check1 = Get-service -Computername server1 -Name *service1* | ConvertTo-Html Name,Status -Fragment
$Check2 = Get-Service  -Computername server2 -name *service2* | ConvertTo-Html Name,Status  
$Check3 = Get-Service  -Computername server3 -name *service3* | ConvertTo-Html Name,Status
$Check4 = Get-Service -ComputerName UKVAULT01 -Name *service4* | ConvertTo-Html Name,Status
ConvertTo-HTML -Body "<b>Check1</b> $Check1 <br> <b>Check2</b> $Check2 <br> <b>Check3</b> $Check3<br> <b>Check4</b> $Check4" -Title "Service Checks" | Out-File c:\StatusReport.html

【问题讨论】:

    标签: powershell scripting cmdlets


    【解决方案1】:

    将检查封装在这样的函数中:

    function Check-Service{$server, $name) {
      $check = Get-Service $server -Name $name | ? { $_.Status -ne "Running" }
      if ( $check -eq $null ) { $check = "OK" }
      $check | ConvertTo-Html -Fragment
    }
    
    $Check1 = Check-Service server1 *service1*
    $Check2 = Check-Service server2 *service2*
    ...
    

    【讨论】:

    • 我还没有开始学习函数,但是这大大减少了所涉及的行的长度,这将给它一段时间,谢谢老兄。
    • 每个服务器及其服务都需要一个函数吗?
    • 除非您想为每个服务器做不同的事情,否则不会。您将服务器和服务的名称传递给同一个函数。请参阅我的代码示例的下半部分。
    • 由于不同的服务器运行不同的应用程序,每次都要检查不同的服务。
    • 这就是你传递服务器服务名称的原因。
    猜你喜欢
    • 1970-01-01
    • 2017-08-17
    • 2017-04-09
    • 1970-01-01
    • 1970-01-01
    • 2018-11-03
    • 2020-02-11
    • 2014-09-12
    • 1970-01-01
    相关资源
    最近更新 更多