Invoke-Webrequest 主机变量,无效的 URI:无法解析主机名

Invoke-Webrequest host variable, Invalid URI: The hostname could not be parsed

我正在尝试对网络服务进行 api 调用,但不确定出了什么问题。 可能是 $request 变量中的引用错误。

[string]$subKey = "AAAAA-BBBBB-FFFFFF-EEEEEE-DDDDD"
[string]$method = "GET"
[string]$searchParam = "Type"
[string]$searchQuery = "QQ"
$request=("""https://api.test.com/api/assets/search?" + $searchParam + "=" + $searchQuery + "&PageSize=10&Page=1"""+" -Headers @{""Authorization"""+"="""+"SubKey "+$subKey+"""}")

Invoke-WebRequest $request -Method Get

这导致:

Invalid URI: The hostname could not be parsed.

如果我只是复制 $request 和 运行 Invoke-WebRequest 的输出就可以了。

Invoke-WebRequest cmdlet 带有一个 -Uri 和一个 -Headers 参数。你也可以简化 URL:

[string]$subKey = "AAAAA-BBBBB-FFFFFF-EEEEEE-DDDDD"
[string]$method = "GET"
[string]$searchParam = "Type"
[string]$searchQuery = "QQ"
$uri= "https://api.test.com/api/assets/search?$searchParam=$searchQuery&PageSize=10&Page=1"

Invoke-WebRequest -Uri $uri -Headers @{Authorization ="SubKey $subKey"} -Method Get

对于那些可能由于与 OP 无关的问题而最终来到这里的人,这可能会有用:

从 URL 字符串中删除引号。直译:

$url = ($url -replace '"', "")

具体场景:试图动态获取 repo 的最新版本,我从 GitHub API 检索 URL 字符串,用 jq 查询 JSON在 PowerShell 中(Windows Quote Hell 的快捷票)并以包含引号的字符串结束。