PowerShell:检查服务器是否存在,然后检查服务是否存在于多个服务器上

yshpjwxd  于 2023-11-18  发布在  Shell
关注(0)|答案(1)|浏览(198)

我想检查一个(.txt)服务器列表,看看(a)服务器是否在线,如果是,然后检查(B)是否存在特定的服务
它应该执行以下操作(在高级概述中):
1.检查服务器是否存在-如果不存在,则声明(write-host)无法访问服务器
1.如果服务器存在,则检查服务-如果服务存在,则执行服务基本get-service info并显示(如图所示)-如果服务不存在,则声明(write-host)“service doesn 't exist on $server”
powershell

我的当前代码当前代码只是跳过通过Test-Connection测试但没有服务的服务器

  1. $serverlist = Get-Content "C:\BTPM-PS-Scripts\servers.txt"
  2. foreach ($server in $serverlist){
  3. if(Test-Connection -ComputerName $server -Count 1 -Quiet)
  4. {
  5. Invoke-Command -computername $server -ScriptBlock {
  6. Get-Service -name WHATEVERSERVICE }
  7. }
  8. else
  9. {
  10. Write-Host "Server $server not found" -ForegroundColor Yellow
  11. }
  12. }

字符串
我只是不知道从这里去哪里。我第一次想到使用IF和ELSEIF,但我不认为这将做什么,我会需要,或者也许?
我知道这根本没有意义(noob)。但这里有一个我尝试过的东西,当然不起作用。

  1. foreach ($server in $serverlist){
  2. if(Test-Connection -ComputerName $server -Count 1 -Quiet)
  3. {
  4. **NOT ACTUAL CODE BUT SHOULD CONTINUE IF "TEST-CONNECTION" CONDITION IS TRUE**
  5. }
  6. if(Invoke-Command -computername $server -ScriptBlock {Get-Service -name stor*})
  7. {
  8. write-host "service exists"
  9. }
  10. elseif(Write-Host "stupid service doesn't exist")
  11. {
  12. continue
  13. }
  14. {
  15. Invoke-Command -computername $server -ScriptBlock {
  16. Get-Service -name avecto* }
  17. }
  18. else
  19. {
  20. Write-Host "Server $server not found" -ForegroundColor Yellow
  21. }
  22. }

9rnv2umw

9rnv2umw1#

  • 通过向-ComputerName传递计算机名称的 * 数组 *,可以利用Invoke-Command的能力,以 * 并行 * 方式定位 * 多个 * 计算机。
  • 收集任何错误-无论是由于无法连接到开始,还是由于Get-Service在成功连接后未在目标计算机上找到服务-使用公共-ErrorVariable参数。
  • 在事后打印任何错误,例如,使用通过-ErrorVariable收集的[System.Management.Automation.ErrorRecord]示例的属性以及Format-Tablecalculated properties
  1. # Target all computers in parallel and output success output.
  2. # Silence errors, but collect them in self-chosen variable $errs
  3. # for later processing.
  4. Invoke-Command -ErrorAction SilentlyContinue -ErrorVariable errs -ComputerName (Get-Content C:\BTPM-PS-Scripts\servers.txt) {
  5. Get-Service -Name WHATEVERSERVICE
  6. }
  7. # Print errors, if any, grouped by category
  8. $errs |
  9. Format-Table -Force -GroupBy CategoryInfo -Property `
  10. @{ Name='ComputerName'; Expression={ if ($_.OriginInfo) { $_.OriginInfo } else { $_.TargetObject } } },
  11. @{ Name='ErrorMessage'; Expression={ $_.ToString() } }

字符串

展开查看全部

相关问题