Ping代码回复另一种颜色

时间:2015-11-18 19:45:38

标签: powershell ping

我对编码很陌生,所以我知之甚少。

我正在编写第一个ping的代码。它可以ping您放入其中的任何工作站ID。我希望当它ping时,回复将为绿色并且请求超时将为红色。

我只想测试一下并从中学习。到目前为止,我有这个:

$Search = Read-Host "Enter Workstation ID"
$Reply = ping -t $Search

if ($Reply -like "Request Timed Out.") {
    Write-Host $Reply -ForegroundColor Red
}

但这不起作用。

1 个答案:

答案 0 :(得分:2)

如果您查看来自ping.exe的使用情况消息,您会看到-t开关使ping.exe继续ping主机,直到被Ctrl + C或Ctrl +中断为止打破。

这就是为什么它似乎无所事事"。

我可能会选择Test-Connection cmdlet,而不是ping.exe

$Hostname = Read-Host "please enter the hostname..."
if(Test-Connection -ComputerName $Hostname -Quiet)
{
    Write-Host "Ping succeeded!" -ForegroundColor Green
}
else
{
    Write-Host "Ping failed!" -ForegroundColor Red
}

它没有-t参数,但您可以为-Count参数提供一个非常高的值,并使其完成(每个请求之间有一秒钟,{ {1}}给你2 ^ 31秒,或68年的ping值):

[int]::MaxValue

如果您真的想要Test-Connection $Hostname -Count ([int]::MaxValue) 切换,则不能依赖赋值给变量,因为PowerShell会等待-t返回(故意,永远不会发生)。< / p>

可以管道ping.exe的标准输出,而PowerShell的异步运行时会让它们随时出现:

ping.exe

ping away!