我想检查一个(.txt)服务器列表,看看(a)服务器是否在线,如果是,然后检查(B)是否存在特定的服务
它应该执行以下操作(在高级概述中):
1.检查服务器是否存在-如果不存在,则声明(write-host)无法访问服务器
1.如果服务器存在,则检查服务-如果服务存在,则执行服务基本get-service info并显示(如图所示)-如果服务不存在,则声明(write-host)“service doesn 't exist on $server”
powershell
我的当前代码当前代码只是跳过通过Test-Connection测试但没有服务的服务器
$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,但我不认为这将做什么,我会需要,或者也许?
我知道这根本没有意义(noob)。但这里有一个我尝试过的东西,当然不起作用。
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
}
}
型
1条答案
按热度按时间9rnv2umw1#
-ComputerName
传递计算机名称的 * 数组 *,可以利用Invoke-Command
的能力,以 * 并行 * 方式定位 * 多个 * 计算机。Get-Service
在成功连接后未在目标计算机上找到服务-使用公共-ErrorVariable
参数。-ErrorVariable
收集的[System.Management.Automation.ErrorRecord]
示例的属性以及Format-Table
和calculated properties。字符串