http://qaru.site/questions/629995/powershell-test-connection-failed-due-to-lack-of-resources
Test-Connection
не отвечает хорошо, когда DNS не отвечает адресом или недоступен в сети. То есть, если командлет решает, что он вообще не может отправить пинг, это ошибки с неприятными способами, которые трудно уловить или игнорировать. Test-Connection
полезен, тогда вы можете гарантировать, что DNS будет разрешать имя по адресу и что сеть всегда будет присутствовать.
Я предпочитаю использовать WMI pings:
$Ping = Get-WmiObject -Class Win32_PingStatus -Filter "Address='$ComputerName' AND Timeout=1000";
$Ping2 = Get-CimInstance -ClassName Win32_PingStatus -Filter "Address='$ComputerName' AND Timeout=1000";
$StatusCodes = @{
[uint32]0 = 'Success';
[uint32]11001 = 'Buffer Too Small';
[uint32]11002 = 'Destination Net Unreachable';
[uint32]11003 = 'Destination Host Unreachable';
[uint32]11004 = 'Destination Protocol Unreachable';
[uint32]11005 = 'Destination Port Unreachable';
[uint32]11006 = 'No Resources';
[uint32]11007 = 'Bad Option';
[uint32]11008 = 'Hardware Error';
[uint32]11009 = 'Packet Too Big';
[uint32]11010 = 'Request Timed Out';
[uint32]11011 = 'Bad Request';
[uint32]11012 = 'Bad Route';
[uint32]11013 = 'TimeToLive Expired Transit';
[uint32]11014 = 'TimeToLive Expired Reassembly';
[uint32]11015 = 'Parameter Problem';
[uint32]11016 = 'Source Quench';
[uint32]11017 = 'Option Too Big';
[uint32]11018 = 'Bad Destination';
[uint32]11032 = 'Negotiating IPSEC';
[uint32]11050 = 'General Failure'
};
$StatusCodes[$Ping.StatusCode];
$StatusCodes[$Ping2.StatusCode];
В качестве альтернативы, я использовал .Net Pings, как @BenH, также описанный, который много работает для вас. Была причина, по которой я прекратил использовать их в пользу WMI и CIM, но я больше не могу вспомнить, что это за причина.
Комментариев нет:
Отправить комментарий