Power Shell服务器实时ping状态

时间:2018-09-18 14:44:48

标签: powershell active-directory

美好的一天!

我与多个客户端一起工作,并且我的一个客户端有自己的收费站,显示实时服务器ping统计信息,这在进行补丁活动期间非常有用,因为随后会重新启动等。我想设计一个类似此工具或其他工具,或者表示我可以在其中查看域中服务器的实时ping统计信息。我可以使用Power Shell进行此操作吗?有什么方法可以刷新我的Power Shell页面或输出HTML页面,请更新各个服务器的ping统计信息!我对编程语言一无所知,但是作为我的宠物项目,我想这样做,我无法向客户询问所有这些详细信息。非常感谢您的帮助!

谢谢大家,我尝试了以下两个代码:

param(
[int]$waitseconds = 3
)

while($true) {
$servers = Get-Content .\servers.txt
$collection = $()

foreach ($server in $servers)
{
    $status = @{ "ServerName" = $server; "TimeStamp" = (Get-Date -f s) }
    if (Test-Connection $server -Count 1 -ea 0 -Quiet)
    { 
        $status["Results"] = "Up"
    } 
    else 
    { 
        $status["Results"] = "Down" 
    }
    New-Object -TypeName PSObject -Property $status -OutVariable serverStatus
    $collection += $serverStatus

}
$collection | out-gridview; sleep $waitseconds
}

这在网格视图中为我提供了输出,并且还成功刷新了输出,但是新刷新的输出正在新的网格视图窗口中显示。我负担不起打开许多窗户。因此,我尝试了以下代码:

param(
[int]$waitseconds = 3
)

while($true) {
$servers = Get-Content .\servers.txt
$collection = $()
foreach ($server in $servers)
{
    $status = @{ "ServerName" = $server; "TimeStamp" = (Get-Date -f s) }
    if (Test-Connection $server -Count 1 -ea 0 -Quiet)
    { 
        $status["Results"] = "Up"
    } 
    else 
    { 
        $status["Results"] = "Down" 
    }
    New-Object -TypeName PSObject -Property $status -OutVariable serverStatus
    $collection += $serverStatus

}
Start-Process -FilePath powershell.exe -ArgumentList "-WindowStyle -NoNewWindow -Command &{ $collection | out-gridview; sleep $waitseconds; exit }" -Wait
}

此代码根本不提供gridview输出,它只是在shell本身中显示ping统计信息,但可以刷新。

我也尝试了以下代码,最后使用-NoNewWWindow,这使输出一次,然后关闭:

param(
[int]$waitseconds = 3
)

while($true) {
$servers = Get-Content .\servers.txt
$collection = $()
foreach ($server in $servers)
{
    $status = @{ "ServerName" = $server; "TimeStamp" = (Get-Date -f s) }
    if (Test-Connection $server -Count 1 -ea 0 -Quiet)
    { 
        $status["Results"] = "Up"
    } 
    else 
    { 
        $status["Results"] = "Down" 
    }
    New-Object -TypeName PSObject -Property $status -OutVariable serverStatus
    $collection += $serverStatus

}
Start-Process -FilePath powershell.exe -ArgumentList "-WindowStyle -Command &{ $collection | out-gridview; sleep $waitseconds; exit }" -Wait -NoNewWindow
}

请帮助我修改第一个代码,以免每次刷新时都不会打开网格视图!

1 个答案:

答案 0 :(得分:1)

您尝试过这样的事情吗?

$collection | out-gridview
sleep $waitseconds
(Get-Process -id $PID).CloseMainWindow()