Kann ich die PING-Zeit zwischen zwei anderen Computern messen?

Kann ich die PING-Zeit zwischen zwei anderen Computern messen?

Ich untersuche ein Leistungsproblem vor Ort. Normalerweise reicht die Bandbreite einfach nicht aus, damit meine App schnell ist. Normalerweise funktioniert es so, dass ich per Terminal (über VNC oder WebEx) auf den Computer des Benutzers zugreife, dann das Befehlsfenster öffne und einen PING zum Server ausführe, um die Latenz zu sehen.

Dieses Verfahren ist ziemlich zeitaufwändig (z. B. sind die Leute manchmal nicht einmal an ihrem Schreibtisch usw.).

Gibt es für mich eine Möglichkeit, PING per Fernzugriff vom Computer des Benutzers zum Server auszuführen, ohne den Benutzer jemals einzubeziehen?

Oder gibt es eine bessere Alternative?

Antwort1

Es gibt ein Programm, das ich verwendet habe, namensDesktop Central Kostenlos. Sie können damit eine Verbindung zur Eingabeaufforderung eines Remotecomputers herstellen und alles ausführen, was Sie möchten. Solange der Computer läuft, kann dieses Tool sehr hilfreich sein. Es bietet auch viele andere Optionen/Tools, die Sie von Remotecomputern aus ausführen können, ohne dass andere Benutzereingaben erforderlich sind.

Antwort2

Wenn der Computer des Benutzers über eine öffentliche IP-Adresse verfügt (sich also nicht hinter NAT befindet), können Sie seinen Computer vom Server aus anpingen.

Antwort3

Ich mag PowerShells Test-Connection lieber

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    

Natürlich können Sie anstelle einer Website auch einen Computernamen verwenden. Ich schlage diese Lösung vor, da sie die Zeit angibt und somit die Möglichkeit bietet, die Latenz zu messen.

Antwort4

Ich bin nicht sicher, ob die OP beantwortet wurde, daher sende ich, was ich entwickelt habe, nachdem ich erfolglos nach der gleichen Antwort gesucht habe.

Ich verwende hierzu zwei verschiedene Ansätze, um Verbindungen zwischen Exchange-Servern und dem Server zu testen, der im Argument New-MailboxExportRequest -FilePath angegeben wird.

#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]}
}

Hoffe, das hilft jemandem.

verwandte Informationen