eu encontreieste trechoisso está funcionando bem em loop para eu fazer capturas de tela por minuto. Eu poderia fazer o hash dos resultados e comparar as duas capturas de tela mais recentes em busca de alterações seguindoesta postagem: (Get-FileHash $fileA).hash -ne (Get-FileHash $fileC).hash
dentro de uma instrução If.
Eu estava pensando em me referir às capturas de tela no buffer em vez de salvá-las no disco rígido. Quero dizer, quero manter as capturas de tela no buffer e compará-las enquanto o trecho as salva.
Responder1
Não é possível com o código que você diz estar 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..
Depuração do pobre homem - usando compressão de variável para atribuir e exibir resultados de saída Remova os parênteses de borda antes da 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)
Você notará que nada relacionado ao sistema físico/de arquivos, por meio da saída acima, fornece tudo o que você pode obter para o seu caso de uso.
Claro, você pode usar o código como ele, incrementar o nome do arquivo de imagem, fazer a comparação e decidir qual deletar.
Os cmdlets FileSystem (como...Obter-FileHash, etc...), significa que você está trabalhando em um arquivo serializado.
Obter hash de arquivo
Módulo:Microsoft.PowerShell.Utility
Calcula o valor de hash de um arquivo usando um algoritmo de hash especificado.
Atualização para OP
Pessoalmente, nunca tentei e nunca tive um caso de uso em que fosse necessário. Então, é um conceito, mas possível, é tudo especulação neste momento em relação a tudo que entendo. Especialmente hash e serialização depois de fazer o que você planeja fazer com ele. Os cmdlets do sistema de arquivos só funcionarão no sistema de arquivos por design.
Quanto a colocar as coisas no buffer. Direciono você para a postagem do blog de Trevor Sullivanaqui, onde ele demonstra a inicialização de uma matriz de bytes no PowerShell.
Às vezes você precisará inicializar um novo buffer como uma matriz de bytes. Por exemplo, se você deseja gerar dados aleatórios usando o método NextBytes() na classe System.Random, você precisa passar um buffer de matriz de bytes para o método gravar. A criação de uma matriz de bytes no PowerShell pode não ser imediatamente óbvia.