Как отключить компьютер при бездействии определенное время?
Сам недавно узнал (месяцев 8 назад) что в PowerShell можно использовать C# напрямую в скрипте.Add-Type @'
    public class Foo
    {
        public string GetComputerName()
        {
            return System.Environment.MachineName + " it works!";
        }
    }
'@

$foo = New-Object Foo

$foo.GetComputerName()
Это позволит вам написать метод который вернет работает ли пользователь за ПК или нет, и уже на основании этого принимать решение о дальнейшей работе ПК. Можно также все это сделать в C# и только вызвать в скрипте.
Скрипт нельзя запускать много раз с добавлением типа, будет ошибка.
Для этого сохраните создание типа в другом скрипте и импортируйте его в основной через. C:\Path\CreateType.ps1
При внесении изменения в тип нужно перезапустить сессию ISE PowerShell.
C# богаче для определения активности пользователя.
если у вас windows vista\7\8 то проверьте планировщик задач, возможно ночью качаются обновления\дефрагментация и прочее, что мешает засыпанию либо наоборот пробуждает ПК