Web ブラウザー インターフェイスを使用していくつかのサーバー機能を実行するスクリプトを作成しています。Internet Explorer 8 を使用して Windows 7 でスクリプトをコーディングしたところ、正常に動作しました。Windows 2008 と Internet Explorer 9 を実行している運用サーバーに移動するとすぐに、サーバーが壊れます。最後に障害点をたどりましたが、修正方法に少し困惑しています。問題を引き起こすコードは次のとおりです。
$ie = new-object -com "InternetExplorer.Application"
$ie.navigate("http://www.google.com")
$ie.visible = $True
$doc = $ie.document
$Object1 = $doc.getElementByID("pocs")
これにより IE ウィンドウがポップアップし、ID で要素を検索できるはずです。問題は、エラーが発生することです
「「getElementById」と引数カウント「1」のオーバーロードが見つかりません。」
このエラーはほとんど見つかりません。実際の問題は、実際には変数 $doc です。IE 9 で「$doc | get-member」を実行すると、次のようになります。
TypeName: System.__ComObject#{c59c6b12-f6c1-11cf-8835-00a0c911e8b2}
しかし、IE 8 では次のようになります。
TypeName: mshtml.HTMLDocumentClass
したがって、基本的に、IE 9 / Windows 2008 は、$ie.document を呼び出したときに Web ドキュメントのコンテンツを読み込めません。IE9 を互換モードに設定しようとしましたが、うまくいきません。
$ie.document | get-member は実際には「getElementById Method Variant getElementById ()」のメソッドを示しているため、そこにありますが、解析するドキュメントはありません。
どんなアイデアでも大歓迎です。