Как собрать простой скрипт 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 ответ

Я вижу некоторые проблемы:

  1. для начала нужна фиктивная пара двойных кавычек для заголовка
  2. cmd интерпретирует все знаки процента как включающие переменные, => удваивает их для экранирования.
  3. двойная кавычка весь URL и экранирование внутренних с обратной косой чертой

так что постарайтесь:

start "" "http: // localhost: 8080 / jsonrpc? request = {\" jsonrpc \ ": %% 20 \" 2.0 \ ", %% 20 \" id \ ": %% 201, %% 20 \" метод \":\"System.Shutdown\"}"
Другие вопросы по тегам