【问题标题】:PowerShell: Invoke-WebRequest - Cannot validate argument on parameter 'Uri'PowerShell:Invoke-WebRequest - 无法验证参数“Uri”上的参数
【发布时间】:2021-06-15 20:56:18
【问题描述】:

我正在尝试帮助一名开发人员尝试强化网络服务器以防止服务器端请求伪造。简而言之,我编写了一个脚本,它发送一个“伪造的”HTTP 请求,我们将使用该请求对服务器进行测试,直到它被配置为不响应此类操纵的请求。我在 Invoke-WebRequest 上遇到错误:“无法验证参数‘Uri’上的参数”,虽然我尝试了以下代码的大量不同组合,但我无法让它飞起来。有什么想法吗? (注意:下面的 my-ef.example.com 不是实际主机)

#requires -Version 5
#requires -PSEdition Desktop

class TrustAllCertsPolicy : System.Net.ICertificatePolicy {
    [bool] CheckValidationResult([System.Net.ServicePoint] $a,
                                 [System.Security.Cryptography.X509Certificates.X509Certificate] $b,
                                 [System.Net.WebRequest] $c,
                                 [int] $d) {
        return $true
    }
}
[System.Net.ServicePointManager]::CertificatePolicy = [TrustAllCertsPolicy]::new()

$Params = @{
Uri = 'http://192.168.1.119'
Host = 'my-ef.example.com'
Method = 'GET'
Headers = @{"Cache-Control" = "no-cache, no-transform"; "Connection" = "close"; "Pragma" = "no-cache"}
}
Invoke-WebRequest -Method 'POST' -Uri $url

上面的代码总是抛出错误:

Invoke-WebRequest:无法验证参数“Uri”上的参数。这 参数为空或空。提供一个不为空的参数或 为空,然后重试该命令。

【问题讨论】:

    标签: powershell http-headers


    【解决方案1】:

    $url 从未在您的代码中指定。你的意思是运行这个吗?

    Invoke-WebRequest @Params
    

    【讨论】:

    • 不错的收获。将底线更改为确实会将错误更改为:“Invoke-WebRequest:找不到与参数名称'Host'匹配的参数。”有什么想法吗?
    • @T-Heron Invoke-WebRequest 没有“主机”参数。如果需要,您可以通过将 Host = 'my-ef.example.com' 添加到 Headers=@{...} 块来将其设置为标题。
    猜你喜欢
    • 2017-11-30
    • 2023-02-23
    • 1970-01-01
    • 2019-06-01
    • 2021-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-04
    相关资源
    最近更新 更多