列出所有 Windows 机器名称和 IP

列出所有 Windows 机器名称和 IP

我想列出域中的所有机器名称及其当前 IP(如果它们在线)。我正在考虑使用查询在域控制器上列出所有机器。

我想知道:

  • 如果我在不同位置设有分布式域控制器,它会起作用吗?
  • 我需要在主域控制器上运行它吗?
  • 还有其他选择吗?

答案1

  1. 是的。您通常只针对一个域控制器运行查询,而不是所有域控制器。数据将复制到所有站点。查询表示当前站点的状态,由于复制时间的原因,该状态可能与其他站点不同。要获取计算机帐户,您不需要 DNS 服务器,但正如 Mathias 所说,DNS 区域可能不是最新的。
  2. 不,可以从域中的任何计算机读取活动目录中的计算机帐户(除非出于某种原因拒绝读取,但通常情况并非如此)。DNS查询也是如此
  3. 是的。请参阅下文

我建议使用 powershell。如果你有一台 Windows 7 或 Vista 机器(已加入域),你可以安装远程医疗并使用提供的 cmndlet

Get-ADComputer -Filter * | Select-Object DNSHostName, @{name="Ip";Expression={(Test-Connection $_.DNSHostname -Count 1).IPV4Address.IPAddressToString}}

此代码为您提供 dnsname 和当前 ipv4 地址(如果正在运行;使用 cmdlet test-connection)。

答案2

3 个问题的 3 个答案:

  1. 如果您在站点之间采用特殊的复制计划,您可能会发现 DNS 区域不是最新的。
  2. 您不需要针对 PDC 模拟器(或 PDC,如果您仍然使用 NT4,但愿不会发生这种情况)运行它,但如果您想要检索林中一个以上域的计算机信息,您可能需要针对全局编录运行它
  3. 如果您在本地网络中使用 Microsoft DHCP,请使用以下命令显示活动客户端租约:Netsh dhcp server scope 10.0.0.0 show clients

我可能会使用 VBScript 或 PowerShell 来执行以下操作:

  1. 针对全局目录执行 LDAP 搜索,过滤属性operatingsystem
  2. 对于每个返回的记录,针对本地 DNS 服务器执行 DNS 查找
  3. 使用 WMI 查询每台计算机(只是一个简单的查询)以确保它在线

相关内容