Как собрать простой скрипт powershell (или любой другой инструмент) для выдачи команды API (стандарт сервера 2016)
У меня нет опыта программирования, как это сделать, любая помощь будет принята с благодарностью
Таким образом, есть команда, которая, если я вставлю в свой браузер, она выполнится, и работа будет выполнена. Это запрос JSON API, который подключается к локальному хосту к приложению, прослушивающему порт 8080, команда (1) описана ниже
http://localhost:8080/jsonrpc?request={"jsonrpc":%20"2.0",%20"id":%201,%20"method":"System.Shutdown"}
Когда я вставляю этот код в браузер "как есть", он выполняет ожидаемое завершение работы системы (при условии, что программа, которая прослушивает, работает)
У меня возникли проблемы с преобразованием этой команды в командный файл, который можно выполнить с помощью планировщика задач или простого двойного щелчка. Я пробовал команду ниже (2) в пакетном файле с использованием CMD, но он просто игнорирует кавычки, и в результате я получаю ошибку синтаксического анализа (3).
CMD команда (2)
start http://localhost:8080/jsonrpc?request={"jsonrpc":%20"2.0",%20"id":%201,%20"method":"System.Shutdown"}
Результирующая ошибка (3)
{"error":{"code":-32700,"message":"Parse error."},"id":null,"jsonrpc":"2.0"}
и URL выглядит так (4)
http://localhost:8080/jsonrpc?request={jsonrpc:02.0,0id:01,0method:System.Shutdown}
Все приведенные выше кавычки (4) пропали, я полагаю, запросы JSON API (я думаю, что они так называются) чувствительны к такого рода проблемам.
Я пробовал команду (1) в powershell, и она не будет иметь его. Результирующая ошибка ниже (5)
В строке:1 символ: 49 + http://localhost:8080/jsonrpc?request={"jsonrpc":% 20 "2.0",% 20 "id":% 20... + ~~~~~~~ ~~ Неожиданный токен ':%20"2.0" "в выражении или выражении. В строке:1 символ: 58 + http://localhost:8080/jsonrpc?request={"jsonrpc":% 20 "2.0",% 20 "id":% 20... + ~ Отсутствует аргумент в списке параметров. + CategoryInfo: ParserError: (:) [], ParentContainsErrorRecordException + FullyQualifiedErrorId: UnexpectedToken
Все, что мне нужно, - это сценарий, который при двойном щелчке или запуске с использованием планировщика задач выполнит и выдаст эту команду (1) на локальный хост, т.е. вставит команду как есть в браузер или пропустит браузер и сразу перейдет.
Я собираюсь признаться, что я совершенно нуб в этом, так что простое пошаговое руководство о том, как настроить это, будет огромной помощью. Хотя я совершенно уверен, что для многих из вас это прямая задача:) Я с нетерпением жду ваших ответов.
1 ответ
Я вижу некоторые проблемы:
- для начала нужна фиктивная пара двойных кавычек для заголовка
- cmd интерпретирует все знаки процента как включающие переменные, => удваивает их для экранирования.
- двойная кавычка весь URL и экранирование внутренних с обратной косой чертой
так что постарайтесь:
start "" "http: // localhost: 8080 / jsonrpc? request = {\" jsonrpc \ ": %% 20 \" 2.0 \ ", %% 20 \" id \ ": %% 201, %% 20 \" метод \":\"System.Shutdown\"}"