Elven
16-05-2018, 14:53
есть скрипт
$path=E:\
Get-Content -Path 'E:\hosts.txt' | foreach {
Test-NetConnection $_ | ForEach-Object {
$bl=Get-Date -Format "yyyy.MM.dd HH:mm:ss"
Write-Output $bl $_.PingSucceeded --------------------} | Out-File $path\$_.txt
}
И все в нем хорошо кроме одного: большая часть хостов опрашивается практически мгновенно, а вот некоторые залипают от двух до десяти секунд (при том что все равно возвращают true). Все хосты в одной подсети, на почти всех одинаковая операционная система. Ну и естественно если хост недоступен об этом можно узнать секунд через двадцать.
Теперь собственно вопросы:
1. Как решить вопрос с тормозами с доступными хостами?
2. Как заставить скрипт не ждать треть минуты ответа от недоступного?
3. Как распараллелить процесс?
з.ы. пробовал колупать в сторону System.Net.Sockets.TCPClient -ArgumentList host,port , но мало знаю чтобы обойтись без указания порта.
$path=E:\
Get-Content -Path 'E:\hosts.txt' | foreach {
Test-NetConnection $_ | ForEach-Object {
$bl=Get-Date -Format "yyyy.MM.dd HH:mm:ss"
Write-Output $bl $_.PingSucceeded --------------------} | Out-File $path\$_.txt
}
И все в нем хорошо кроме одного: большая часть хостов опрашивается практически мгновенно, а вот некоторые залипают от двух до десяти секунд (при том что все равно возвращают true). Все хосты в одной подсети, на почти всех одинаковая операционная система. Ну и естественно если хост недоступен об этом можно узнать секунд через двадцать.
Теперь собственно вопросы:
1. Как решить вопрос с тормозами с доступными хостами?
2. Как заставить скрипт не ждать треть минуты ответа от недоступного?
3. Как распараллелить процесс?
з.ы. пробовал колупать в сторону System.Net.Sockets.TCPClient -ArgumentList host,port , но мало знаю чтобы обойтись без указания порта.