我对编码很陌生,所以我知之甚少。
我正在编写第一个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
}
但这不起作用。
答案 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