$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
}
如果服务相同,这是可行的,但如果有不同的服务要检查,那么如何完成?
$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
}
如果服务相同,这是可行的,但如果有不同的服务要检查,那么如何完成?
对于 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
}