如何在PowerShell脚本中检查不同服务器上的多个服务?

时间:2014-11-25 01:58:22

标签: powershell

我有3台服务器

  

服务器a,服务器b,服务器c

我想检查3项服务,

  

service = serva,servb,servc

     

服务器a包含serva和servb

     

服务器b包含servb和serv c

     

服务器c仅包含servc

我已经看过一个用于检查不同服务器上的不同服务的脚本,但我想不出一种方法来编辑它以满足我的需求。任何人都可以帮我讨论如何在不同的服务器上检查多个服务(有些是相同的)吗?

1 个答案:

答案 0 :(得分:5)

以下是一种方法:

$services = @( @{Computername="ServerA"; ServiceName="ServiceA"},
    @{Computername="ServerA"; ServiceName="ServiceB"},
    @{Computername="ServerB"; ServiceName="ServiceB"},
    @{Computername="ServerB"; ServiceName="ServiceC"},
    @{Computername="ServerC"; ServiceName="ServiceC"}
)

$services | %{Get-Service -Computername $_.Computername -ServiceName $_.ServiceName}

# Because I used a hashtable with full parameter names for $services, I can do this trick
$services | %{Get-Service @_ }

现在我在那里做了很多高级的东西。我们可以通过将您的数据放入CSV文件来实现这一点。只需使用ComputerName和ServiceName作为列来适应此示例。每行只需一台服务器和一台服务。

$services = Import-CSV servicelist.txt
$services | %{Get-Service -Computername $_.Computername -ServiceName $_.ServiceName}

默认输出可能不会显示计算机名称,因此最好将其输出到Select-Object MachineName, Name, Status