Задача.
Проверить корректность и доступность URL-адреса, больше ничего не требуется.. Команда вызывается из другого программного файла (скрипт VimL).
Используя программу "curl" это можно сделать такой командой:
curl --silent --fail --output nul --head <URL>
после чего считывается
код возврата "curl" и подставляется в текстовый буфер.
Покурив Интернет и документацию, набросал команду, которая выполняет что‐то похожее:
powershell -command "%{[Net.ServicePointManager]::SecurityProtocol = 'Tls12, Tls11, Tls, Ssl3'} ; Invoke-Webrequest -UseDefaultCredentials -disablekeepalive -maximumredirection 2 -method head -UseBasicParsing -uri <URL>"
Но есть несколько сложностей:
1. Она пишет в консоль. Должна быть полностью «немой», т. е. как ключ "--silent" в программе "curl".
2. Получить от неё код возврата, типа такого или что‐то похожее, как
возвращает "curl". Пробовал разные варианты.
И как ранее подсказывал
MaxKozlov с exit
powershell -command "%{[Net.ServicePointManager]::SecurityProtocol = 'Tls12, Tls11, Tls, Ssl3'} ; exit Invoke-Webrequest -UseDefaultCredentials -disablekeepalive -maximumredirection 2 -method head -UseBasicParsing -uri <URL>"
И пытался считать "
$LastExitCode
", и прочитать переменную "
$?
", но результат удручающий.
Как я понял, с этим в "PowerShell"
всё плохо.
Есть ли какие‐нибудь решения? Нужно просто получить результат от команды — корректный URL или нет, доступен хост или нет.