我有一個PowerShell腳本,該腳本可導(dǎo)航到Intranet上的(大概)經(jīng)典ASP頁,以停止在服務(wù)器上運(yùn)行的Windows Service,作為該服務(wù)的部署過程的一部分(并在部署新文件后重新啟動它)。運(yùn)行良好,直到我們最近升級到IE9。這是腳本。# Open service page in IE$ie = new-object -comobject InternetExplorer.Application$ie.visible = $true$ie.navigate($serviceUrl)while($ie.busy) { start-sleep 1 }# Stop service$ie.Document.getElementById("dropDownActionList").value = "Stop"$ie.Document.getElementById("buttonTakeAction").click()while($ie.busy) { start-sleep 1 }現(xiàn)在,當(dāng)我運(yùn)行腳本時,它可以成功啟動IE,但是會引發(fā)以下錯誤:You cannot call a method on a null-valued expression.At C:\Projects\ABC\Scripts\Deploy.ps1:85 char:28+ $ie.Document.getElementById <<<< ("dropDownActionList").value = "Stop" + CategoryInfo : InvalidOperation: (getElementById:String) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull當(dāng)我在PowerShell中進(jìn)行調(diào)查時,我發(fā)現(xiàn)如果創(chuàng)建IE ComObject,它首先具有有效的屬性,但是一旦導(dǎo)航到服務(wù)控制頁面,所有屬性均為null(幾乎就像ComObject消失了一樣? )。例如,在HWND屬性具有有效值之前,但現(xiàn)在它為null($ie.hwnd -eq $null返回true)。導(dǎo)航到頁面時,PowerShell中沒有顯示錯誤。我查看了一些類似的 問題,但是第一個與我的情況不匹配(在我的情況下該Document屬性為null),而對于后一個,IE9默認(rèn)為Intranet網(wǎng)站的兼容模式。我保存了ASP頁,并通過w3c驗(yàn)證程序運(yùn)行它,它引發(fā)了一些錯誤(盡管沒有一個與我要處理的元素有關(guān))。不幸的是,我無法解決這些問題。其他站點(diǎn)似乎沒有此問題。是否對可能的問題有任何懷疑,以及有關(guān)解決方法的建議?
2 回答

翻閱古今
TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超5個贊
我只是通過這個工作。在關(guān)閉IE中的保護(hù)模式之前,我一直看到相同的行為。這似乎與從一個安全區(qū)域提交到下一個安全區(qū)域有關(guān)。因此,假設(shè)您的原始頁面位于Internet區(qū)域中且處于受保護(hù)模式下,則您提交到受信任區(qū)域或Intranet或任何其他區(qū)域中的頁面,好像COM上下文丟失了??赡苁枪室獾?。我將嘗試修復(fù)區(qū)域,并保持保護(hù)模式為開。
希望這可以幫助。
編輯:如果您以提升模式運(yùn)行Powershell(以管理員身份運(yùn)行),這也不是問題。
- 2 回答
- 0 關(guān)注
- 484 瀏覽
添加回答
舉報
0/150
提交
取消