PS3 而非 PS4 上的 Powershell Invoke-WebRequest 转换问题
Powershell Invoke-WebRequest casting issue on PS3 not PS4
我在我的 PS 脚本中 运行 以下命令:
$apiResult = Invoke-WebRequest -Uri $myURL -Body $body -DisableKeepAlive -Headers $headers -Method Post -TimeoutSec 120 -ContentType $contentType -UseBasicParsing
由于以下错误而失败:
Unable to cast object of type \u0027System.Management.Automation.PSObject\u0027 to type \u0027System.String\u0027
关键是:
- 提供的变量类型是System.String(对于$body、$myURL、$contentType)和System.Collection.Hashtable(对于$headers)
- 没有调用 URL 背后的实际服务(已在服务日志中验证)
- 运行 这个在装有 Powershell 版本 4 的机器上具有相同参数的脚本不会产生这个错误,实际上 returns 预期结果
我认为这是一个错误,但我无法在 google 或任何其他区域(包括文档)中找到任何提及它的地方。
好吧...经过长时间的挖掘,我发现问题是我的 headers 哈希表中的值之一不是字符串!不知道为什么这会在 powershell 4 上传递...也许那里的转换比 PS3
中的更灵活
我在我的 PS 脚本中 运行 以下命令:
$apiResult = Invoke-WebRequest -Uri $myURL -Body $body -DisableKeepAlive -Headers $headers -Method Post -TimeoutSec 120 -ContentType $contentType -UseBasicParsing
由于以下错误而失败:
Unable to cast object of type \u0027System.Management.Automation.PSObject\u0027 to type \u0027System.String\u0027
关键是:
- 提供的变量类型是System.String(对于$body、$myURL、$contentType)和System.Collection.Hashtable(对于$headers)
- 没有调用 URL 背后的实际服务(已在服务日志中验证)
- 运行 这个在装有 Powershell 版本 4 的机器上具有相同参数的脚本不会产生这个错误,实际上 returns 预期结果
我认为这是一个错误,但我无法在 google 或任何其他区域(包括文档)中找到任何提及它的地方。
好吧...经过长时间的挖掘,我发现问题是我的 headers 哈希表中的值之一不是字符串!不知道为什么这会在 powershell 4 上传递...也许那里的转换比 PS3
中的更灵活