Estou investigando um problema de desempenho na área. Normalmente, simplesmente não há largura de banda suficiente para que meu aplicativo seja rápido. Normalmente, a maneira como funciona é pedir ao Terminal (via VNC ou WebEx) na máquina do usuário, abrir a janela de comando e executar o PING no servidor para ver a latência.
Este procedimento é bastante demorado (por exemplo, às vezes as pessoas nem sequer estão na sua secretária, etc...).
Existe uma maneira de executar o PING remotamente da máquina do usuário para o servidor sem nunca envolver o usuário?
Ou existe uma alternativa melhor?
Responder1
Existe um programa que usei chamadoDesktop Central Grátis. Ele permite que você se conecte ao prompt de comando de um computador remoto e execute o que quiser. Desde que a máquina esteja ligada, esta ferramenta pode ajudar muito. Ele também possui muitas outras opções/ferramentas que você pode executar em computadores remotos sem envolver outra entrada do usuário.
Responder2
Se a máquina do usuário tiver um endereço IP público (não está atrás de NAT), você poderá executar ping na máquina a partir do servidor.
Responder3
Eu gosto bastante do Test-Connection do PowerShell
Test-Connection computerperformance.co.uk
Source Destination IPV4Address Bytes Time(ms)
------ ----------- ----------- ----- --------
WIN7 computerperf... 72.26.108.9 32 148
WIN7 computerperf... 72.26.108.9 32 149
WIN7 computerperf... 72.26.108.9 32 149
WIN7 computerperf... 72.26.108.9 32 149
Naturalmente você pode usar um ComputerName em vez de um site. Sugiro esta solução porque dá o tempo e, portanto, a capacidade de medir a latência.
Responder4
Não tenho certeza se o OP foi respondido, então enviarei o que desenvolvi depois de procurar sem sucesso pela mesma resposta.
Eu uso duas abordagens diferentes para isso, para testar conexões entre servidores Exchange e o servidor que será designado no argumento New-MailboxExportRequest -FilePath.
#invoke-command (test-connection)
function Get-TestConnectionResponseTime
{
#returns a hash of min, max, avg ping times
param($Pingee,$Pinger)
$TCScript="
`$result = Test-Connection $Pingee
`$min=(`$result|Measure-Object -Minimum -Property responsetime).Minimum
`$max=(`$result|Measure-Object -Maximum -Property responsetime).Maximum
`$avg=(`$result|Measure-Object -Average -Property responsetime).Average
@{Min=`$min;Max=`$max;Avg=`$avg}
"
$CxtScript = $ExecutionContext.InvokeCommand.NewScriptBlock($TCScript)
try{
Invoke-Command -ComputerName $Pinger -ScriptBlock $CxtScript -ErrorAction Stop}
catch [System.Management.Automation.RuntimeException]{
return "Probably a firewall restriction: " + $error[0].FullyQualifiedErrorId}
catch{
return "From catch-all error trap: " + $error[0].FullyQualifiedErrorId}
}
#start-process (psexec -> ping)
function Get-PingResponseTime
{
#uses start-process to run ping from remote to remote, returns a hash of min, max, avg ping times
# this one is slow and clunky, but psexec is allowed though some of the firewalls I contend with,
# and invoke-command isn't. To collect the output in the script, I had to write it to a log and
# pick it up afterwards (by watching for the last line of the output to appear in the log file)
param($Pingee,$Pinger)
$argumentlist = "$Pinger ping $Pingee"
$timestamp = Get-Date
$psexecID = Start-Process -FilePath psexec -ArgumentList ("\\" + $argumentlist) -NoNewWindow -RedirectStandardOutput \\MyComputer\c$\temp\pinglog.txt -PassThru #-Wait
Write-Host "Started process" $psexecID.Name
#wait for the remote process to finish
While(Get-Process -ComputerName $Pinger | ?{$_.Name -eq $psexecID.Name}){
Write-Host "." -NoNewline
}
#wait for the completed log file on my local system
Write-Host "Waiting for $pinger to return results..."
while(!((Get-Content C:\temp\pinglog.txt) -match "Average = ")){
Write-Host "." -NoNewline
Start-Sleep -Seconds 1
}
Write-Host " ah, there they are!"
#parse the ping output
$pingtimes = ((Get-Content C:\temp\pinglog.txt) -match "Average = ").trim() -split ", " | %{($_ -split " = ")[1].trim("ms")}
return @{Min=$pingtimes[0];Max=$pingtimes[1];Avg=$pingtimes[2]}
}
Espera que isso ajude alguém.