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

问题描述 投票:0回答:1

我想检查 (.txt) 服务器列表以查看 (a) 服务器是否在线,如果在线,则检查 (b) 特定服务是否存在

它应该执行以下操作(高级概述):

  1. 检查服务器是否存在 -如果没有,则说明(写入主机)无法到达服务器
  2. 如果服务器存在,检查服务 -如果服务存在,则执行该服务的基本获取服务信息并显示(如图所示) -如果服务不存在,则声明(写入主机)“$server 上不存在服务”

powershell

我当前的代码 当前代码只是跳过通过测试连接测试但没有服务的服务器

$serverlist = Get-Content "C:\BTPM-PS-Scripts\servers.txt"

foreach ($server in $serverlist){
    if(Test-Connection -ComputerName $server -Count 1 -Quiet)
        {
        Invoke-Command -computername $server -ScriptBlock { 
        Get-Service -name WHATEVERSERVICE }
        }
    else
        {
        Write-Host "Server $server not found" -ForegroundColor Yellow
        }

}

我根本不知道从这里该去哪里。我首先想到使用 IF 和 ELSEIF,但我认为这不能完全满足我的需要,或者也许?

我知道这根本没有意义(菜鸟)。但这是我尝试过的,当然没有用。

foreach ($server in $serverlist){
    if(Test-Connection -ComputerName $server -Count 1 -Quiet)
        
        {
        **NOT ACTUAL CODE BUT SHOULD CONTINUE IF "TEST-CONNECTION" CONDITION IS TRUE**
        }

        if(Invoke-Command -computername $server -ScriptBlock {Get-Service -name stor*}) 
            {
            write-host "service exists"
            }
        elseif(Write-Host "stupid service doesn't exist")
            {
            continue
            }
        
        
        {
        Invoke-Command -computername $server -ScriptBlock { 
        Get-Service -name avecto* }
        }
    else
        {
        Write-Host "Server $server not found" -ForegroundColor Yellow
        }
    }
powershell if-statement service
1个回答
0
投票
# Target all computers in parallel and output success output.
# Silence errors, but collect them in self-chosen variable $errs
# for later processing.
Invoke-Command -ErrorAction SilentlyContinue -ErrorVariable errs -ComputerName (Get-Content C:\BTPM-PS-Scripts\servers.txt) {
  Get-Service -Name WHATEVERSERVICE
}

# Print errors, if any, grouped by category
$errs |
  Format-Table -Force -GroupBy CategoryInfo -Property `
     @{ Name='ComputerName'; Expression={ if ($_.OriginInfo) { $_.OriginInfo } else { $_.TargetObject } } }
     @{ Name='ErrorMessage'; Expression={ $_.ToString() } }
© www.soinside.com 2019 - 2024. All rights reserved.