Автор: FL0od13
Дата сообщения: 29.04.2010 10:59
Realgeek
Я использую такую схему.
1) Для запуска скриптов используется SMS 2003;
2) На компах в AD, в поле "Description" прописан признак, на выключение компа (SHUTDOWN=YES);
3) После 23:00 комп выключается без предупреждения (почти), если никто на нём не залогонен (определяется через SMS 2003);
4) После 23:00 комп выключается с предупреждением, если за ним в это время кто-то работает (предупреждение висит 30 минут и при нажатии "ОК" выключение отменяется);
5) Скрипт для пользователя (см. п.4) запускается через утилиту CPAU от имени спец. пользователя, у которого есть права на использование утилиты shutdown.exe (права спец. пользователю задавались через GPO);
[more=VB-скрипт на выключение компьютера, когда на нём никто не работает (запускается от имени SYSTEM)]
'Скрипт для выключения компьютера, когда никто не залогонен.
'Разработчик: ________ aka FL0od ______ 2008.
'Версия 1.03
On error resume next
If FormatNumber(time(),3)<FormatNumber("0,958",3) then wscript.quit 'проверяем, что сейчас больше 23-х часов, и что у SMS-а не снесло крышу.
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "cmd /c c:\windows\system32\shutdown.exe -s -f -c " & chr(34) & "Автоматическое выключение компьютера после 23:00" & chr(34) & " -t 30"
[/more]
[more=VB-скрипт на выключение компьютера, когда на нём залогонен пользователь]
'Скрипт для выключения компьютера, когда залогонен пользователь.
'Разработчик: ________ aka FL0od ______ 2008.
'Версия 1.03
On error resume next
If FormatNumber(time(),3)<FormatNumber("0,958",3) then wscript.quit 'проверяем, что сейчас больше 23-х часов, и что у SMS-а не снесло крышу.
If ShutPropAD = "True" then 'Смотрим, нужно ли выключать комп (проверяем description в AD)
Shutdown
Else
Wscript.quit
End if
Function ShutPropAD
Dim objSysInfo, objComputer
Dim strLocation
Set objSysInfo = CreateObject("ADSystemInfo")
strComputerDN = objSysInfo.ComputerName
Set objComputer = GetObject("LDAP://" & strComputerDN)
strLocation = Split(objComputer.Get("Description"),";")
If strLocation(3)<>"SHUTDOWN=YES" then
ShutPropAD = "False"
Else
ShutPropAD = "True"
End if
End Function
Sub Shutdown
Set WshShell = WScript.CreateObject("WScript.Shell")
'''''''''''''''''''''''''' WshShell.Run "shutdown -s -f -c " & chr(34) & "Автоматическое выключение компьютера после 23:00" & chr(34) & " -t 1800"
WshShell.Run "\\xx.loc\dfs\CorpSoft\Shutdown\CPAU.exe -dec -file \\xx.loc\dfs\CorpSoft\Shutdown\ShutdownUser.job -lwp",1,true
test=Msgbox(" Внимание!" & vbNewLine &_
"Ваш компьютер будет выключен через 30 минут." & vbNewLine &_
"Чтобы отменить выключение компьютера нажмите OK." & vbNewLine &_
"",4160,"Автоматическое выключение компьютера")
'''''''''''''''''''''''''' WshShell.Run ("cmd /c C:\WINDOWS\system32\shutdown.exe -a")
WshShell.Run "\\xx.loc\dfs\CorpSoft\Shutdown\CPAU.exe -dec -file \\xx.loc\dfs\CorpSoft\Shutdown\ShutdownUserAbort.job -lwp",1,true
End Sub
[/more]
[more=ShutdownUser.bat]
shutdown.exe -s -f -c "Ђўв®¬ вЁзҐбЄ®Ґ ўлЄ«озҐ-ЁҐ Є®¬ЇмовҐа Ї®б«Ґ 23:00" -t 1800
[/more]
[more=ShutdownUserAbort.bat]
shutdown.exe -a
[/more]