使用动态主机调用 WebRequest 失败
Invoke-WebRequest with dynamic host fails
我想使用参数定义的主机执行 Web 请求:
$serverHost = "myhost"
Invoke-WebRequest http://$serverHost:1234/service -Method Get
Powershell 抱怨此问题并出现以下错误:
Invoke-WebRequest : Cannot bind parameter 'Uri'. Cannot convert value "http:///service" to type "System.Uri". Error: "Invalid URI: The hostname could not be parsed."
我需要做什么才能让 PowerShell 正确解释我的 URL?
PowerShell 根本不会解析您的 URL 中的变量。您正在尝试查询 URI http://$serverHost:1234/service
处的服务,但该服务不起作用。你可以做
$serverHost = "myHost"
$service = "http://$serverHost`:1234/service"
Invoke-WebRequest $service -Method Get
(请注意,需要反引号 ` 才能转义冒号)。
冒号与变量一起使用时,是该变量 setting the scope 的 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
调用周围保留括号。
我想使用参数定义的主机执行 Web 请求:
$serverHost = "myhost"
Invoke-WebRequest http://$serverHost:1234/service -Method Get
Powershell 抱怨此问题并出现以下错误:
Invoke-WebRequest : Cannot bind parameter 'Uri'. Cannot convert value "http:///service" to type "System.Uri". Error: "Invalid URI: The hostname could not be parsed."
我需要做什么才能让 PowerShell 正确解释我的 URL?
PowerShell 根本不会解析您的 URL 中的变量。您正在尝试查询 URI http://$serverHost:1234/service
处的服务,但该服务不起作用。你可以做
$serverHost = "myHost"
$service = "http://$serverHost`:1234/service"
Invoke-WebRequest $service -Method Get
(请注意,需要反引号 ` 才能转义冒号)。
冒号与变量一起使用时,是该变量 setting the scope 的 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
调用周围保留括号。