如何在PowerShell中使用InternetExplorer.Application导航时阻止打开/保存对话框?

时间:2015-12-04 19:05:12

标签: .net windows powershell com web-scraping

我试图在没有看到Internet Explorer的打开/保存对话框的情况下下载文件。登录表单比发送Web请求复杂得多,因此我只能使用InternetExplorer.Application。

$credentials = Get-Credential -Message "Enter the username and password..."
$username = $credentials.UserName
$password = $credentials.GetNetworkCredential().password

$ie = New-Object -com InternetExplorer.Application 
$ie.navigate("https://example.com/getFile?downloadId=123")

$ie.document.getElementById("username").value= "$username" 
$ie.document.getElementById("password").value = "$password" 
$ie.document.getElementById("fm1").submit()

在执行上面的代码时,登录工作完美,下载开始了,但我看到一个像下面这样的窗口,这是我想要的。虽然我知道最终用户可以更改此设置,但任何通过PowerShell自动下载的建议都会很好。

IE Download confirmation dialog

上面是一个示例窗口。

1 个答案:

答案 0 :(得分:0)

正如@beatcracker所指出的,通过注册表设置,您可以禁用文件类型的提示。

HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\AttachmentExecute\{0002DF01-0000-0000-C000-000000000046}键内(如果需要,可以创建),您必须为每种文件类型添加一个条目。

首先,您必须获取要定位的文件类型的 ProgID

您可以使用assoc命令获取它:

C:\Windows\System32>assoc .docx
.docx=Word.Document.12

在注册表中,您必须创建一个名为Word.Document.12且值为0的新值。

当然,这需要为每个工作站的每个用户部署(GPO?)...这很乏味。