用powershell关闭弹出窗口
目前我正在研究一个脚本来自动化IE中的一个进程,以添加计算机名称及其MAC,以便我们可以对它们进行映像。该页面有两个字段,一个用于MAC,另一个用于计算机名称,然后添加新按钮。目前它仍然是手动输入,但我打算从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供脚本读取的问题。
$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
按键。您可能可以调整此设置以发送组合键来消除弹出窗口。也许甚至使用::SendWait('%{f4}')
发送ALT+F4
我假设Javascript弹出窗口在新窗口中打开。或者,我会看到该页面上使用了哪些其他JavaScript,并且如果它仅用于弹出窗口,则会查找该com页面上禁用Javascript的页面。
编辑:
要禁用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或修改它永远不会显示。
Yikes,我甚至不知道PowerShell可以做到这一点。由于这是用JavaScript标记的,JavaScript解决方案可以接受吗? – Gerrit0
一种可能的方法是使用user32.dll上的某个函数,如[DestroyWindow](https://msdn.microsoft.com/en-us/library/windows/desktop/ms632682(v = vs.85)。 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
@BenH我会研究这个,谢谢你的建议。 –