Powershell - 用于循环遍历数组的初学者建议

时间:2014-11-04 19:29:39

标签: powershell

我正在使用Powershell进行一些高级自动化,我想在网站的下拉列表中循环显示2个值的数组...不知道如何实现它。

以下是代码:

        $Array =  "FirstItem", "SecondItem"

        Foreach ($i in $Array)

         {
    while($ie.busy) {sleep 1} 
            $doc = $ie.document
            $ie.document.getElementById("DropDownListBtn").click()
            $link = $ie.Document.getElementsByTagName('A') | where-object {$_.innerText -eq '$i'}
        # Note: without using the variable above, I would expect the statement would look like this:
                # $link = $ie.Document.getElementsByTagName('A') | where-object {$_.innerText -eq 'FirstItem'}
            $link.click()
        }

这是错误:

You cannot call a method on a null-valued expression.
At line:9 char:28

+                 $link.click <<<< ()

    + CategoryInfo          : InvalidOperation: (click:String) [], RuntimeException

    + FullyQualifiedErrorId : InvokeMethodOnNull

2 个答案:

答案 0 :(得分:0)

您需要一些错误处理/检查。

我首先将错误处理添加到$ ie和$ link实例化代码中,例如:

$ie = <code to create object> -erroraction silentlycontinue;
if ( $? ) {
    # All ok - proceed
} else {
    # it failed
}

...或者,使用try ... catch,但这并不总是有效,因为并非所有PowerShell调用都会引发异常。

try {
    $ie =  <code to create object> -erroraction silentlycontinue;
    }
catch [Exception] {
    # it failed
    }

答案 1 :(得分:0)

谢谢大家。我进一步排除故障并意识到我需要删除$ i周围的单引号:

$link = $ie.Document.getElementsByTagName('A') | where-object {$_.innerText -eq $i}