Saltar al contenido

¿Cómo puedo hacer una captura de pantalla en Windows PowerShell?

Este team redactor ha estado horas investigando para darle espuestas a tus preguntas, te ofrecemos la respuesta y nuestro deseo es serte de gran apoyo.

Solución:

También puede usar .NET para tomar la captura de pantalla programáticamente (lo que le brinda un control más preciso):

[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()


$bounds = [Drawing.Rectangle]::FromLTRB(0, 0, 1000, 900)
screenshot $bounds "C:screenshot.png"

Esta función de PowerShell capturará la pantalla en PowerShell y la guardará en un archivo numerado automáticamente. Si se usa el modificador -OfWindow, se capturará la ventana actual.

Esto funciona utilizando los trucos integrados PRINTSCREEN / CTRL-PRINTSCREEEN, y utiliza un codificador de mapa de bits para guardar el archivo en el disco.

function Get-ScreenCapture

    param(    
    [Switch]$OfWindow        
    )


    begin 
        Add-Type -AssemblyName System.Drawing
        $jpegCodec = [Drawing.Imaging.ImageCodecInfo]::GetImageEncoders() 
    process 
        Start-Sleep -Milliseconds 250
        if ($OfWindow)             
            [Windows.Forms.Sendkeys]::SendWait("%PrtSc")        
         else 
            [Windows.Forms.Sendkeys]::SendWait("PrtSc")        
        
        Start-Sleep -Milliseconds 250
        $bitmap = [Windows.Forms.Clipboard]::GetImage()    
        $ep = New-Object Drawing.Imaging.EncoderParameters  
        $ep.Param[0] = New-Object Drawing.Imaging.EncoderParameter ([System.Drawing.Imaging.Encoder]::Quality, [long]100)  
        $screenCapturePathBase = "$pwdScreenCapture"
        $c = 0
        while (Test-Path "$screenCapturePathBase$c.jpg") 
            $c++
        
        $bitmap.Save("$screenCapturePathBase$c.jpg", $jpegCodec, $ep)
    

Espero que esto ayude

En aras de la finalización, este script le permite tomar capturas de pantalla en varios monitores.

Base viene el codigo de Jeremy

[Reflection.Assembly]::LoadWithPartialName("System.Drawing")
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") 
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") 
function screenshot($path) 

    $width = 0;
    $height = 0;
    $workingAreaX = 0;
    $workingAreaY = 0;

    $screen = [System.Windows.Forms.Screen]::AllScreens;

    foreach ($item in $screen)
    
        if($workingAreaX -gt $item.WorkingArea.X)
        
            $workingAreaX = $item.WorkingArea.X;
        

        if($workingAreaY -gt $item.WorkingArea.Y)
        
            $workingAreaY = $item.WorkingArea.Y;
        

        $width = $width + $item.Bounds.Width;

        if($item.Bounds.Height -gt $height)
        
            $height = $item.Bounds.Height;
        
    

    $bounds = [Drawing.Rectangle]::FromLTRB($workingAreaX, $workingAreaY, $width, $height); 
    $bmp = New-Object Drawing.Bitmap $width, $height;
    $graphics = [Drawing.Graphics]::FromImage($bmp);

    $graphics.CopyFromScreen($bounds.Location, [Drawing.Point]::Empty, $bounds.size);

    $bmp.Save($path);

    $graphics.Dispose();
    $bmp.Dispose();

Se puede llamar con: captura de pantalla “D:screenshot.png”

Si posees alguna duda y forma de medrar nuestro ensayo puedes añadir una crónica y con mucho placer lo ojearemos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *