none
Групповые политики RRS feed

  • Вопрос

  • Имеем server 2003 r2 standart, подскажите как можно групповыми политиками или возможно как то иначе лишьбы не локально, прописать выключение компьютеров в случае их простоя в течение определенного времени??
    2 февраля 2010 г. 15:23

Ответы

  • Используйте команду shutdown для выключения компьютера и создайте на ее основе назначенные задания с помощью команды schtasks. Создать назначенные задания можно будет через сценарии групповых политик Startup Scripts или, запуская schtasks с административной рабочей станции по отношению к удаленным компьютерам. Ознакомьтесь с ключами

    shutdown /?    и

    schtasks /create /?

    Используйте ключ /I для назначения задания, запускаемого при простое системы.
    2 февраля 2010 г. 15:55
    Модератор
  • Т.к. впрямую сделать нельзя. Я бы сделал так на  Повершеле:

    #Задаем имя компов черз запятую
    $Computers ="wst144", "Wst080", "wst040"
    
     function WMIDateStringToDate($Bootup) { 
         [System.Management.ManagementDateTimeconverter]::ToDateTime($Bootup) 
     } 
      
    
    foreach ($Comp in $Computers)
        {
        
            $GetTime= (Get-WMIObject -class Win32_OperatingSystem -ComputerName $Comp).LastBootUpTime
            $StrTime =WMIDateStringToDate($GetTime)
            write-host "Computer " $Comp "started at: "$strTime
            
            $Uptime = (Get-date) - $strTime
            Write-host "Uptime" $Uptime.Days "Days," $Uptime.Hours "Hours" 
    
            #Проверяем как давно  комп стартанул, если больше 5 дней назад. то ппц ему
            if  ($Uptime.Days -gt 5) 
                {
                    #Рестартанем комп.
                    (Get-WMIObject win32_operatingsystem -ComputerName $Comp).Win32Shutdown(6)
                    write-host "Remote Computer" $Comp "restart"
                }
         }       

    Скрипт запустать на любом сервере по  шедулеру.От вас требуется  установка PoSh на  этом сервере, к клиентским машина он будет подключаться через стандартный WMI.

    Можно пойти дальше и использовать аддоны от Quest
    http://www.quest.com/powershell/

    Тогда  скрипт изменится. Сам выдирает из нужной OU все копмпы, проверяет что бы компьютер был он-лайн и потом уже проверяет на аптайм. Вид будет такой :


    #Задаем фильтр о том,что комп должен быть включен
    Filter Where-Online
    {
        $ping = new-object System.Net.NetworkInformation.Ping
        trap {Write-Verbose "ping error"; Continue}
        if ($ping.send($_).Status -eq "Success" ) { $_ }
    }
    
    #функция для конвертации времени
    function WMIDateStringToDate($Bootup) { 
         [System.Management.ManagementDateTimeconverter]::ToDateTime($Bootup) 
     }
    
    #Моя переменная 
    $Comp_list=@{}
    
    #Загоняем компы из данной  OU в домене и проверяем их работоспособность.
    $comp_arr= Get-QADComputer -SearchRoot "ou=wsus,dc=moscow,dc=mydomain,dc=ru"  | foreach {$_.dnsname} | where-online
    
    foreach ($Comp in $Comp_arr)
        {
        
            $GetTime= (Get-WMIObject -class Win32_OperatingSystem -ComputerName $Comp).LastBootUpTime
            $StrTime =WMIDateStringToDate($GetTime)
            write-host "Computer " $Comp "started at: "$strTime
            
            $Uptime = (Get-date) - $strTime
            Write-host "Uptime" $Uptime.Days "Days," $Uptime.Hours "Hours" 
    
            #Проверяем как давно  комп стартанул, если больше 5 дней назад. то ппц ему
            if  ($Uptime.Days -gt 5) 
                {
                    #Рестартанем комп.
                    (Get-WMIObject win32_operatingsystem -ComputerName $Comp).Win32Shutdown(6)
                    write-host "Remote Computer" $Comp "restart"
                }
         }       


    Если сообщение было информативным, отметьте его как ответ. И нам приятно и сразу видно ответ на вопрос :-)
    • Помечено в качестве ответа Gvintik 10 мая 2010 г. 7:40
    2 февраля 2010 г. 19:16

