2015年11月21日 星期六

AD 網域 GPO 自動關機

轉自 http://wenku.baidu.com/view/67e9a1e4240c844769eaeec1.html?re=view

ADGPO下发自动关机用户计算机配置文档
一、自动关机脚本编写
打开记事本写内容如下:
@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,Su \\AD......\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、脚本首先判断终端用户操作系统版本,2KXPVISTAWIN7建立计划任务应该使用不同的命令,否则任务无法和用户交互。
2、判断终端系统是2KXP执行下面命令
AT /delete /yes
通过AT命令删除全部计划任务,这样是为了保证任务ID相同不重复任务
AT 18:00 /interactive /every:M,T,W,Th,F,S,Su \\ AD......\scripts\自动关机.exe
通过AT命令新建任务ID=1,参数/interactive实现交互界面,否则关机窗口不弹出,时间为1800,周一至周日都运行,执行程序路径设置为AD域服务器共享路径。
/ interactive参数就是设置XP系统有用户交互,由于schtasks命令在XP系统版本中没有/it参数,所以使用AT命令的这个参数。
3、判断终端系统是2K3不操作EXIT直接退出。
4、判断终端系统是VISTAWIN7执行命令(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 设置当用户登录时,这个就是设置WIN7VISTA      系统运行任务时和用户交互,/f参数是当创建任务时任务名已经存在强制覆盖。

二、编写自动关机程序
打开VB编程软件
1窗体Form,插入控件commandTimerLabelImage
写如下代码:

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 Me.HWnd, -1, 0, 0, 0, 0, 2 Or 1          #这句是为了让窗体显示在最上层,上面有函数声明。
Timer1.Interval = 1000
Label1.Caption = ""
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
Timer1.Enabled = False
Shell "cmd.exe /c shutdown -s -t 0"
End If
Label1.Caption = m & m1 & ":" & s & s1
End Sub
2、调整各控件位置,美化界面。
3、生成工程程序(自动关机.exe)。

三、GPO策略
1、新建GPO(定时关闭公司计算机)——计算机配置——Windows设置——脚本——启动脚本,浏览选择上面保存的BAT文件路径,选定文件点击确定。    也可以下发用户启动脚本
2、选定需要下发OU ,链接现有GPO策略,选择刚建立的“定时关闭公司计算机”,点确定。
至此计算机策略GPO下发,实现具有终端交互式的定时关机完成。



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

轉自  https://social.technet.microsoft.com/forums/zh-TW/d5281e5b-2dbc-4cea-8005-f22acd9818ba/2008-r2-schedule-tasks-gpo-to-shutdown-client-computers


沒有留言:

張貼留言