闽人
我们可以通过“组策略+开关机脚本”来记录孩子使用电脑的时间。为了方便查看,我们先在“G:\”(盘符可自行修改)下新建“开机查询”和“关机查询”这两个文件夹,然后启动记事本程序,新建两个空白文本文件“开机查询.t xt”和“关机查询.t xt”并放置在上述对应的文件夹里。
接着再启动记事本程序,输入下面的命令:
" $(Get-Date -Format 'y y y y-MMdd')的开机时间是:" | Out-File -Append"G:\开机查询\开机时间查询.txt"
Get-Date -Format 'H时:m分:s秒' |Out-File -Append "G:\开机查询\开机时间查询.txt"
然后将其保存为“kaiji.ps1”,放置在“G:\开机查询”文件夹中备用(图1)。
命令解释:第一行命令是把“Get-Date”当作一个变量,使用"$()"进行引用,日期使用“年月日”的格式(表示开机日期),并将该内容以追加输入的方式输出到“G:\开机查询\开机时间查询.txt”文件中。第二行命令则是使用“Get-Date”获取当前时间(格式为“时分秒”,表示开机时间),也追加输出到同一个文件中。
操作同上,再新建一个名为“guanji.ps1”的文件(把“kaiji.ps1”中的“开机”改为“关机”,其他的代码相同),然后保存在“G:\关机查询”文件夹中备用。
接着在桌面的任务栏搜索框中输入“组策略”,启动组策略编辑器后依次展开“计算机配置→Windows设置→脚本(启动关机)→启动”,在打开的窗口中切换到“PowerShell脚本”,点击“添加”,将“G:\开机查询\kaiji.ps1”添加到运行列表中(图2)。
操作同上,继续添加“G:\关机查询\guanji.ps1”到关机脚本中。这样每次开关机后都会自动运行上述的脚本,并将开关机时间写入到对应的文本文件中。我们只要打开该文件进行查看即可(图3)。
PowerShell脚本还能用来监控进程的创建时间和持续运行的时间,并且可以根据预设的时间对进程进行管理。比如现在要限制孩子最多玩90分钟的游戏,游戏进程是“C:\dnf \地下城与勇士\DNFchina.exe”。
首先启动记事本程序,输入下面的命令,然后将其保存为“3.ps1”,放置在“G:\”根目录下备用。
get-processDNFchina|?{([DateTime]::Now-$_.StartTime).TotalSeconds-gt3600}|stop-process
命令解釋:
使用“get-process”查询指定进程(DNFchina)的信息,然后用当前时间减去游戏进程的创建时间,如果结果大于3600秒(即60分钟),那么就执行“stopprocess”命令来终止进程。
接着在桌面的任务栏搜索框中输入“任务计划”,启动任务计划程序后新建一个基本任务,在创建任务窗口中切换到“常规”,任务的名称设置为“禁止游戏”,并勾选“使用最高权限运行”。再切换到“触发器→新建触发器”,建立一个2021年3月23日8:00开始运行的任务(开始时间可自行修改),具体参数设置参考图4所示的界面(图4)。
继续切换到“操作”,新建一个启动程序的操作,“运行程序或脚本”处选择“C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe”,“添加参数”处选择“G:\3.ps1”,“起始于”处选择“G:\”(图5)。
这样从2021年3月23日的8:00开始,系统就会在后台每隔半小时运行一次上述设置的脚本“G:\3.ps1”,它会对游戏进程(DNFchina.exe)的持续时间进行统计(如果游戏未运行则自动忽略)。假设孩子是在8:01分开始启动游戏的,那么8:30、9:00运行的任务不会终止游戏进程(因为当前时间减去进程的启动时间小于60分钟),而9:30运行的任务则会自动终止游戏进程(因为此时的持续时间为89分钟,大于60分钟,也就意味着孩子每次的最长游戏时间实际为89分钟)。如果需要修改限制时间,请自行更改“3.ps1”中的时间代码,并重新设置“重复任务间隔”等选项(图6)。
为了防止进程结束后孩子再次运行该游戏,还可以在“3.ps1”中添加一行代码(代码为:echoy|cacls"C:\dnf\地下城与勇士\DNFchina.exe"/gcfan:F),表示只授予cfan账户有完全控制权限(cfan为家长的用户名,孩子不知道该账户的密码)。这样进程结束后,孩子的账户将没有权限再次运行“DNFchina.exe”。