Лучший отвечающий
Определение ближайшего сервера

Вопрос
-
Доброго времени суток. Задача следующая, есть несколько серверов необходимо проверить соединение к каждому и выбрать тот у кого будет наименьший пинг.
Заранее спасибо
18 августа 2017 г. 10:11
Ответы
-
Попробуйте так
$comps = "server1, server2, server3, server4" foreach ($comp in $comps) { $test = (Test-Connection -ComputerName $comp -Count 4 | measure-Object -Property ResponseTime -Average).average $response = ($test -as [int])
$object = New-Object –TypeNamePSObject $object | Add-Member –MemberTypeNoteProperty –Name Computername –Value $comp
$object | Add-Member –MemberTypeNoteProperty –Name Response –Value $response
$object
} | sort response -descending
The opinion expressed by me is not an official position of Microsoft
- Предложено в качестве ответа Alexander RusinovModerator 18 августа 2017 г. 11:20
- Помечено в качестве ответа Alexander RusinovModerator 18 августа 2017 г. 11:20
- Снята пометка об ответе Omni_Vidente 18 августа 2017 г. 11:37
- Отменено предложение в качестве ответа Omni_Vidente 18 августа 2017 г. 11:37
- Изменено Vector BCOModerator 18 августа 2017 г. 15:44
- Предложено в качестве ответа Vector BCOModerator 18 августа 2017 г. 16:16
- Помечено в качестве ответа Alexander RusinovModerator 21 августа 2017 г. 19:42
18 августа 2017 г. 11:12Модератор -
$comps = "server1, server2, server3, server4" $pc = $comps | Sort { (Test-Connection $_ | measure -Property ResponseTime -Average).average} | Select -First 1
- Предложено в качестве ответа Alexander RusinovModerator 21 августа 2017 г. 19:42
- Помечено в качестве ответа Vector BCOModerator 29 августа 2017 г. 15:30
21 августа 2017 г. 9:02Отвечающий
Все ответы
-
Пока у меня получается просто протестировать список компов и вывести значения
$comps = "server1, server2, server3, server4" foreach ($comp in $comps) { $test = (Test-Connection -ComputerName $comp -Count 4 | measure-Object -Property ResponseTime -Average).average $response = ($test -as [int]) write-host $comp $response }
18 августа 2017 г. 10:57 -
Я страшное скажу- наименьший пинг не значит, что сервер менее загружен, или сеть (latency) менее высокая. Что сделать-то хотите в двух словах, откройте тайну? А то пахнет костылями пока.18 августа 2017 г. 11:09
-
Попробуйте так
$comps = "server1, server2, server3, server4" foreach ($comp in $comps) { $test = (Test-Connection -ComputerName $comp -Count 4 | measure-Object -Property ResponseTime -Average).average $response = ($test -as [int])
$object = New-Object –TypeNamePSObject $object | Add-Member –MemberTypeNoteProperty –Name Computername –Value $comp
$object | Add-Member –MemberTypeNoteProperty –Name Response –Value $response
$object
} | sort response -descending
The opinion expressed by me is not an official position of Microsoft
- Предложено в качестве ответа Alexander RusinovModerator 18 августа 2017 г. 11:20
- Помечено в качестве ответа Alexander RusinovModerator 18 августа 2017 г. 11:20
- Снята пометка об ответе Omni_Vidente 18 августа 2017 г. 11:37
- Отменено предложение в качестве ответа Omni_Vidente 18 августа 2017 г. 11:37
- Изменено Vector BCOModerator 18 августа 2017 г. 15:44
- Предложено в качестве ответа Vector BCOModerator 18 августа 2017 г. 16:16
- Помечено в качестве ответа Alexander RusinovModerator 21 августа 2017 г. 19:42
18 августа 2017 г. 11:12Модератор -
Я страшное скажу- наименьший пинг не значит, что сервер менее загружен, или сеть (latency) менее высокая. Что сделать-то хотите в двух словах, откройте тайну? А то пахнет костылями пока.
Есть несколько серверов расположенных в разных точках мира. Пользователь должен подключаться к ближайшему к нему серверу, сейчас приходиться каждый раз в ручную выяснять к какому ему лучше подключится.
Т.е. мне нужно чтобы при запуске было определено какой сервер ближе и затем уже выполнялись нужные операции с этим сервером
- Изменено Omni_Vidente 18 августа 2017 г. 11:27
18 августа 2017 г. 11:22 -
Попробуйте так
$comps = "server1, server2, server3, server4" foreach ($comp in $comps) { $test = (Test-Connection -ComputerName $comp -Count 4 | measure-Object -Property ResponseTime -Average).average $response = ($test -as [int])
$object = New-Object –TypeNamePSObject $object | Add-Member –MemberTypeNoteProperty –Name Computername –Value $comp
$object | Add-Member –MemberTypeNoteProperty –Name Response –Value $response
} | sort response -descending
The opinion expressed by me is not an official position of Microsoft
ERROR: + } | sort response -descending
ERROR: + ~
ERROR: Пустой элемент канала не допускается.
- Изменено Omni_Vidente 18 августа 2017 г. 11:25
18 августа 2017 г. 11:23 -
пока нужный результат получается таким скриптом:
$ping = foreach ($comp in $comps) { $test = (Test-Connection -ComputerName $comp -Count 4 | measure-Object -Property ResponseTime -Average).average $response = ($test -as [int]) $object = New-Object –TypeName PSObject $object | Add-Member –MemberType NoteProperty –Name Computername –Value $comp $object | Add-Member –MemberType NoteProperty –Name Response –Value $response Write-Output $object } $server = (($ping | sort response)[0]).computername
- Предложено в качестве ответа Vector BCOModerator 18 августа 2017 г. 16:16
18 августа 2017 г. 12:06 -
Любите вы усложнять
Я сверху поправил скрипт
Если вам нужен не порядок серверов по близости, а лишь один - то есть такая конструкция
.... | select computername -first 1
The opinion expressed by me is not an official position of Microsoft
- Изменено Vector BCOModerator 18 августа 2017 г. 15:49
- Предложено в качестве ответа Vector BCOModerator 18 августа 2017 г. 16:16
18 августа 2017 г. 15:44Модератор -
У меня ни в какую не хочет работать
$comps = "s-asia.****.com", "s-europe.***.org", "s-europe.***.com", "s-us.***.com" foreach ($comp in $comps) { $test = (Test-Connection -ComputerName $comp -Count 4 | measure-Object -Property ResponseTime -Average).average $response = ($test -as [int]) $object = New-Object –TypeName PSObject $object | Add-Member –MemberType NoteProperty –Name Computername –Value $comp $object | Add-Member –MemberType NoteProperty –Name Response –Value $response $object } | select computername -first 1
строка:11 знак:3
+ } | select computername -first 1
+ ~
Пустой элемент канала не допускается.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : EmptyPipeElement
- Изменено Omni_Vidente 18 августа 2017 г. 17:38
18 августа 2017 г. 17:37 -
$comps = "server1, server2, server3, server4" $pc = $comps | Sort { (Test-Connection $_ | measure -Property ResponseTime -Average).average} | Select -First 1
- Предложено в качестве ответа Alexander RusinovModerator 21 августа 2017 г. 19:42
- Помечено в качестве ответа Vector BCOModerator 29 августа 2017 г. 15:30
21 августа 2017 г. 9:02Отвечающий