Обнаружение выхода из системы и входа в 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, но, по крайней мере, часть регистрации уже готова для вас.