Я пишу пакетный файл для некоторой работы, где мне нужно проверить, доступны ли хосты или нет. Мне нужно регистрировать все коды ошибок, которые я получаю при выполнении команд, которые я выполняю.
В частности, мне нужно использовать команды ping, traceroute и arp. Но я не нахожу различных уровней ошибок для выполнения этих команд. Где я могу найти уровни ошибок или коды ошибок для таких команд Windows?
Также, лучше ли использовать pathping вместо ping и traceroute по отдельности?
решение1
Пакетное решение с %ERRORLEVEL%
@Echo off
SET LOGFILE=MyLogFile.log
call :Logit >> %LOGFILE%
exit /b 0
:Logit
:: PING 192.168.1.1 -n 1 | FIND /I /V "unreachable" | FIND /I "Reply from "
По сути, он перенаправляет вывод метода :Logit
в LOGFILE
. exit
Команда должна гарантировать, что пакет завершит работу после выполнения :Logit
.
Вот решение PowerShell с простым try-catch
Try {
# Try to reach host
Test-Connection -Source "Server02", "Server12", "localhost" -ComputerName "Server01"
}
Catch {
# Catch the exception
$_ | Out-File C:\errors.txt -Append
# You can use this too but not both
$exception = $_.Exception.Message
Out-File -FilePath 'C:\myscript.log' -Append -InputObject $exception
}
PowerShell