使用动态主机调用webrequest失败



我想用一个参数定义的主机执行一个web请求:

$serverHost = "myhost"
Invoke-WebRequest http://$serverHost:1234/service -Method Get

Powershell报错如下:

调用- webrequest:无法绑定参数'Uri'。无法将值"http:///service"转换为类型"System.Uri"。错误:"无效的URI:主机名无法被解析。"

我要做什么才能让PowerShell正确解释我的URL?

冒号,当与变量一起使用时,是powershell设置该变量作用域的方式。它也用于调用$env:path等提供程序。这就是PowerShell在这里看到的。它认为您试图在$serverHost作用域中调用变量1234

这就是为什么在你的错误中它说它找不到主机http:///service,因为之前描述的变量不存在。

反打号可以转义字符。以及使用格式操作符、花括号或子表达式。在这种情况下,所有的设计都是为了将冒号从变量中分离出来。

("http://{0}:1234/service" -f $serverHost)
"http://${serverHost}:1234/service"
"http://$($serverHost):1234/service"

这些都将与Invoke-WebRequest调用内联。请确保在-f调用周围保留括号。

PowerShell根本不解析URL中的变量。您正在尝试查询URI http://$serverHost:1234/service处的服务,这将不起作用。你可以写

$serverHost = "myHost"
$service = "http://$serverHost`:1234/service"
Invoke-WebRequest $service -Method Get

最新更新