2

Powershell を使用して Web コンソールでアクセスポイントの設定を自動化したいと考えています。

私は Win8/IE10 で開発しましたが、コードをテストするとすべて正常に動作します。残念ながら、開発/テスト後に「生産システム」を受け取りました。これで、コードは Windows Server 2012 R2/IE11 で動作するはずです。

これは、アクセスポイントに接続してログインするための私のコードです(簡略化):

$IE = New-Object -ComObject "InternetExplorer.Application"
$IE.Visible = $true #1#
$IE.Navigate("192.168.0.100")
Write-Host $IE.LocationName

$IE.Document.GetElementByID("login-username").Value = "admin"
$IE.Document.GetElementByID("login-password").Value = "admin"
$IE.Document.GetElementByID("login-btn").Click()
Write-Host $IE.LocationName

デバッグ上の理由から、通常はウィンドウを表示します (コメント #1#)。最初の Write-Host では、正しい場所が表示されます (「ログイン」)。2 番目の Write-Host で、間違った場所が表示されます (「about:blank」)。IE ウィンドウに正しい場所/タブ名 (「AP」) が表示されます。IE オブジェクトが使用できなくなり、他のプロパティ ($IE.Document.* など) が機能しないようです。ウィンドウを手動で閉じる必要があります。

2 つの回避策があります。

  1. ログインする前に IE ウィンドウを手動でクリック (フォーカスを取得) すると、動作します。
  2. ウィンドウを表示しない場合 ($IE.Visible = $false)、すべてが機能します。

これまでの私のシナリオ/テスト:

  1. IE ESC が無効になっています。
  2. C:\Program Files (x86)\Microsoft.NET\Primary Interop Assemblies\Microsoft.mshtml.dll を別の生産マシン (2008R2) からコピーしたので、$IE.Document 関数は機能します (私の開発マシンの dll は同じものを生成します)。エラー)。
  3. すべてのゾーンで保護モード ([インターネット オプション] > [セキュリティ]) を有効/無効にしようとしましたが、機能しません ( redditで見つかりました)

他の誰かが試してみるアイデアを持っていますか? デバッグは回避策で機能し、生産的であり、(これまでのところ)目に見えないウィンドウでも機能しますが、問題を理解したいです...

ありがとう、よろしく、kvo

4

1 に答える 1