¿Cómo puedo capturar la pantalla en Windows PowerShell? Necesito poder guardar la pantalla en el disco.¿Cómo puedo hacer una captura de pantalla en Windows PowerShell?
Respuesta
También puede utilizar .NET para tomar la captura de pantalla mediante programación (que le da un control más fino):
[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, entonces se capturará la ventana actual.
Esto funciona mediante el uso de 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() |
Where-Object { $_.FormatDescription -eq "JPEG" }
}
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 = "$pwd\ScreenCapture"
$c = 0
while (Test-Path "${screenCapturePathBase}${c}.jpg") {
$c++
}
$bitmap.Save("${screenCapturePathBase}${c}.jpg", $jpegCodec, $ep)
}
}
Esperanza esto ayuda
¿Hay pasos adicionales necesarios para conseguir que esto funcione en Windows 7? Recibo el siguiente error al ejecutar la función: "No se puede encontrar el tipo [Windows.Forms.Sendkeys]: asegúrese de que el ensamblaje que contiene este tipo esté cargado". y luego otro error "No se puede encontrar el tipo [Windows.Forms.Clipboard]: asegúrese de que el ensamblaje que contiene este tipo esté cargado". , y luego un error más (pero creo que porque las dos llamadas anteriores fallaron). – monojohnny
Probablemente no haya cargado Winforms. Le recomendaría que simplemente descargue el módulo en el que se encuentra ahora esta respuesta: [RoughDraft] (http://gallery.technet.microsoft.com/RoughDraft-cfeb6e98) –
Microsoft tener un script de PowerShell disponible aquí:
http://gallery.technet.microsoft.com/scriptcenter/eeff544a-f690-4f6b-a586-11eea6fc5eb8
Acabo de intentar i t en una máquina Windows 7 y que funcione, usando el ejemplo de comandos proporcionados:
Take-ScreenShot -screen -file "C:\image.png" -imagetype png
¿Dónde coloca este archivo .ps1 para que no tenga que escribir toda la ruta de red? – Aaron
@ Aaron, no estoy seguro de cómo hacer esto, pero probablemente lo configure en el perfil de Powershell (quizás editando la variable PATH o usando un alias): este artículo puede ayudar: http: //stackoverflow.com/questions/714877/setting-windows-powershell-path-variable – monojohnny
Abrir con ... no produce ningún resultado. La entrada en la consola y luego invocarla tampoco produce entrada. Este es Windows 10 y este hilo ha estado aquí por años sin producir entradas. –
En aras de finalización, este script le permite tomar capturas de pantalla en varios monitores.
código base viene 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()
}
puede ser llamada con: pantalla "D: \ screenshot.png"
- 1. ¿Cómo puedo tomar una captura de pantalla en una aplicación de Windows?
- 2. ¿Cómo puedo tomar una captura de pantalla y guardarla como JPEG en Windows?
- 3. Captura de pantalla en Haskell?
- 4. ¿Puedo escribir una captura de pantalla en Python
- 5. ¿Cómo puedo hacer una captura de video en el navegador?
- 6. Obtener captura de pantalla en Windows con Python?
- 7. Captura de pantalla del proceso en el Servicio de Windows
- 8. ¿Cómo tomar una captura de pantalla de una página web?
- 9. Cómo tomar una captura de pantalla en OpenGL
- 10. Captura de pantalla en android
- 11. Pantalla de captura
- 12. Captura de pantalla de la pantalla actual
- 13. Captura de pantalla de la segunda pantalla
- 14. Superposición de pantalla para la captura de pantalla
- 15. ¿Cómo tomar una captura de pantalla con unidad HTML?
- 16. ¿Cómo puedo tomar una captura de pantalla de un sitio web con .NET?
- 17. Cómo tomar una captura de pantalla con FireMonkey (multiplataformas)
- 18. ¿Cómo tomar la captura de pantalla programáticamente?
- 19. ¿Qué puedo hacer con C# y Powershell?
- 20. ¿Cómo subir una captura de pantalla usando html2canvas?
- 21. Android OpenGL Captura de pantalla
- 22. captura de pantalla de escritorio oculto
- 23. Obtenga una captura de pantalla de una página de ASP.Net
- 24. ¿Cómo puedo forzar la detección de pantalla en Windows?
- 25. ¿Cómo realizo programáticamente una captura de pantalla de una aplicación en Linux?
- 26. Tomar una captura de pantalla parcial en el iPad
- 27. ¿Cómo puedo crear mediante programación una captura de pantalla de un sitio web determinado?
- 28. Captura de impresiones de pantalla en Java
- 29. ¿Cómo se toma una "captura de pantalla" de un NSView?
- 30. ¿Cómo se toma una captura de pantalla correctamente con xlib?
Genial, ¿qué tan difícil sería conseguir que esto capturara la ventana? de una aplicación específica? Estoy creando una instancia de IE como esta: $ ie = new-object -com "InternetExplorer.Application" - ¿sería posible capturar solo el resultado de esta ventana, por ejemplo? – monojohnny
Hace 7 años y aún funciona – hoangpx