Got it and I have setup a Jenkins slave which is not running as service. I have tried multiple modification to my script but the screenshot does not work. In summary, this is what I'm trying to do with powerrshell: Jenkins Slave -> launch the remote path of the folder that needs to be screen captured -> take a screenshot and save it
Script says that the path is launched successfully but for screenshot, this will be the error: *Exception calling "CopyFromScreen" with "5" argument(s): "The handle is invalid"At C:\WINDOWS\TEMP\hudson1670262990811364138.ps1:30 char:5+ $graphic.CopyFromScreen($Left, $Top, 0, 0, $bitmap.Size)+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : Win32Exception*Does a screen capture of a remote path still be possible on a slave without users logged on? On Monday, March 27, 2017 at 9:32:25 PM UTC+8, slide wrote: > > Windows services can't interact with the desktop. This feature went away > in Vista. You would need to run the agent as a non-service for the > screenshot to work. > > On Sun, Mar 26, 2017, 22:37 VikS <[email protected] <javascript:>> wrote: > >> We have a build which requires us to replace files to a newer version on >> remote computers and the requirement is the script needs to take screenshot >> of the folder for validation. >> We have built our ps script and it does what is needed when executed >> outisde of Jenkins but not when scheduled with Jenkins, here is the >> screenshot portion of the script: >> function ScreenshotFolder >> { >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> *# Get the list of servers$servers = Get-Content >> "C:\tmp\script\updated\computers.txt" # Foreach loop to go to each server >> and take the screenshot foreach ($server in $servers) { # Invoke >> the path of Application $FolderWindows = Start >> "\\$server\C$\Temp\Application" -WindowStyle Maximized # Pause the >> script for 2 seconds so that the invoked path Windows will stay for 2 >> seconds before screencapture Start-Sleep -s 2 # Provide the unique >> name for the .bmp file $File = join-path -path >> "C:\tmp\script\updated\Logs" -childpath $($server + "-screenshot" + >> ".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) Write-Output "Screenshot saved to:" >> Write-Output $File # Close each folder windows so that it would capture >> each windows at a time $CloseWindows = (New-Object -comObject >> Shell.Application).Windows() |? { $_.FullName -ne $null} | ? { >> $_.FullName.toLower().Endswith('\explorer.exe') } $CloseWindows | % { >> $_.Quit()}}}* >> >> Jenkins service us configured to be running using service account which >> has access to the remote servers. Console output: >> >> >> >> >> >> >> >> >> >> >> >> *Start-Process : This command cannot be run due to the error: Server >> execution failed.At >> C:\Users\ctoCITRIX4win09\AppData\Local\Temp\hudson7511677238111411019.ps1:385 >> >> char:22+ $FolderWindows = Start "\\$server\C$\Temp\Application" >> -WindowStyle Maximized+ >> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + >> CategoryInfo : InvalidOperation: (:) [Start-Process], InvalidOp >> erationException + FullyQualifiedErrorId : >> InvalidOperationException,Microsoft.PowerShell.C >> ommands.StartProcessCommand*Any suggestions to achieve this screenshot >> function using script on Jenkins? We're ok to explore other tools as well. >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Jenkins Users" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected] <javascript:>. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/jenkinsci-users/d2a0f96b-c413-49ef-b588-41693407fb35%40googlegroups.com >> >> <https://groups.google.com/d/msgid/jenkinsci-users/d2a0f96b-c413-49ef-b588-41693407fb35%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> For more options, visit https://groups.google.com/d/optout. >> > -- You received this message because you are subscribed to the Google Groups "Jenkins Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/76ea7af0-e393-4ca5-8be1-91a0f98ac388%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
