【问题标题】:Invoke-WebRequest : Cannot bind parameter 'Uri'. Cannot convert the "@{Invoke-WebRequest:无法绑定参数“Uri”。无法转换“@{
【发布时间】:2017-11-30 15:34:15
【问题描述】:

想要为我在文本文件中列出的所有 URL 检索 P html 元素的 innerText。我对此很陌生,但认为我可以解决它。自动取款机。我失败了,因为我无法处理如何正确传递循环的每个数组项:

$theURLS = Import-CSV linkek_alatt.txt
$item = New-Object System.Collections.ArrayList
for ($i=0; $i -le $theURLS.length;$i++)
{
foreach($item in $theURLS)
{
$Site = Invoke-WebRequest -URI $item
$Igotit = $Site.AllElements | Where-Object {$_.tagName -eq "P"} |
Select -First 1 -Skip 3 -ExpandProperty innerText
$Igotit
}
}
> FilteredContent.txt

过滤后的文件应包含信息。

现在,我收到“Invoke-WebRequest:无法绑定参数'Uri'。无法转换“@{”错误,我看到重复的第一个 URL 和一个随机的 - 用于下一步的一个 - 错误消息中的一个. 欢迎任何想法。 最好的祝福, 格萨

【问题讨论】:

  • 文本文件还是 csv 文件?如果是文本文件,不要使用Import-Csv,使用Get-Content
  • 为什么要在 URL 列表的迭代中迭代 URL 列表?
  • CSV。自动取款机。我正在做更多的工作。这适用于一个指定的 URL: Clear-Host $Site = Invoke-WebRequest -URI "somepage/anotherone" $Igotit = $Site.AllElements | Where-Object {$_.tagName -eq "P"} |选择 -First 1 -Skip 3 -ExpandProperty innerText $Igotit

标签: arrays powershell for-loop foreach


【解决方案1】:

根据 cmets,出现问题是因为您在此处使用 Import-CSV:

$theURLS = Import-CSV linkek_alatt.txt

这会尝试使用文件中的第一行文本作为标题来创建 PowerShell 对象。

如果您的 .txt 文件不是 .csv 文件并且您想要返回字符串数组,请改用 Get-Content:

$theURLS = Get-Content linkek_alatt.txt

如果您的文件是 CSV 文件,那么在 Invoke-WebRequest 中使用它时,您需要引用与 URL 标头匹配的属性名称。例如,如果它的标题为“URL”:

Invoke-WebRequest -URI $item.URL

但我怀疑你不是这种情况。

【讨论】:

  • 谢谢马克,我也错过了标题和那个 .URL 扩展名。正如我所说,我是相当新手:)。它是一个 CSV 文件,网址由 ; 分隔。签名。
猜你喜欢
  • 2017-12-24
  • 1970-01-01
  • 1970-01-01
  • 2017-04-27
  • 1970-01-01
  • 2018-08-30
  • 2023-01-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多