4

我正在使用以下命令从简单的 linux 打印设备上的 Web 管理界面上的 html 输入字段中提取值。

$get = Invoke-WebRequest -Uri ("http://" + $station + ":8080/cgi-bin/admin?page=pedi.sh&hash=" + $hash) -Method "GET

其中一个输入字段是一个复选框,我需要能够检查它是否被选中。在这种情况下,复选框被命名为“协议”并被选中。

$get.ParsedHtml.getElementsByName("Protocol") | Select checked

检查

如果我尝试使用以下命令获取值,它不会返回任何内容。

($get.ParsedHtml.getElementsByName("Protocol")).checked

但如果我这样做,我会得到价值......

($get.ParsedHtml.getElementsByName("Protocol") | Select checked).checked

我想知道为什么我会看到这种行为,这正常吗?

我正在运行 Windows 8 RTM、PowerShell 3.0。如果您需要更多信息,请告诉我。

4

1 回答 1

2

我转载了你的问题。要获取选中属性(或任何其他属性)的值,我必须强制返回对象为数组,如下所示:

@($get.ParsedHtml.getElementsByName("Protocol"))[0].checked

或者,由于 Powershell 3.0 的新属性枚举功能:

@($get.ParsedHtml.getElementsByName("Protocol")).checked

因此,它似乎只在通过枚举从 getElementsByName 返回的集合请求值时提供值。也许有人可以插话并解释这种行为。我猜这与使用 com 对象的事实有关吗?

于 2012-10-23T21:03:42.710 回答