【问题标题】:write-output returning nothing with a PSCustomObject on first launch首次启动时写入输出不返回任何 PSCustomObject
【发布时间】:2020-01-28 00:53:47
【问题描述】:

我有一个自动的 IE 脚本 (powershell 2.0) 来抓取序列号。该脚本绕过登录页面,并从某个页面上刮下序列号。

但是,我在脚本的第一次运行时遇到了写输出上述序列号的问题。 (当我第二次运行脚本时(之前的 ieObject 可见),它会记住登录并输出正确的序列号。

$element = $currentDocument.IHTMLDocument3_getElementById("serialno")| Select innerHTML
write-output "StartScript"
Start-Sleep -s 3
$ieObject | Invoke-IEWait
write-output $element
write-output "EndScript"

我在脚本上使用了调试模式,$element 在脚本末尾包含正确的信息(我在write-output "End" 上放了一个断点) 但是它输出

StartScript

EndScript

另一个问题是,如果我再次运行脚本,而原来的 ieObject 仍处于打开状态,第二个脚本会记住密码并实际上正确地抓取?

StartScript

innerHTML                                                                                                                                                                                                                                                          
---------                                                                                                                                                                                                                                                          
2390                                                                                                                                                                                                                                                               
EndScript

我看不到我的第一个脚本是如何被窃听的,当 $element 直到脚本结束之前都具有正确的数据,并且 write-output 可以清楚地读取对象,因为它可以在第二次执行中做到这一点。

感谢您的帮助,这让我卡了一段时间

【问题讨论】:

  • 显然,(根据调试信息),$element 是一个对象。试试看:write-output $element.innerHTML

标签: powershell web-scraping powershell-core ie-automation


【解决方案1】:

非常感谢@iRon

write-output $element.innerHTML

完美运行 :)

【讨论】:

    猜你喜欢
    • 2021-04-07
    • 2017-12-03
    • 2014-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-04
    • 2021-08-05
    相关资源
    最近更新 更多