我知道我可以使用PowerShell检查多个服务的服务状态。例如,有这样的事情:
Get-Service -ComputerName server-a, server-b, server-c -Name MyService |
Select Name, MachineName, Status
有人可以建议我如何修改它,以便:
- 枚举大量服务器,如数组或其他方式,以便使其比我将大量服务器放在一行中更具可读性。
- 在服务名称参数中使用通配符,例如“MYSERVICE *”
答案 0 :(得分:1)
您可以将服务器放在文本文件中,例如SERVERS.TXT
:
Server-a
Server-b
Server-c
...
并使用:
$servers = get-content SERVERS.TXT
Get-Service -ComputerName $servers -Name MyService | Select Name, MachineName, Status
您也可以为服务做同样的事。
答案 1 :(得分:0)
要先回答第二个问题,-Name
cmdlet的Get-Service
参数支持通配符,因此您只需执行此操作即可检查具有相似名称的多个服务:
Get-Service -Computer 'server-a', 'server-b', 'server-c' -Name MyService* |
select Name, MachineName, Status
-Computer
参数接受一个字符串数组,因此您可以从文件中读取服务器列表(每行包含一个主机名),如JPBlanc所示:
$computers = Get-Content 'C:\path\to\serverlist.txt'
Get-Service -Computer $computers -Name MyService* | ...
这可能是最佳选择,因为它将数据与代码分开。
但是,在某些情况下,将数据和代码保存在同一个文件中更为实际(例如,当您将脚本移动很多时)。在这种情况下,您可以定义一个跨越多行的数组,如下所示:
$computers = 'server-a',
'server-b',
'server-c',
...
Get-Service -Computer $computers -Name MyService* | ...