天天看点

PowerShell 查询域用户和本地用户加入组的时间和最后登录信息

看见论坛里有人问如何查询域用户,本地用户在对应组的加入时间,以及他们最后登录的时间。

豆子写了个小脚本来实现。

对于域用户,最后登录时间很容易,get-aduser就能获取了。注意一下时间格式转换

1

<code>PS C:\WINDOWS\system32&gt; </code><code>get-aduser</code> <code>yli -Properties lastlogon | select name, @{n=</code><code>"Lastlogon"</code><code>;e={</code><code>[datetime]</code><code>::FromFileTime(</code><code>$_</code><code>.lastlogon)}}</code>

结果如下

<a href="http://s2.51cto.com/wyfs02/M02/7B/12/wKiom1bGfwuA6TeOAAAXlpoohQk774.png" target="_blank"></a>

域用户加入组的时间需要在对应的DC上查询metadata。比如查询域管理员都是什么时候加入这个组的

2

3

<code>$pdc</code><code>=</code><code>Get-ADDomainController</code> <code>-Discover -Service PrimaryDC</code>

<code>$dn</code><code>=(</code><code>get-adgroup</code> <code>"domain admins"</code><code>).distinguishedname</code>

<code>Get-ADReplicationAttributeMetadata</code> <code>$dn</code> <code>-Server </code><code>$pdc</code> <code>-ShowAllLinkedValues | </code><code>Where-Object</code> <code>{</code><code>$_</code><code>.attributename </code><code>-eq</code> <code>'member'</code><code>} | select FirstOriginatingcreatetime, attributevalue</code>

<a href="http://s1.51cto.com/wyfs02/M02/7B/12/wKioL1bGf4eibR_ZAAGGBYDJv94828.png" target="_blank"></a>

本地用户的登录时间需要用 adsi来查询。在AD 模块开发之前,管理员只能用ADSI来操纵AD和本地对象。现在操作AD可以直接用模块了,但是本地的貌似还得用ADSI才行。

比如查询本机的所有本地用户的上一次登录时间

<code>$adsi</code> <code>= </code><code>[ADSI]</code><code>"WinNT://$env:COMPUTERNAME"</code>

<code>$adsi</code><code>.Children | where {</code><code>$_</code><code>.SchemaClassName </code><code>-eq</code> <code>'user'</code><code>}  | select name,Lastlogin</code>

<a href="http://s4.51cto.com/wyfs02/M00/7B/12/wKiom1bGf2WiztBWAAAjA3AN-uE269.png" target="_blank"></a>

最后,如果需要查询本地用户加入或者退出组的时间,我没有找到现成的命令,只能通过日志来查询了。

首先需要gpo里面打开审计功能。

<a href="http://s3.51cto.com/wyfs02/M01/7B/12/wKioL1bGfgygRCq7AACB8Juqlxg701.png" target="_blank"></a>

重启电脑之后就可以了。本地的组添加用户会生成4732的日志,删除会生成4733的日志。我只需要查询对应的日志,并解析XML文件就行了。

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

<code>#查询本机日志</code>

<code>$eventcritea</code> <code>= @{logname=</code><code>'security'</code><code>;id=4732}</code>

<code>$Events</code> <code>=</code><code>get-winevent</code> <code>-ComputerName </code><code>$env:COMPUTERNAME</code> <code>-FilterHashtable </code><code>$eventcritea</code> 

<code>#$Events = Get-WinEvent -ComputerName syddc01 -Filterxml $xmlfilter        </code>

<code>$result</code><code>=@()</code>

<code>            </code> 

<code># 解析日志        </code>

<code>ForEach</code> <code>(</code><code>$Event</code> <code>in</code> <code>$Events</code><code>) {    </code>

<code>      </code> 

<code>    </code><code># Convert the event to XML            </code>

<code>    </code><code>$eventXML</code> <code>= </code><code>[xml]</code><code>$Event</code><code>.ToXml()    </code>

<code>    </code><code>$groupname</code><code>=</code><code>$eventXML</code><code>.Event.EventData.Data[2].</code><code>'#text'</code><code>.ToString()</code>

<code>    </code><code>$sid</code><code>= </code><code>$eventXML</code><code>.Event.EventData.Data[1].</code><code>'#text'</code><code>.ToString()</code>

<code>    </code> 

<code>#转换SID到用户名</code>

<code>    </code><code>$objSID</code> <code>= </code><code>New-Object</code> <code>System.Security.Principal.SecurityIdentifier(</code><code>$sid</code><code>)</code>

<code>    </code><code>$objUser</code> <code>= </code><code>$objSID</code><code>.Translate( </code><code>[System.Security.Principal.NTAccount]</code><code>)</code>

<code>#保存结果到自定义的一个对象      </code>

<code>    </code><code>$temp</code><code>=</code><code>[pscustomobject]</code><code>@{Time=</code><code>$Event</code><code>.TimeCreated;Username=</code><code>$objUser</code><code>.Value;GroupName=</code><code>$groupname</code><code>}</code>

<code>   </code><code>$result</code><code>+=</code><code>$temp</code>

<code>}            </code>

<code>  </code> 

<code>  </code><code>$result</code>

<a href="http://s2.51cto.com/wyfs02/M02/7B/12/wKiom1bGfmaQmNSmAAAMC81CjgM937.png" target="_blank"></a>

本文转自 beanxyz 51CTO博客,原文链接:http://blog.51cto.com/beanxyz/1743238,如需转载请自行联系原作者