检测注销并登录powershell

时间:2011-03-02 19:06:32

标签: logging powershell

如何使用PowerShell检测用户是否已从Windows系统(最好是使用win7,vista或XP)登录或注销?

我想记录每次登录和注销机器的日期和时间。

提前谢谢

2 个答案:

答案 0 :(得分:7)

您可以从事件日志中获取此信息:

Get-EventLog System -Source Microsoft-Windows-Winlogon

登录的InstanceId为7001,注销有7002.用户帐户是ReplacementStrings中的SID。

以下是一些更有用的代码。

$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来从远程计算机获取这些事件。

答案 1 :(得分:1)

这些东西已经存在于Windows系统日志中,类型为“Winlogon”。不知道你是如何通过powershell从那里提取信息的,但至少记录部分已经存在。