Я застрял на этом в течение последнего дня или около того, и я думаю, что это что-то маленькое, что я просто не вижу.PowerShell Screen Capture
Подводя итог коду: Скрипт Powershell, который будет запускаться каждые 60 секунд, чтобы сделать захват экрана. В Windows Server 2012 это работает отлично. В то время как в Windows 7 выполняется только первый снимок экрана, а затем все после этого «пустые» с просто белым размером с размерами. Любые идеи, почему это происходит?
Я также попытался удалить большую петлю while и выполнить запланированную задачу, которая запускается каждые 5 минут, но снова это не работает, и все, что я получаю, - это пустое белое изображение. Есть предположения? В Windows 7. Я использую локального пользователя Admin.
Я использую PowerShell 4 на обоих окнах 7 и Windows Server 2012 и .NET 4.5
while($true){
[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()
}
#NUC bounds
$bounds = [Drawing.Rectangle]::FromLTRB(0, -1080, 1920, 1080)
#remote display bounds
#$bounds = [Drawing.Rectangle]::FromLTRB(0, 0, 1280, 800)
$PC_name=$(Get-WmiObject Win32_Computersystem).name
$dateandtime = Get-Date -Format yyyy-MM-dd-hh-mm-ss
$path_pcname= "C:\Scripts\Screenshots\" + $PC_name + "_screenshot_" + "$dateandtime"+ ".png"
screenshot $bounds $path_pcname
$limit = (Get-Date).AddMinutes(-15)
$path_todelete = "C:\Scripts\Screenshots\"
# Delete files older than the $limit.
Get-ChildItem -Path $path_todelete -Recurse -Force | Where-Object { !$_.PSIsContainer -and $_.CreationTime -lt $limit } | Remove-Item -Force
Start-Sleep -Seconds 60
}
Edit: я понял, что эту линию: [Reflection.Assembly]: : LoadWithPartialName («System.Drawing») , который считывает из GAC, не запускается правильно. Не уверен, что это поможет.
Возможно, ваши проблемы возникли из-за неправильной работы сборки 'System.Drawing'. Попробуйте установить установку .NET. – Vesper