将curl命令转换为PowerShell

时间:2018-10-31 19:10:46

标签: rest powershell curl websense

有人有通过PowerShell使用Websense API的经验吗?我需要将curl命令(我正在使用的命令)转换为Powershell,以便可以编写脚本。任何人都有任何有用的资源吗?我需要翻译的curl命令示例如下:

开始新交易:

curl -k -u <username>:<password> -X POST https://<ps_ip_address>:<port>/api/web/v1/categories/start

添加API管理的类别(HTTPS请求中的所有数据):

curl -k -u <username>:<password> -X POST https://<ps_ip_address>:<port>/api/web/v1/categories -d "{\"Transaction ID\":\"<transaction_ID_string>\",\"Categories\": [ {\"Category Name\": \"<name_string>\",\"Category Description\":\"<description_string>\",\"Parent\": <numeric_category_ID>}]}"

添加URL(HTTPS请求中的所有数据):

curl -k -u <username>:<password> -X POST https://<ps_ip_address>:<port>/api/web/v1/categories/urls -d "{\"Transaction ID\": \"<transaction_ID_string>\",\"Category ID\": <numeric_ID>,\"URLs\":[\"https://www.new_url.com/\"]}" --cacert PolApiServer.crt

提交交易:

curl -k -u <username>:<password> -X POST https://<ps_ip_address>:<port>/api/web/v1/categories/commit?TransactionID="<id_string>"

3 个答案:

答案 0 :(得分:0)

我不会为您编写解释器,但是肯定有可能...或者您可以从PowerShell中运行 curl.exe (显然,您需要安装在用于从PowerShell运行curl命令的计算机上> curl.exe

查看 Invoke-WebRequest Invoke-RestMethod -这两个函数都表现出类似curl的行为。

编辑:

因此,PowerShell中的 curl 命令只不过是 Invoke-WebRequest 的别名。运行此命令: Get-Alias -Definition Invoke-WebRequest 并查看输出。 Invoke-WebRequest 中的每个参数最多匹配一个 curl 开关。您所要做的就是查看 curl 文档,并将其参数与 Invoke-WebRequest 参数进行匹配。您要问的很多内容取决于您向其发送HTTP请求的API /站点( curl Invoke-WebRequest 发送HTTP请求)。例如,向API /网站进行身份验证。如果该网站使用基本身份验证,则可以在PowerShell中执行以下操作:

Invoke-WebRequest-方法发布-Uri“ https:// :<端口> / api / web / v1 / categories / start”-标头@ {“ Authorization” =“ Basic%your_encoded_credentials_here% “}

.. curl -X 开关表示HTTP方法。. Invoke-WebRequest -Method 参数起着相同的作用。。听起来您真的只需要来阅读 Invoke-WebRequest Invoke-RestMethod -两者之间的唯一区别是它们给您的回报。

我认为您对如何区分和最终解释 curl Invoke-WebRequest 感到困惑,这与您似乎对HTTP似乎很熟悉有关。要求。这两个命令都发送HTTP请求-它们只是使用不同的开关-如果您了解每个命令如何处理HTTP请求,则可以从 curl 解释为 Invoke-WebRequest .. < / p>

更多信息在这里: Invoke-WebRequest 调用RestMethod

仅在此站点上,还有大量示例说明如何将 curl 解释为 Invoke-WebRequest / Powershell 。需要重新了解HTTP请求以及 curl 如何处理它们以及 Invoke-WebRequest 处理它们的方式上的差异。

答案 1 :(得分:0)

有几种方法可以这样做。 1.下载curl.exe并将其指向一个变量,然后将命令传递给它

RewriteEngine On
RewriteRule .* public/index.php

另一个会是

$curlExe = "C:\download\curl-7.59.0\src\curl.exe"
& $curlExe -i -k -X POST -d '"{\"groupId\": xxxx}"' "https://site/site?access_token=zzzzzz" -s 

我希望有帮助

答案 2 :(得分:0)

您可以使用 splatting 转换为 PowerShell 语法。

PS> curl.exe '-k', 
 '-u', '<username>:<password>', 
 '-X', 'POST ', 
 'https://<ps_ip_address>:<port>/api/web/v1/categories/start'

PS> curl.exe '-k', 
 '-u', '<username>:<password>', 
 '-X', 'POST ', 
 'https://<ps_ip_address>:<port>/api/web/v1/categories',
 '-d', "{\"Transaction ID\":\"<transaction_ID_string>\",\"Categories\": [ {\"Category Name\": \"<name_string>\",\"Category Description\":\"<description_string>\",\"Parent\": <numeric_category_ID>}]}"

PS> curl.exe '-k', 
 '-u', '<username>:<password>', 
 '-X', 'POST ', 
 'https://<ps_ip_address>:<port>/api/web/v1/categories/commit?TransactionID="<id_string>"'

此命令将从 Windows 操作系统调用 curl.exe。 要知道这个文件在哪里运行

PS> Get-Command curl.exe