如何在Active Directory中检索由管理员帐户登录的计算机名称及其IP地址?
我可以使用下面的脚本检索本地管理员帐户:
function get-localadministrators {
param ([string]$computername=$env:computername)
$computername = $computername.toupper()
$ADMINS = get-wmiobject -computername $computername -query "select * from win32_groupuser where GroupComponent=""Win32_Group.Domain='$computername',Name='administrators'""" | % {$_.partcomponent}
foreach ($ADMIN in $ADMINS) {
$admin = $admin.replace("$computernamerootcimv2:Win32_UserAccount.Domain=","") # trims the results for a user
$admin = $admin.replace("$computernamerootcimv2:Win32_Group.Domain=","") # trims the results for a group
$admin = $admin.replace('",Name="',"")
$admin = $admin.REPLACE("""","")#strips the last "
$objOutput = New-Object PSObject -Property @{
Machinename = $computername
Fullname = ($admin)
DomainName =$admin.split("")[0]
UserName = $admin.split("")[1]
}#end object
$objreport+=@($objoutput)
}#end for
return $objreport
}#end function
但我想要的是返回登录到计算机的所有管理员实例。这有可能还是有什么会产生类似的结果?
答案 0 :(得分:1)
单独使用AD无法做到这一点。 我们在这说多少台电脑?不过,我会利用事件日志。每个登录事件都存储并具有登录(或触发事件)的用户的SID。事件7001(登录)是您正在寻找的。 p>
您可以使用een XML格式检索这些事件。此XML包含已触发事件的用户的SID。您可以使用.NET转换函数将其转换为SamAccountName,也可以从AD中检索所有SID并以这种方式进行比较(因此可以使用hasbtable)。
我前段时间写了一个脚本,它使用了很多这些技巧。 它旨在查看用户何时登录和关闭并锁定和解锁其计算机。你可以在这里找到一篇关于它的博客文章:
https://cookiecrumbles.github.io/GetLogonEventViewer/
该博文还引用了github,您可以在其中找到我制作的脚本。
通过一些调整,您可以将其变成您需要的工具。