AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 43728
Accepted
rodey
rodey
Asked: 2009-07-22 11:32:46 +0800 CST2009-07-22 11:32:46 +0800 CST 2009-07-22 11:32:46 +0800 CST

查询域中在线的计算机

  • 772

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

我们正在推出不向我们提供此功能的新桌面管理软件。当我们想要连接到一台计算机时,我们需要知道它的名称。

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

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

windows networking
  • 6 6 个回答
  • 3204 Views

6 个回答

  • Voted
  1. Best Answer
    Mark Amerine Turner
    2009-07-22T11:52:36+08:002009-07-22T11:52:36+08:00

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

    重新创建非常简单,不涉及任何魔法。

    • 2
  2. Jim B
    2009-07-22T11:44:53+08:002009-07-22T11:44:53+08:00

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

    • 1
  3. Bren0man
    2021-02-23T21:48:55+08:002021-02-23T21:48:55+08:00

    - - 前言 - -

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

    - - 解决方案 - -

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

    尽管您断言 ping 每台域计算机将是一个缓慢的、资源密集型的过程,但这正是我建议做的事情。如果 Active Directory 跟踪每台计算机的连接状态肯定会很方便(不管这个功能产生的流量,这是微软要解决的问题),但不幸的是它没有。

    简单地说,下面的代码从 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
    
    • 1
  4. Peter
    2009-07-22T11:44:07+08:002009-07-22T11:44:07+08:00

    如果您对监控设备状态感兴趣并考虑构建 GUI,您可能会考虑使用Nagios或Zenss等系统(还有很多其他系统,但这两个是流行的选项)。

    • 0
  5. Maximus Minimus
    2009-07-22T13:09:46+08:002009-07-22T13:09:46+08:00

    像 Advanced IP Scanner ( http://www.radmin.com/products/utilities/ipscanner.php ) 这样基本的东西应该能够为您提供此信息。

    • 0
  6. Kevin Kuphal
    2009-07-22T13:12:13+08:002009-07-22T13:12:13+08:00

    我经常使用 MMC 控制台进行计算机管理,连接到我们的文件服务器并检查那里的用户连接,以获取他们的计算机名称和 IP 地址以进行远程支持。它既快速又简单,我不必引导用户查找他们的计算机名称。如果他们的连接超时或者我只是让他们单击联网驱动器以打开连接。

    • 0

相关问题

  • 您最喜欢的云计算提供商是什么?[关闭]

  • Vanilla Powershell 是否足以成为 Windows 和 DB 服务器管理员的语言?

  • 为什么添加新驱动器后我的磁盘驱动器访问速度如此之慢?

  • 在 Windows Server 2003 下使用 wscipt 从 .asp 文件运行 .exe

  • 最佳混合环境(OS X + Windows)备份?[关闭]

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve