检索通过AD登录的计算机名称admin帐户
问题描述:
如何检索管理员帐户登录的Active Directory中的计算机名称及其IP地址?检索通过AD登录的计算机名称admin帐户
我可以检索本地管理员帐户与我下面的脚本:
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
[email protected]($objoutput)
}#end for
return $objreport
}#end function
但我想是的管理员登录到计算机返回所有实例。这是可能的还是有什么会返回类似的结果?
答
你不可能仅凭AD就能做到这一点。 我们在这里说几台电脑?不过,我会利用eventlog。每个登录事件都存储并具有登录的用户的SID(或触发事件)。事件7001(登录)是您正在寻找。
您可以以een XML格式检索这些事件。该XML包含触发事件的用户的SID。您可以使用.NET翻译功能将其转换为SamAccountName,或者您可以从AD中检索所有SID,并以这种方式比较它们(因此可以使用hasbtable)。
我前段时间写过一个脚本,使用了很多这些技术。 这是为了看到用户何时登录和关闭并锁定和解锁他们的计算机。你可以在这里找到一个博客帖子大约是:
https://cookiecrumbles.github.io/GetLogonEventViewer/
这博文还引用了GitHub上,你可以找到我所做的脚本。
随着一些调整,你可以把它变成你需要的工具。
你想要一个当前登录的用户是Active Directory管理员组成员的计算机列表吗? Active Directory不存储该信息。只有计算机本身知道谁登录。您需要连接到域中的每台计算机,并在该计算机上查询在交互式会话或控制台会话中登录的用户列表。 –
刚刚列出IP /子网掩码和计算机名称怎么样?这是可行的吗? @BaconBits –
Active Directory并不知道有关IP地址或子网的任何信息。 AD骑在DNS之上。 DNS是你的主机名到IP地址查找的地方。但是,DNS并不知道有关子网的任何信息。再次,你不得不问客户端计算机使用的是什么子网掩码。您可以设置AD站点和服务,也许可以通过这种方式获取信息,但这样做的目的是根据您使用的逻辑地址来描述物理结构,以便可以在WAN链路上管理站点间流量。 –