Я хочу определить, был ли пользователь активным в течение последних 10 минут, используя пакетный файл или какой-либо фоновый процесс

Я никогда раньше не работал с пакетными файлами, но идея заключается в том, что я хочу просто запустить программу после того, как я был неактивен в течение определенного периода времени.
Неважно, какая программа, я просто хочу, чтобы она работала одновременно с моей заставкой для некоторых световых эффектов с моей клавиатурой.
Я полагаю, что другим решением было бы определить, запущена ли заставка или нет, и запустить ее в том же состоянии. Я просто не знаю, с чего начать, но хочу учиться.

2 ответа

Просто запланируйте выполнение задачи в планировщике задач, только если пользователь не использовал компьютер в последние 10 минут.

Этот PowerShell получает всех пользователей долго и вовремя. Измените переменную времени, должно работать.

Import-Module ActiveDirectory

function Get-ADUsersLastLogon()
{
  $dcs = Get-ADDomainController -Filter {Name -like "*"}
  $users = Get-ADUser -Filter *
  $time = 0
  $exportFilePath = "c:\lastLogon.csv"
  $columns = "name,username,datetime"

  Out-File -filepath $exportFilePath -force -InputObject $columns

  foreach($user in $users)
  {
    foreach($dc in $dcs)
    { 
      $hostname = $dc.HostName
      $currentUser = Get-ADUser $user.SamAccountName | Get-ADObject -Server $hostname -Properties     lastLogon

      if($currentUser.LastLogon -gt $time) 
      {
        $time = $currentUser.LastLogon
      }
    }

    $dt = [DateTime]::FromFileTime($time)
    $row = $user.Name+","+$user.SamAccountName+","+$dt

    Out-File -filepath $exportFilePath -append -noclobber -InputObject $row

    $time = 0
  }
}

Get-ADUsersLastLogon
Другие вопросы по тегам