encontréeste fragmentoeso funciona bien en un bucle para que pueda tomar capturas de pantalla por minuto. Podría analizar los resultados y comparar las dos últimas capturas de pantalla para detectar cambios siguiendoesta publicación: (Get-FileHash $fileA).hash -ne (Get-FileHash $fileC).hash
dentro de una declaración If.
Estaba pensando en hacer referencia a las capturas de pantalla en el búfer en lugar de guardarlas en el disco duro. Quiero decir, quiero mantener las capturas de pantalla en el búfer y luego compararlas mientras ese fragmento las guarda.
Respuesta1
No es posible con el código que dices que estás usando.
$File = "E:\temp\myscreenshot.bmp"
Add-Type -AssemblyName System.Windows.Forms
Add-type -AssemblyName System.Drawing
# Gather Screen resolution information
$Screen = [System.Windows.Forms.SystemInformation]::VirtualScreen
# .. monitor width in pixels..
$Width = [System.Windows.Forms.SystemInformation]::PrimaryMonitorSize.Width
# .. monitor height in pixels..
$Height = [System.Windows.Forms.SystemInformation]::PrimaryMonitorSize.Height
# .. Capture points
$Left = 0 # ..monitor starting left pixel..
$Top = 0 # ..monitor starting top pixel, normally zero..
Depuración del pobre: uso de compresión de variables para asignar y mostrar resultados de salida Eliminar los pares de borde antes de la entrega
# 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)
Notará que nada relacionado con el sistema físico o de archivos, a través del resultado anterior, le brinda todo lo que puede tomar para su caso de uso.
Por supuesto, puede usar el código tal como está, incrementar el nombre del archivo de imagen, comparar y decidir cuál eliminar.
Los cmdlets de FileSystem (como...Obtener-FileHash, etc...), significa que está trabajando en un archivo serializado.
Obtener hash de archivo
Módulo:Microsoft.PowerShell.Utility
Calcula el valor hash de un archivo utilizando un algoritmo hash especificado.
Actualización para OP
Personalmente, nunca lo intenté y nunca tuve un caso de uso en el que fuera necesario. Entonces, es un concepto, pero es posible, en este momento todo es especulación en relación con todo lo que entiendo. Especialmente hash y serialización después de hacer lo que planeas hacer con él. Los cmdlets del sistema de archivos solo funcionarán en el sistema de archivos por diseño.
En cuanto a poner las cosas en el buffer. Te dirijo a la publicación del blog de Trevor Sullivan.aquí, donde muestra la inicialización de una matriz de bytes en PowerShell.
A veces necesitarás inicializar un nuevo búfer como una matriz de bytes. Por ejemplo, si desea generar datos aleatorios utilizando el método NextBytes() en la clase System.Random, debe pasar un búfer de matriz de bytes para que el método escriba. Es posible que la creación de una matriz de bytes en PowerShell no sea inmediatamente obvia.