需求:用户在公网访问的内部桌面云、服务器的时候,需要记录并保存用户的操作记录。
一开始的设想是利用屏幕录像,能满足需求的录屏软件都是要收费的,价格不菲,公司目
前是没有这方面的投入打算的。折腾很久,无意中发现,win7自带一个神器,
叫psr(Problem Steps Recorder)。直接运行psr,试着玩了一下,效果非常满意,值得高兴
的是,这软件支持在命令行,带参数静默运行!于是折腾了1天,弄了个旁门左道的玩法。
powershell脚本:
#先在文服上创建一个用户名命名的文件夹
md "\\文服共享路径\$env:username";
#启动psr的方法
function psrStart {
$FileName = Get-Date -Format ‘yyyyMMddHHmmss‘;#用当前的日期和时间作为文件名,需要格式化去掉":"特殊字符
psr.exe /start /gui 0 /output "\\文服共享路径\$env:username\$FileName.zip";#/gui 0 表示静默后台运行, /output为保存路径
psrStop;#调用psr结束的方法,没有这个动作,不会保存zip。
}
function psrStop{
count;#调用"计时器"
psr.exe /stop;
Sleep -m 500;
psrStart;
}
function count{
Sleep -s 20;
}
psrStart;
至于为什么不在注销时,通过脚本运行 psr /stop。这也是我折腾这么久的原因,因为我发现,
psr /start,必须配合psr /stop使用,才会把zip文件保存到你指定的位置,强制结束psr进程是
不会保存的。然而在用户注销系统时,在调用脚本之前,就会把psr进程结束掉;我也尝试把
psr的运行脚本做成系统服务的方式启动,效果都不理想。
所以才出了每隔20秒,结束、启动一次psr动作来实现数据保存的下策。
如果大家有好的办法,能在用户点击注销,结束psr进程前,运行psr /stop命令,并且有一
定时间能让生成的zip文件上传到服务器,请多多指教。
原文地址:http://blog.51cto.com/siteo/2106126