如何组合一个简单的 powershell 脚本(或任何其他工具)来发出 API 命令(服务器标准 2016)

如何组合一个简单的 powershell 脚本(或任何其他工具)来发出 API 命令(服务器标准 2016)

我没有编程经验,不知道如何完成这项工作,如能得到任何帮助我将不胜感激

因此,如果我将一个命令粘贴到浏览器中,它就会执行,任务就完成了。这是一个 JSON API 请求,它连接到本地主机上监听端口 8080 的应用程序,命令 (1) 概述如下

http://localhost:8080/jsonrpc?request={"jsonrpc":%20"2.0",%20"id":%201,%20"method":"System.Shutdown"}

当我将此代码按原样粘贴到浏览器中时,它将按预期执行系统关闭任务(前提是正在监听的程序正在运行)

我无法将此命令转换为可使用任务计划程序或简单双击执行的批处理文件。我已尝试使用 CMD 在批处理文件中执行以下命令 (2),但它只是忽略了引号,结果出现解析错误 (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)都消失了,我猜 API JSON 请求(我认为它们是这么称呼的)对这类问题很敏感。

我尝试了 powershell 中的命令 (1),但没有成功。结果出现以下错误 (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. start 需要一对虚拟双引号作为标题
  2. cmd 将所有百分号解释为封闭变量,=> 将它们加倍以进行转义。
  3. 将整个 url 括起来,并使用反斜杠转义内部 url

因此尝试:

开始“” “http://localhost:8080/jsonrpc?请求={\“jsonrpc \”:%%20 \“2.0 \”,%%20 \“id \”:%%201,%%20 \“method \”:\“System.Shutdown \”}”

相关内容