1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
#initialization
$timeInterval = 30 #监测间隔
$record = @{ "Coding" = 0; "Outlook Email" = 0; "Gmail" = 0; "Google Reader" = 0; "BBS" = 0; "Other Internet" = 0; "Documents" = 0;}
$count = 0
$date = date -format "yyyyMMdd"
#try to resume
if ( test-path "d:\temp\timeRecord$date.txt" ) {
gc "d:\temp\timeRecord$date.txt" | % {if ($_ -match "\w+\s+\d+" ) {
$groups = [Regex]::Match($_, "^(\w+\s?\w+)\s+(\d+)" ).Groups;
$record [ $groups [1].Value] = [int]::Parse( $groups [2].Value);
}}
}
#start to monitor
while ( $true )
{
$titles = ps | ? {$_.MainWindowTitle} | select MainWindowTitle
$titles | % {
if ($_ -match "Google 阅读器 - Windows Internet Explorer" ) { $record [ "Google Reader" ]++;}
else {if ($_ -match "Gmail - Windows Internet Explorer" ) { $record [ "Gmail" ]++;}
else {if ($_ -match "Internet Explorer" ) { $record [ "Other Internet" ]++;}
else {if ($_ -match "Visual Studio" ) { $record [ "Coding" ]++;}
else {if ($_ -match "Microsoft Word" ) { $record [ "Documents" ]++;}
else {if ($_ -match "Microsoft Office OneNote" ) { $record [ "Documents" ]++;}
else {if ($_ -match "Microsoft PowerPoint" ) { $record [ "Documents" ]++;}
else {if ($_ -match "Message (HTML)" ) { $record [ "Outlook Email" ]++;}
else {if ($_ -match "bbs" ) { $record [ "BBS" ]++;}
}}}}}}}}
}
sleep ( $timeInterval )
$count = ( $count + 1) % 10 #为了防止数据丢失,每10次记录写入文件一次
if ( $count -eq 0) { $record > "d:\temp\timeRecord$date.txt" }
}
|
为了解技术思路,研究了一下powershell.
整个开发与部署过程如下:
1.下载WindowsXP-KB926139-v2-x86-ENU
安装powershell环境;
2.按照代码要求,写一个简单的脚本;
3. 运行powershell时,同 bat是有区别的.注意以下方法:
1) 解除限制:
1
|
set-executionpolicy Unrestricted
|
2) 将文件名保存为ps1
3) 通过以下方法运行(假如文件名是c:a.ps1)
PS C:> .a
[@more@]
示例代码:
1
2
3
4
5
6
|
function foo ( [int] $x )
{
$x = $x + 1
echo $x
}
foo (1 )
|