查询域中在线的计算机

查询域中在线的计算机

在我工作的地方,我们使用一款名为 Dameware 的软件来远程管理我们域中的计算机。通过 Dameware,我们可以获取所有在线且当前连接到域的计算机的列表。

我们正在推出新的桌面管理软件,但该软件不提供此功能。我们需要在连接计算机时知道计算机的名称。

我知道如何获取属于域的计算机列表,但同时返回可能在线也可能不在线的计算机。如何返回当前连接到域的计算机列表(即它们具有活动的网络连接)?我考虑过返回属于域的计算机列表,然后对每台计算机执行 ping 操作,但我认为这会很慢,而且完全浪费资源。

您以前遇到过这个问题吗?如果遇到过,您有什么解决方案吗?我更喜欢 .NET 解决方案,但 VB 脚本也可以。我最终可能会为此构建一个 GUI,然后将其分发给我们 IT 团队的成员。

答案1

如果您观察来自 DameWare 的出站流量,它会从 AD 中捕获所有计算机对象,然后尝试使用 NETBIOS 通过其主机名连接到它们。

重新创建非常简单,不需要任何魔法。

答案2

Active Directory 用户和计算机将为您提供域中所有计算机帐户的列表。除了脚本之外,我从来不用担心计算机是在线还是离线,因为我所做的更改是通过组策略完成的。对于桌面支持,如果我不能引导用户告诉我他的计算机名称,那么我遇到的问题远比如何连接要大得多。

答案3

- - 前言 - -

我知道这个问题已经过时了,但它仍然是 Google 上的热门搜索结果,特别是在搜索“获取所有在线域计算机”时。

- - 解决方案 - -

一行 PowerShell 和必备的 ActiveDirectory模块- 使用 Active Directory 对象时需要,将实现这一点。

尽管您断言对每台域计算机执行 ping 操作将是一个缓慢且耗费资源的过程,但这正是我建议做的。如果 Active Directory 能够跟踪每台计算机的连接状态(别介意此功能产生的流量,这是 Microsoft 需要解决的问题),那肯定会很方便,但不幸的是,它没有这样做。

简而言之,以下代码从 Active Directory 获取设备列表,对每个设备执行 ping 操作,记录响应(或不响应),并显示响应的计算机列表。使用 PowerShell 7,此操作简单、快速且不占用大量资源。

- - 代码 - -

Windows PowerShell(即版本5.1):

Get-ADComputer -Filter "*" | Where-Object -FilterScript { ( Test-Connection -ComputerName $PsItem.Name -Count 1 -Quiet ) -Eq $true } | Select-Object -Property "Name"

输出:

PS 5.1> Get-ADComputer -Filter "*" | Where-Object -FilterScript { ( Test-Connection -ComputerName $PsItem.Name -Count 1 -Quiet ) -Eq $true } | Select-Object -Property "Name"

Name
----
DC1
DC2
TestWorkstation1
TestWorkstation2
TestWorkstation3

上面的命令虽然简单,但在生产环境中完成起来可能非常慢。因此,建议使用 PowerShell 7,因为它对 ICMP 管理和并行化都有显著改进。它可以使用 Windows PowerShell 来完成,但是比较困难。

PowerShell 7:

Get-ADComputer -Filter "*" | ForEach-Object -Parallel { Test-Connection -TargetName $PsItem.Name -Count 1 -ErrorAction "SilentlyContinue" | Where-Object -Property "Status" -Like "Success" } | Select-Object -Property "Destination"

输出:

PS 7.1.2> Write-Host -Object 'PS 7.1.2> Get-ADComputer -Filter "*" | ForEach-Object -Parallel { Test-Connection -TargetName $PsItem.Name -Count 1 -ErrorAction "SilentlyContinue" | Where-Object -Property "Status" -Like "Success" } | Select-Object -Property "Destination"

Destination
-----------
DC1
DC2
Workstation1
Workstation2
Workstation3

答案4

像高级 IP 扫描仪这样基本的http://www.radmin.com/products/utilities/ipscanner.php) 应该能够为您提供此信息。

相关内容