我正在使用以下命令从简单的linux打印设备上的Web管理界面上的html输入字段中提取值。
$get = Invoke-WebRequest -Uri ("http://" + $station + ":8080/cgi-bin/admin?page=pedi.sh&hash=" + $hash) -Method "GET
其中一个输入字段是一个复选框,我需要能够检查是否已选中。在这种情况下,复选框被命名为“Protocol”并且会被选中。
$get.ParsedHtml.getElementsByName("Protocol") | Select checked
检查
真
如果我尝试使用以下命令获取值,则不返回任何内容。
($get.ParsedHtml.getElementsByName("Protocol")).checked
但如果我这样做,我就会得到价值......
($get.ParsedHtml.getElementsByName("Protocol") | Select checked).checked
我想知道为什么我会看到这种行为,这是正常的吗?
我正在运行Windows 8 RTM,PowerShell 3.0。如果您需要更多信息,请告诉我。
答案 0 :(得分:2)
我转载了你的问题。要获取checked属性(或任何其他属性)的值,我必须强制返回对象为数组,如下所示:
@($get.ParsedHtml.getElementsByName("Protocol"))[0].checked
或者,自从Powershell 3.0的新属性枚举功能:
@($get.ParsedHtml.getElementsByName("Protocol")).checked
所以它似乎只在通过枚举从getElementsByName返回的集合请求值时提供值。也许有人可以插话并解释这种行为。我猜这与使用com对象的事实有关吗?