0
$c = Get-Content D:\Users\vbaranwa\Desktop\vb.txt
for ($i = 0; $i-le $c.count; $i++) {
  $a = ($c)[$i]
  Get-Service -ComputerName $a -Name Power | select Name, MachineName, Status 
}

如果服务相同,这是可行的,但如果有不同的服务要检查,那么如何完成?

4

1 回答 1

2

对于 Name 参数,您可以指定多个模式,并且可以在模式中使用通配符。您可以使用get-service以下命令:

$c= Get-Content D:\Users\vbaranwa\Desktop\vb.txt
for($i=0; $i-le $c.count; $i++)
{
    $a=($c)[$i]
    get-service -ComputerName $a -Name *pattern1*, *pattern2*, *pattern3* |select Name, MachineName, Status
}

您可以参考以下链接了解如何使用此命令的参数: Get-Service Cmdlet

我做了一些搜索,发现这个SO链接应该和你遇到的问题一样: 如何使用 PowerShell 检查特定服务是否在远程计算机中运行

您可以参考 SO 链接在代码中配置哪个服务器具有哪个服务,或者您可以更改您的 vb.txt 文件(我现在假设该文件仅包含服务器名称)来配置哪个服务器具有哪些服务:

server1, service1
server2, service2
server3, service3
server3, service4

然后代码将更改为:

$c= Import-CSV -header server, service D:\Users\vbaranwa\Desktop\vb.txt
for($i=0; $i-le $c.count; $i++)
{
    $server  = $c[$i].server
    $service = $c[$i].service
    get-service -ComputerName $server -Name $service |select Name, MachineName, Status
}
于 2013-11-02T09:13:46.790 回答