2016-12-28 121 views
3

現時点で私は、コンピュータ名とそのMACを追加できるように、IEのプロセスを自動化するためのスクリプトを作成しています。このページには、MAC用のフィールドとコンピュータ名用のフィールドの2つのフィールドがあり、新しいボタンを追加します。現時点ではまだ手動で入力していますが、私はCSVから一度に大規模なグループを読むようにしています。powershellを使ってポップアップウィンドウを閉じる

現在私が抱えている問題は、重複したレコードがあると、JavaScriptのポップアップであなたに伝えます。ポップアップは、IEページとの対話を無効にします。エントリの間にポップアップを閉じる方法が必要です。

これは私のコードが現在のように見えます。

cls 

$URL = "" 
$iterator = 1; 

#starts IE 
$ie = new-object -ComObject "InternetExplorer.Application" 

#visible for testing purposes 
$ie.visible = $true 
#$ie.silent = $true 
$ie.navigate($URL) 

#Manual Input 
$newMAC = read-host -prompt 'Input MAC here' 
$newNAME = read-host -prompt 'Input Computer Name here' 

while($ie.Busy -eq $true) { start-sleep -Milliseconds 100 } 

#enters information into appropriate fields and clicks the add button 
($ie.document.getElementsByName("mc_id") |select -first 1).value = $newNAME; 
($ie.document.getElementsByName("mac_id") |select -first 1).value = $newMAC; 
($ie.document.getElementsByName("btnAddNew") |select -first 1).click(); 

編集:私はそれぞれの新しいエントリのための私のCOMオブジェクトを閉じるにおけるずさんな溶液で一瞬のために決めた

。しかし私は今、スクリプトの読み込み用にcsvをインポートすることに問題があります。

+0

Yikes、私はpowershellがそれを実行できるかも知らなかった。これはJavaScriptでタグ付けされているので、JavaScriptソリューションは受け入れられますか? – Gerrit0

+0

可能な方法の1つは、[DestroyWindow](https://msdn.microsoft.com/en-us/library/windows/desktop/ms632682(v = vs.85))のようにuser32.dllの関数の1つを使用することです。 aspx)p/invokeシグネチャは[ここにある](http://www.pinvoke.net/default.aspx/user32.DestroyWindow)です。ここでは、[P/invokeシグネチャを使用するためのガイド](http:// www .leeholmes.com/blog/2009/01/19/powershell-pinvoke-walkthrough /) – BenH

+0

@BenHこれを調べるつもりです。 –

答えて

1
$wshell = New-Object -ComObject wscript.shell; 
if($wshell.AppActivate('Message from webpage')) 
{ 
    Start-Sleep -Seconds 1 
    [System.Windows.Forms.SendKeys]::SendWait('{Enter}') 
} 

このコードは、だから、ポップアップタイトルを一致するように調整し"Message from webpage"のタイトルを持つウィンドウにアクティブウィンドウを設定します。

次に、Enterキーを送信します。これを調整して、キーの組み合わせを送信してポップアップを閉じることができます。おそらくさらにALT+F4を使用して送信する::SendWait('%{f4}')

私は、新しいウィンドウでJavascriptのポップアップが開いていると仮定しています。代わりに、私は他のJavaScriptがページ上で使用されているかどうか、そしてそのポップアップのためだけにcomオブジェクトのそのページでJavascriptを無効にするかどうかを調べます。

EDIT:

Javascriptを無効にするには、あなたが制限されたサイトのセキュリティゾーンに追加し、ゾーンのJavaScriptの実行がオフになっていることを確認することによって、このページのすべてのJavaコードの実行をオフにする必要があります。しかし、私はより良いアイデアを持っている、あなたがしようとするとページが機能ポップアップ表示破るために、COMオブジェクトを使用することができます。

$ie = new-object -ComObject "InternetExplorer.Application" 
$ie.visible = $true 
$ie.navigate("http://www.echoecho.com/jswindows03.htm") 
$ie.Document.body.innerHTML = $ie.Document.body.innerHTML -replace "popup\('www.yahoo.com', 'Win1', 300, 300\);", "" 

は、このコードブロックは機能をポップアップJavaScriptのデモを持っているページが開きますが、それはその関数を削除しますボタンonclickからの呼び出し。ポップを決して呼び出さないようにする。あなたは私がページのクライアントコピーを修正し、JavaScriptを壊すか、それが決して表示されないように変更したのと同じトリックをすることができます。

+0

私はこれを試しただけで、ポップアップに切り替えるようには見えませんが、Enterを送信します。どのようにcomオブジェクトのjavascriptを無効にするつもりだろうか? –

+0

私の答えに更新を加えました。ページのソースコードを見ることなく、私はすべての問題を解決することはできませんが、それはあなたを得るために十分でなければなりません。プログラム的にページをHTMLコードを編集してアラートのJavaScriptを削除すると動作するようです。 '-replace'はhtmlと正規表現して、私の例では' "" 'と置き換えません。 – Nick

+0

@ P.McDevitt運がいいですか? – Nick

関連する問題