3

我有一个脚本可以获取域中每台计算机的最后登录时间。

我的脚本:

$dcs = Get-ADComputer -Filter { OperatingSystem -NotLike '*Server*' } -Properties OperatingSystem

foreach($dc in $dcs) { 
    Get-ADComputer $dc.Name -Properties lastlogontimestamp | 
    Select-Object @{n="Computer";e={$_.Name}}, @{Name="Lastlogon"; Expression={[DateTime]::FromFileTime($_.lastLogonTimestamp)}}
}

结果:

Computer    Lastlogon                                                            
--------    ---------                                                            
DC1         6/06/2013 16:38:24                                                   
DC2         6/06/2013 16:30:40 

我还想知道是谁/哪个帐户进行了此登录。例如:

Computer    Lastlogon            User                                                   
--------    ------------------   ----                                                         
DC1         6/06/2013 16:38:24   user2                                                
DC2         6/06/2013 16:30:40   user1

我应该如何编辑我的脚本以获取记录的用户名?

4

1 回答 1

1

事件日志怎么样:

$dcname = $dc.name

$lastevent = get-winevent -FilterHashtable @{LogName="security"; ID=4624} -computername $dcname | select -first 1

这将为您提供最新的登录事件 - 您必须从那里开始从消息中提取用户名,这可能很棘手,但可能有几种方法。从 $lastevent.message 中提取“Account Name:”和“Account Domain:”之间的字符串。

还需要一种方法来过滤掉 SYSTEM 和非用户帐户。计算机帐户将以 $ 结尾。

于 2013-06-06T18:22:46.927 回答