현장에서 성능 문제를 조사하고 있습니다. 일반적으로 내 앱이 속도를 내기에는 대역폭이 충분하지 않습니다. 일반적으로 작동 방식은 터미널(VNC 또는 WebEx를 통해)을 사용자 컴퓨터에 요청한 다음 명령 창을 작동시키고 서버에 PING을 실행하여 대기 시간을 확인하는 것입니다.
이 절차는 꽤 시간이 많이 걸립니다(예: 때때로 사람들이 책상에 앉아 있지도 않은 경우 등...).
사용자를 개입시키지 않고 사용자 컴퓨터에서 서버로 원격으로 PING을 실행할 수 있는 방법이 있습니까?
아니면 더 나은 대안이 있습니까?
답변1
제가 사용한 프로그램이 있습니다.데스크탑 센트럴 무료. 이를 통해 원격 컴퓨터의 명령 프롬프트에 연결하고 원하는 것을 실행할 수 있습니다. 기계가 작동하는 한 이 도구는 많은 도움이 될 수 있습니다. 또한 다른 사용자 입력 없이 원격 컴퓨터에서 수행할 수 있는 다른 많은 옵션/도구도 있습니다.
답변2
사용자의 컴퓨터에 공용 IP 주소가 있는 경우(NAT 뒤에 있지 않음) 서버에서 해당 컴퓨터를 ping할 수 있습니다.
답변3
나는 오히려 PowerShell의 Test-Connection을 좋아합니다.
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
당연히 웹 사이트 대신 ComputerName을 사용할 수 있습니다. 이 솔루션을 제안하는 이유는 시간을 제공하고 대기 시간을 측정할 수 있는 기능을 제공하기 때문입니다.
답변4
OP에 대한 답변이 확실하지 않으므로 동일한 답변 검색에 실패한 후 개발한 내용을 제출하겠습니다.
저는 Exchange 서버와 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]}
}
이것이 누군가에게 도움이 되기를 바랍니다.