Все ответы

  • через ГПО влоб такое не решить - просто нету такого параметра.
    можно например через snmp снимать показатель system uptime и если он больше какго либо значения запускать скрипт для выключения машины

    Сейчас проверил - через perfmon  можно создать Alert на счетчик Sysytem Up Time - если значение выше порогового, то запускать скрипт с командой shutdown -r  (но это конечно же не решение для всего домена)
    MCP/MCSA/MCTS:Exchange
    2 февраля 2010 г. 15:48
  • Используйте команду shutdown для выключения компьютера и создайте на ее основе назначенные задания с помощью команды schtasks. Создать назначенные задания можно будет через сценарии групповых политик Startup Scripts или, запуская schtasks с административной рабочей станции по отношению к удаленным компьютерам. Ознакомьтесь с ключами

    shutdown /?    и

    schtasks /create /?

    Используйте ключ /I для назначения задания, запускаемого при простое системы.
    2 февраля 2010 г. 15:55
    Модератор
  • Т.к. впрямую сделать нельзя. Я бы сделал так на  Повершеле:

    #Задаем имя компов черз запятую
    $Computers ="wst144", "Wst080", "wst040"
    
     function WMIDateStringToDate($Bootup) { 
         [System.Management.ManagementDateTimeconverter]::ToDateTime($Bootup) 
     } 
      
    
    foreach ($Comp in $Computers)
        {
        
            $GetTime= (Get-WMIObject -class Win32_OperatingSystem -ComputerName $Comp).LastBootUpTime
            $StrTime =WMIDateStringToDate($GetTime)
            write-host "Computer " $Comp "started at: "$strTime
            
            $Uptime = (Get-date) - $strTime
            Write-host "Uptime" $Uptime.Days "Days," $Uptime.Hours "Hours" 
    
            #Проверяем как давно  комп стартанул, если больше 5 дней назад. то ппц ему
            if  ($Uptime.Days -gt 5) 
                {
                    #Рестартанем комп.
                    (Get-WMIObject win32_operatingsystem -ComputerName $Comp).Win32Shutdown(6)
                    write-host "Remote Computer" $Comp "restart"
                }
         }       

    Скрипт запустать на любом сервере по  шедулеру.От вас требуется  установка PoSh на  этом сервере, к клиентским машина он будет подключаться через стандартный WMI.

    Можно пойти дальше и использовать аддоны от Quest
    http://www.quest.com/powershell/

    Тогда  скрипт изменится. Сам выдирает из нужной OU все копмпы, проверяет что бы компьютер был он-лайн и потом уже проверяет на аптайм. Вид будет такой :


    #Задаем фильтр о том,что комп должен быть включен
    Filter Where-Online
    {
        $ping = new-object System.Net.NetworkInformation.Ping
        trap {Write-Verbose "ping error"; Continue}
        if ($ping.send($_).Status -eq "Success" ) { $_ }
    }
    
    #функция для конвертации времени
    function WMIDateStringToDate($Bootup) { 
         [System.Management.ManagementDateTimeconverter]::ToDateTime($Bootup) 
     }
    
    #Моя переменная 
    $Comp_list=@{}
    
    #Загоняем компы из данной  OU в домене и проверяем их работоспособность.
    $comp_arr= Get-QADComputer -SearchRoot "ou=wsus,dc=moscow,dc=mydomain,dc=ru"  | foreach {$_.dnsname} | where-online
    
    foreach ($Comp in $Comp_arr)
        {
        
            $GetTime= (Get-WMIObject -class Win32_OperatingSystem -ComputerName $Comp).LastBootUpTime
            $StrTime =WMIDateStringToDate($GetTime)
            write-host "Computer " $Comp "started at: "$strTime
            
            $Uptime = (Get-date) - $strTime
            Write-host "Uptime" $Uptime.Days "Days," $Uptime.Hours "Hours" 
    
            #Проверяем как давно  комп стартанул, если больше 5 дней назад. то ппц ему
            if  ($Uptime.Days -gt 5) 
                {
                    #Рестартанем комп.
                    (Get-WMIObject win32_operatingsystem -ComputerName $Comp).Win32Shutdown(6)
                    write-host "Remote Computer" $Comp "restart"
                }
         }       


    Если сообщение было информативным, отметьте его как ответ. И нам приятно и сразу видно ответ на вопрос :-)
    • Помечено в качестве ответа Gvintik 10 мая 2010 г. 7:40
    2 февраля 2010 г. 19:16
  • // выключение компьютеров в случае их простоя в течение определенного времени

    Коллеги, заметьте, что "Uptime" это не совсем "Idle Time"...
    Идея Олега (скрипт, выполняемый при "простое") не лишена смысла, но не применима в некоторых случаях.

    Я бы порекомендовал автору воспользоваться либо возможностями управления электропитанием для клиентов NT6/6.1. А для клиентов предыдущих - использовать "хранитель экрана" ("screen saver"), который выполняет выключение, а уж параметрами "хранителя экрана" худо-бедно, но можно управлять с помощью ОГП. Правда, где взять такой своеобразный хранитель - если только самому создать...
    2 февраля 2010 г. 21:57
    Отвечающий
  • Имеем server 2003 r2 standart, подскажите как можно групповыми политиками или возможно как то иначе лишьбы не локально, прописать выключение компьютеров в случае их простоя в течение определенного времени??

    Настройки Power можно выполнить через GPP - Group Policy Preferences
    Сазонов Илья http://www.itcommunity.ru/blogs/sie-wl/
    3 февраля 2010 г. 11:19
    Модератор