广州明生医药有限公司


PowerShell小技巧之定时抓取屏幕图像

网络编程 PowerShell小技巧之定时抓取屏幕图像 06-21

昨天的博文写了定时记录操作系统行为,其实说白了就是抓取了击键的记录和对应窗口的标题栏,而很多应用程序标题栏又包含当时记录的文件路径和文件名,用这种方式可以大致记录操作了哪些程序,打开了哪些文件,以及敲击了哪些按键。事实上这样记录操作系统的行为显得相对单薄一点,因为记录的内容不太形象,对于新手来说太过于隐晦了,对于人类来说,图像会比文字更加有利于用户理解。当操作系统不方便装屏幕记录软件,但又需要看已经登录用户在干什么的时候,用PowerShell的脚本来实现定时抓取图像的方式记录操作,查看图像就知道登陆用户做了什么,当然你存放图片的目录要隐蔽,不要让用户发现了为好。

当然对于在学校计算机系的?潘棵牵?飧龉δ芤部梢杂美戳私庾约旱呐?裼惺裁聪埠昧恕J裁矗空Π呀疟景沧暗脚?竦牡缒岳铮空Π炎サ耐计?祷馗?悖堪萃校?饷醇虻サ奈侍猓?剐枰?野锬阏掖鸢该矗颗?竦牡缒曰盗耍?ǔ6蓟嵴乙桓鍪煜さ缒匀碛布?募扑慊?档耐??葱薜模?薜氖焙蚯那亩?闶纸拧M计?祷氐奈侍饽兀?耆?梢远ㄊ弊ト。?缓笞ト∫欢ㄊ?恐?蟠虬?⒌街付ㄓ氏洌?缓笊境?镜赝计?铩J裁矗坎恢??owerShell咋发邮件…你妹的,用System.Net.Mail.MailMessage组件调用SMTP发送邮件你不会?我以前写过类似文章的…好吧,送佛送到西,自己去看吧《使用PowerShell通过Smtp发送邮件》。还有就是写的脚本务必要加密,至于加密方式方法嘛,改天吧,改天专门写一篇文章写关于PowerShell脚本加密,这种事情嘛,如果被女神发现鸟,那可是吃不了兜着走的事啊。还有出去别告诉别人,我给你出的这主意,还有隐私的东西,自己把握好度,如果警察蜀黍请你去喝茶了可就不好玩了。本故事纯属虚构,如有雷同纯属巧合,本人只提供创意,如果具体实施被女神打破头,或者被警察蜀黍请去喝茶了,本人概不负任何法律责任哈。嘿嘿,不多扯了,先上今天的定时抓取屏幕图像的方法。

其实方法不复杂,写了一个抓取屏幕的函数,定时执行,将抓取的图片存入指定位置,如果达到终止的时间,结束执行.代码不复杂,有看不懂的兄弟可以留言,我帮你解答。

接下来上代码:

=====文件名: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} }

执行方式,如下图所示:

查看图片

执行效果,会在指定的目录,按照时间间隔生成桌面抓图,类似如下图所示.

查看图片

哥,只能帮你到这了!兄弟们好自为之吧!

PowerShell小技巧之定时记录操作系统行为
作为系统管理员,有些时候是需要记录系统中的其他用户的一些操作行为的,例如:当系统管理员怀疑系统存在漏洞,且已经有被植入后门或者创建隐

Powershell小技巧之创建短网址
你可能听说过缩短过的长连接。它有几个免费的不错的服务商。这里有一个脚本能将任何URL变成一个缩写URL。$OriginalURL='http://www.gimoo.net/isesteroids2'$url="ht

Powershell小技巧之去除多余的空格
要去去除多余的空格,请尝试下面正则表达式:PS'[Man,itworks!]'-replace's{2,}',''[Man,itworks!]你也可以用这个方法转换成固定格式的CSV表格:PS(qprocess)-replace's


编辑:广州明生医药有限公司

标签:脚本,蜀黍,图像,操作系统,方式