2024年2月29日发(作者:)

AD域GPO下发自动关机用户计算机配置文档

一、自动关机脚本编写

打开记事本写内容如下:

@echo off

ver|find "5.0" >nul && if not errorlevel 1 goto 2k

ver|find "5.1" >nul && if not errorlevel 1 goto xp

ver|find "5.2" >nul && if not errorlevel 1 goto win2k3

ver|find "6.0" >nul && if not errorlevel 1 goto vista

ver|find "6.1" >nul && if not errorlevel 1 goto win7

goto win7

:2k

at /delete /yes

AT 18:00 /interactive /every:M,T,W,Th,F,S,scripts自动关机.exe

exit

:xp

at /delete /yes

AT 18:00 /interactive /every:M,T,W,Th,F,S,Su AD......scripts自动关机.exe

exit

:win2k3

exit

:vista

SCHTASKS /Delete /tn "*" /f

schtasks /create /tn 自动关机 /tr " AD......scripts自动关机.exe" /sc daily /st 18:00:00 /it /f

exit

:win7

SCHTASKS /Delete /tn "*" /f

schtasks /create /tn 自动关机 /tr " AD......scripts自动关机.exe" /sc daily /st 18:00:00 /it /f

exit

另存为*.BAT文件。

# 以上脚本是修改后的,原来的脚本只是用AT命令创建任务,通过反馈信息发现公司可能部分用户使用的是非XP系统,因此重新编制脚本进行终端用户系统判别,判断系统后由不同的命令创建任务,这样保证XP以上版本系统在运行任务时都以交互式运行。

说明

1、脚本首先判断终端用户操作系统版本,2K、XP、VISTA或WIN7建立计划任务应该使用不同的命令,否则任务无法和用户交互。

2、判断终端系统是2K、XP执行下面命令

AT /delete /yes

通过AT命令删除全部计划任务,这样是为了保证任务ID相同不重复任务

AT 18:00 /interactive /every:M,T,W,Th,F,S,Su AD......scripts自动关机.exe

通过AT命令新建任务ID=1,参数/interactive实现交互界面,否则关机窗口不弹出,时间为18:00,周一至周日都运行,执行程序路径设置为AD域服务器共享路径。

/ interactive参数就是设置XP系统有用户交互,由于schtasks命令在XP系统版本中没有/it参数,所以使用AT命令的这个参数。

3、判断终端系统是2K3不操作EXIT直接退出。

4、判断终端系统是VISTA或WIN7执行命令(goto win7其他的未知操作系统也按这条命令执行,域用户终端最低版本一般应该是XP)

SCHTASKS /Delete /tn "*" /f

删除原来所有的计划任务

schtasks /create /tn 自动关机 /tr " AD......scripts自动关机.exe" /sc daily /st 18:00:00 /it /f

/create参数是新建任务,/tn后面是任务名称,/tr是指定要执行命令的路径,/sc设为每天,/st设置触发时间为18:00:00, /it 设置当用户登录时,这个就是设置WIN7和VISTA 系统运行任务时和用户交互,/f参数是当创建任务时任务名已经存在强制覆盖。

二、编写自动关机程序

打开VB编程软件

1、建窗体Form,插入控件command、Timer、Label、Image。

写如下代码:

Private Declare Function SetWindowPos Lib "user32" (ByVal HWnd As Long, ByVal hWndInsertAfter As Long,

ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long

Dim m, m1, s, s1 As Integer

Private Sub command1_click()

End

End Sub

Private Sub Form_Load()

SetWindowPos , -1, 0, 0, 0, 0, 2 Or 1 #这句是为了让窗体显示在最上层,上面有函数声明。

al = 1000

n = ""

m = 0: m1 = 3: s = 0: s1 = 0

End Sub

Private Sub Timer1_Timer()

s1 = s1 - 1

If s1 < 0 Then

s = s - 1

s1 = 9

If s < 0 Then

m1 = m1 - 1

s = 5

If m1 < 0 Then

m = m - 1

m1 = 9

End If

End If

End If

If m = 0 And m1 = 0 And s = 0 And s1 = 0 Then

d = False

Shell " /c shutdown -s -t 0"

End If

n = m & m1 & ":" & s & s1

End Sub

2、调整各控件位置,美化界面。

3、生成工程程序(自动关机.exe)。

三、GPO策略

1、新建GPO(定时关闭公司计算机)——计算机配置——Windows设置——脚本——启动脚本,浏览选择上面保存的BAT文件路径,选定文件点击确定。

也可以下发用户启动脚本

2、选定需要下发OU ,链接现有GPO策略,选择刚建立的“定时关闭公司计算机”,点确定。

至此计算机策略GPO下发,实现具有终端交互式的定时关机完成。

注意事项:GPO下发需要注意脚本及程序文件路径,文件路径尽量是域控共享路径下,必须终端用户权限访问正常。