美好的一天!
我与多个客户端一起工作,并且我的一个客户端有自己的收费站,显示实时服务器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
}
请帮助我修改第一个代码,以免每次刷新时都不会打开网格视图!
答案 0 :(得分:1)
您尝试过这样的事情吗?
$collection | out-gridview
sleep $waitseconds
(Get-Process -id $PID).CloseMainWindow()