InternetExplorer COM文档在PowerShell ISE中可用,但在常规PS控制台中不可用

时间:2014-09-27 05:56:01

标签: internet-explorer powershell com scripting

以下代码适用于PowerShell ISE,但在常规PowerShell控制台中运行时,文档对象为空:

$ie = New-Object -COM InternetExplorer.Application
$ie.Navigate('http://www.example.com')
$ie.Visible = $true
do { Start-Sleep -m 100 } while ( $ie.busy )

$document = $ie.document
$window = $document.parentWindow

"Ready state: " + $ie.ReadyState
"Document: " + $document
"Window: " + $window

PowerShell ISE中的输出:

Ready state: 4
Document: mshtml.HTMLDocumentClass
Window: System.__ComObject

常规PowerShell控制台中的输出:

Ready state: 4
Document: mshtml.HTMLDocumentClass
Window:

在PowerShell.exe中运行时,$window$document的所有其他属性都为空。为什么这样以及如何解决?谢谢!

2 个答案:

答案 0 :(得分:4)

尝试使用-sta选项执行常规控制台。

答案 1 :(得分:1)

你应该检查ReadyState属性是否完成,而不是flacky Busy属性,这可能是为了告知停止按钮是否应该可用,并且主要用于说明:{/ p>

do { Start-Sleep -m 100 } while ( $ie.ReadyState -ne 4 )