powershell O objeto com o Internet Explorer não funciona no script

0

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).

    
por Adam R. Grey 09.04.2018 / 17:03

0 respostas