Estou tentando imprimir uma página da Web especificada em uma impressora especificada, no Windows. (Desenvolvendo em 7, eu provavelmente vou finalmente implantar isso para o Windows Server 2008). Disseram-me que a maneira de fazer isso é automatizar o Internet Explorer e chamar execWB(6,2)
. então eu peguei esse script:
$targetPrinter = "Snagit 13"
$targetWebPage = "http://google.com"
try
{
$defaultPrinter = (Get-WmiObject -Query " SELECT name FROM Win32_Printer WHERE Default=$true").Name
$ie = new-object -comObject InternetExplorer.Application
$ie.navigate($targetWebPage)
(Get-WmiObject -ComputerName . -Class Win32_Printer -Filter "Name='$targetPrinter'").SetDefaultPrinter()
while ( $ie.busy ) { Start-Sleep -second 5 }
$ie.execWB(6,2)
while ( $ie.busy ) { Start-Sleep -second 5 }
$ie.quit()
Write-Host "done"
}
catch
{
}
finally
{
(Get-WmiObject -ComputerName . -Class Win32_Printer -Filter "Name='$defaultPrinter'").SetDefaultPrinter()
[gc]::collect()
[gc]::WaitForPendingFinalizers()
}
(obviamente, o google é apenas para fins de exemplo, ele realmente aponta para uma página da intranet na web. Se isso é importante) (O Snagit 13 é um não-freeware que supostamente manipula capturas de tela, mas é importante fornecer uma impressora que cria uma imagem quando você imprime nela. Apenas para economizar papel.)
Se eu copiar e colar essa linha por linha no prompt do powershell, ela funcionará conforme o esperado. Mas se eu tentar executar o script, ou mesmo se copiar e colar o script inteiro no prompt interativo, o IE me ignorará. Eu vejo saída de configuração da impressora padrão, ele não joga nenhum erro, mas a impressão nunca acontece. Não tenho permissão para automatizar o IE a partir de um prompt não interativo? Se sim, como posso imprimir uma página da web?
Eu também tentei outro método para imprimir uma página da web:
$web = New-Object Net.WebClient
$web.DownloadString("http://google.com") > "tomorrow.html"
rundll32.exe mshtml.dll,PrintHTML "tomorrow.html"
O tomorrow.html é criado e parece correto, mas nenhuma impressão acontece (novamente).
Tags windows-7 printing powershell