如何将bash中正常运行的curl命令转换为PowerShell可用命令
PowerShell 等效命令实现
方案1:调用系统自带原生curl(推荐,Win10 1809及以上版本默认支持)
直接调用curl.exe即可复用几乎所有原bash下的curl参数,仅需要去掉URL内的转义符\:
curl.exe -s -H 'X-AUTH-TOKEN:09f4a92e8fbfc9f9f530771ac32d37a1' -H "Content-Type: application/json" -X GET 'http://127.0.0.1/centreon/api/beta/monitoring/services?search={"service.state":"2","service.is_acknowledged":"0"}'
方案2:使用PowerShell原生Invoke-WebRequest cmdlet(无需额外依赖)
对应原curl所有功能的原生实现如下:
# 隐藏请求进度条,等效原curl的-s静默参数 $ProgressPreference = 'SilentlyContinue' # 构造请求头 $requestHeaders = @{ "X-AUTH-TOKEN" = "09f4a92e8fbfc9f9f530771ac32d37a1" "Content-Type" = "application/json" } # 发起GET请求,返回结果中Content属性即为响应文本 $response = Invoke-WebRequest ` -Uri 'http://127.0.0.1/centreon/api/beta/monitoring/services?search={"service.state":"2","service.is_acknowledged":"0"}' ` -Method Get ` -Headers $requestHeaders # 输出响应内容 $response.Content
注意事项
- PowerShell默认的
curl是Invoke-WebRequest的别名,和Linux下的原生curl参数不通用,调用原生curl必须加.exe后缀 - PowerShell中单引号包裹的字符串会原样保留内容,不需要额外对大括号做转义,所以原URL中的
\转义符可以直接删除 - 如果需要把响应内容转为JSON对象操作,可以直接用
$jsonResult = $response.Content | ConvertFrom-Json处理
内容的提问来源于stack exchange,提问作者Adolf Ku
相关产品推荐
相关产品推荐

