Я хочу определить, был ли пользователь активным в течение последних 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