Я создал скрипт PowerShell, который открывает несколько веб-сайтов, расположенных в электронной таблице Excel, и делает скриншоты каждого из них.
Вот код:
[Reflection.Assembly]::LoadWithPartialName("System.Drawing")
function Screenshot([Drawing.Rectangle]$bounds, $path) {
$bmp = New-Object Drawing.Bitmap $bounds.width, $bounds.height
$graphics = [Drawing.Graphics]::FromImage($bmp)
$graphics.CopyFromScreen($bounds.Location, [Drawing.Point]::Empty, $bounds.size)
$bmp.Save($path)
$graphics.Dispose()
$bmp.Dispose()
}
$data = Import-Excel 'C:\Temp\HostNames\HostNames.xlsx'
$data | ForEach-Object {
$website = $_
$url=$website.Hostnames.Split(',')[0]
Write-Host $website.Name $url
$IE=new-object -com internetexplorer.application
$IE.visible=$true
$IE.FullScreen=$false
$IE.ToolBar = $false
$IE.StatusBar = $false
$IE.MenuBar = $false
$IE.AddressBar = $true
$IE.Resizable = $true
$IE.Top = 0
$IE.Left = 577
$IE.Width = 1024
$IE.Height = 747
$IE.navigate2( $url )
$i=0
While ( $IE.busy -eq $true ) {
Start-Sleep -s 1
$i = $i + 1
if ( $i -ge 20 ) { break }
}
$bounds = [Drawing.Rectangle]::FromLTRB($IE.Left, $IE.Top, $IE.Left + $IE.Width, $IE.Top + $IE.Height)
$filename = "C:\Temp\HostNames\urlshots\"+ ($website.Name) +".png"
Screenshot $bounds $filename
$IE.Quit()
}
Проблема в том, что Я продолжаю получать эту ошибку после запуска каждого веб-сайта:
Exception calling "Save" with "1" argument(s): "A generic error occurred in GDI+."
At C:\Temp\HostNames\HostNames View.ps1:9 char:4
+ $bmp.Save($path)
+ ~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : ExternalException
Любые идеи будут великолепны!