Перейти к содержимому

Как сделать групповую (GPO) политику для выключения пк при простои больше двух часов.

Создаём папку где будут лежать скрипты для выключения пк.

Как сделать групповую (GPO) политику для выключения пк при простои больше двух часов.

Содержание скриптов

poweroff.ps1

#
# This background job automatically locks your Workstation after a specified amount of
# time. It will come in handy if you cannot access the screensaver settings due to policy
# restriction but want to lock your screen after a idle timeout. Or you could just
# press [Win]+[L] everytime you leave your desk ;) .
#
# start with
# 	powershell.exe -windowstyle hidden -executionpolicy Unrestricted P:\ATH\TO\logoff.ps1
#
# `-windowstyle hidden` will make your PowerShell disappear/run in background
# `-executionpolicy Unrestricted` will enable this PowerShell process to allow non-signed scripts
#

# This is the only setting: How long before locking?
# Alternative Options:
# * -Seconds 10 ( = 10 Seconds)
# * -Minutes 10 ( = 10 Minutes)
# * -Hours 10 ( = 10 Hours)
#
$idle_timeout = New-TimeSpan -Hours 2

# DO NOT CHANGE ANYTHING BELOW THIS LINE
####################################################################################################################################################################

# This snippet is from http://stackoverflow.com/a/15846912
Add-Type @'
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
namespace PInvoke.Win32 {
    public static class UserInput {
        [DllImport("user32.dll", SetLastError=false)]
        private static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);
        [StructLayout(LayoutKind.Sequential)]
        private struct LASTINPUTINFO {
            public uint cbSize;
            public int dwTime;
        }
        public static DateTime LastInput {
            get {
                DateTime bootTime = DateTime.UtcNow.AddMilliseconds(-Environment.TickCount);
                DateTime lastInput = bootTime.AddMilliseconds(LastInputTicks);
                return lastInput;
            }
        }
        public static TimeSpan IdleTime {
            get {
                return DateTime.UtcNow.Subtract(LastInput);
            }
        }
        public static int LastInputTicks {
            get {
                LASTINPUTINFO lii = new LASTINPUTINFO();
                lii.cbSize = (uint)Marshal.SizeOf(typeof(LASTINPUTINFO));
                GetLastInputInfo(ref lii);
                return lii.dwTime;
            }
        }
    }
}
'@
#End snippet
# Helper: Is currently locked?
$idle_time = [PInvoke.Win32.UserInput]::IdleTime;

if ($idle_time -gt $idle_timeout)
{shutdown /s /t 0 /f}

nologo.vbs

Set objShell = WScript.CreateObject("WScript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")
Set F = FSO.GetFile(Wscript.ScriptFullName)
path = FSO.GetParentFolderName(F)
objShell.Run(CHR(34) & "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe "" -ExecutionPolicy Bypass & ""'"  & path & "\poweroff.ps1'" & CHR(34)), 0, True

Предоставляем права на папку компьютерам домена. Что бы скрипты могли скопировать на пк .

Как сделать групповую (GPO) политику для выключения пк при простои больше двух часов.

Создаём политику

Как сделать групповую (GPO) политику для выключения пк при простои больше двух часов.

Как сделать групповую (GPO) политику для выключения пк при простои больше двух часов.

Как сделать групповую (GPO) политику для выключения пк при простои больше двух часов.

Как сделать групповую (GPO) политику для выключения пк при простои больше двух часов.

Как сделать групповую (GPO) политику для выключения пк при простои больше двух часов.

Как сделать групповую (GPO) политику для выключения пк при простои больше двух часов.

Similar Posts:

Метки:

2 комментария для “Как сделать групповую (GPO) политику для выключения пк при простои больше двух часов.”

  1. Отличный гайд, спасибо большое!
    Единственное: клиенты на применение политики встают минут на 15-20 почему-то. Не могу разобраться почему.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *