我有一个 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 任务信息
常规选项卡:
- 无论用户是否登录都会运行
- 以最高权限运行
触发器选项卡:
- 每天早上 8 点开始,每 30 分钟一班,持续 12 小时。
操作标签:
- 启动程序:powershell.exe
- 添加参数:-ExecutionPolicy Bypass“c:\path\script.ps1”
我觉得脚本正在运行,但通过 Windows 任务计划程序运行时没有捕获屏幕截图。保存的图像只是一张白页。有谁知道为什么这不起作用?
答案1
答案2
它可能与执行脚本的用户的配置文件有关。当您从 ise 执行它时,您会隐式使用当前用户的配置文件并截取当前屏幕的屏幕截图。
但是当您的脚本从任务计划程序执行时,它会使用任务配置文件中提到的配置文件,并且可能没有打开带有桌面的会话。如果您有白色图像,则此会话中没有任何桌面。
您可以尝试将执行任务的用户更改为已打开会话的用户并查看结果。可以手动启动任务进行测试。