У меня есть сценарий PowerShell для создания снимка экрана. Если запустить его в PowerShell или ISE, он работает нормально, без проблем делает снимок экрана. Когда я планирую задачу в планировщике задач Windows, он просто сохраняет пустое изображение вместо снимка экрана. Есть идеи, почему?
Сценарий:
$path = "\\somelocation\"
$fileName = "Test"
$date = Get-Date -Format yyyyMMdd-hhmm
$file = $path + $filename + $date + ".bmp"
Add-Type -AssemblyName System.Windows.Forms
Add-type -AssemblyName System.Drawing
# Gather Screen resolution information
$Screen = [System.Windows.Forms.SystemInformation]::VirtualScreen
$Width = $Screen.Width
$Height = $Screen.Height
$Left = $Screen.Left
$Top = $Screen.Top
# Create bitmap using the top-left and bottom-right bounds
$bitmap = New-Object System.Drawing.Bitmap $Width, $Height
# Create Graphics object
$graphic = [System.Drawing.Graphics]::FromImage($bitmap)
# Capture screen
$graphic.CopyFromScreen($Left, $Top, 0, 0, $bitmap.Size)
# Save to file
$bitmap.Save($File)
Информация о задачах Windows
ОБЩАЯ ВКЛАДКА:
ВКЛАДКА ТРИГГЕРЫ:
ВКЛАДКА ДЕЙСТВИЯ:
Мне кажется, что скрипт работает, но не делает снимок экрана при запуске через планировщик задач Windows. Сохраненное изображение представляет собой всего одну белую страницу. Кто-нибудь знает, почему это не работает?
Ваша проблема в том, что, выбирая «запускается независимо от того, вошел ли пользователь в систему или нет», вы в основном указываете задаче запускаться в сеансе 0, который не является вашим авторизованным на рабочем столе.
Более подробная информация доступна в этом сообщении блога technet:
Это может быть связано с профилем пользователя, выполняющего сценарий. Когда вы выполняете его из ise, вы неявно используете профиль текущего пользователя и делаете снимок экрана текущего экрана.
Но когда ваш скрипт выполняется из планировщика задач, он использует профиль, указанный в конфиге задачи, и может не иметь открытого сеанса с рабочим столом. Для этого у вас есть белое изображение, нет рабочего стола с этим сеансом.
Вы можете попробовать изменить пользователя, который будет работать с пользователем, у которого есть открытый сеанс, и посмотреть результат. Задачу можно запустить вручную для тестирования.