You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将指定curl POST命令转换为使用Invoke-WebRequest的PowerShell命令

curl命令转Invoke-WebRequest PowerShell命令方案

参数对应关系

先明确原curl各参数对应的PowerShell实现逻辑:

  • -s(静默模式,隐藏进度输出):设置$ProgressPreference = 'SilentlyContinue',搭配-UseBasicParsing参数跳过HTML DOM解析减少冗余输出
  • -k(忽略SSL证书校验):PowerShell 5.1及更低版本需临时配置证书信任策略,PowerShell 7+可直接使用-SkipCertificateCheck参数
  • -X POST:对应-Method Post参数指定请求方法
  • -u 'xxx':'xxx'(基础身份认证):通过构建PSCredential对象传入-Credential参数,或手动构造Basic认证请求头

完整实现代码

适配PowerShell 5.1及以上所有版本

# 临时禁用SSL证书校验(对应原curl -k参数,仅当前会话生效)
Add-Type @"
using System.Net;
using System.Security.Cryptography.X509Certificates;
public class TrustAllCertsPolicy : ICertificatePolicy {
    public bool CheckValidationResult(
        ServicePoint srvPoint, X509Certificate certificate,
        WebRequest request, int certificateProblem) {
        return true;
    }
}
"@
[System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy

# 关闭请求进度条输出(对应原curl -s参数)
$ProgressPreference = 'SilentlyContinue'

# 替换为实际的账号密码
$username = 'xxx'
$password = ConvertTo-SecureString 'xxx' -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential ($username, $password)

# 发送POST请求
$response = Invoke-WebRequest -Uri "https://xxxx/rest/com/vmware/cis/session" `
    -Method Post `
    -Credential $credential `
    -UseBasicParsing

# 输出返回结果,可按需调整处理逻辑
$response.Content

适配PowerShell 7+ 简化版本

PowerShell 7及以上版本原生支持跳过证书校验参数,无需额外配置证书策略:

$ProgressPreference = 'SilentlyContinue'

# 替换为实际的账号密码
$username = 'xxx'
$password = ConvertTo-SecureString 'xxx' -AsPlainText -Force
$credential = [System.Management.Automation.PSCredential]::new($username, $password)

# 发送POST请求
$response = Invoke-WebRequest -Uri "https://xxxx/rest/com/vmware/cis/session" `
    -Method Post `
    -Credential $credential `
    -UseBasicParsing `
    -SkipCertificateCheck # 对应原curl -k参数

# 输出返回结果,可按需调整处理逻辑
$response.Content

补充说明

  • 提取VMware接口返回的会话ID可使用以下代码:
$sessionId = ($response.Content | ConvertFrom-Json).value
  • 若使用-Credential参数出现认证失败,可替换为手动构造认证头的方式:
# 替换原有Credential配置段
$base64Auth = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("${username}:${password}"))
$headers = @{ Authorization = "Basic $base64Auth" }
# 请求时删除-Credential参数,替换为 -Headers $headers

内容的提问来源于stack exchange,提问作者TomTom30

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 07:54:02