Обнаружение выхода из системы и входа в PowerShell

Как я могу определить, вошел ли пользователь в систему Windows или нет (предпочтительно, работает с win7, vista или XP) с помощью powershell?

Я хочу зарегистрировать дату и время каждого входа и выключения машины.

заранее спасибо

2 ответа

Решение

Вы можете получить эту информацию из журнала событий:

Get-EventLog System -Source Microsoft-Windows-Winlogon

У InstanceId входа в систему 7001, у выхода из системы 7002. Учетная запись пользователя - это SID в ReplacementStrings.

Вот еще несколько полезных кодов для вас.

$UserProperty = @{n="User";e={(New-Object System.Security.Principal.SecurityIdentifier $_.ReplacementStrings[1]).Translate([System.Security.Principal.NTAccount])}}
$TypeProperty = @{n="Action";e={if($_.EventID -eq 7001) {"Logon"} else {"Logoff"}}}
$TimeProeprty = @{n="Time";e={$_.TimeGenerated}}
Get-EventLog System -Source Microsoft-Windows-Winlogon | select $UserProperty,$TypeProperty,$TimeProeprty

Вы также можете получить эти события с удаленного компьютера, добавив параметр "-ComputerName" в Get-EventLog.

Такие вещи уже есть в системном журнале windows, типа "Winlogon". Не знаю, как вы могли бы извлечь информацию оттуда через PowerShell, но, по крайней мере, часть регистрации уже готова для вас.

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