列出所有的Windows机器名称和IP

我想列出一个域中的所有机器名和他们当前的ip,如果他们在线。 我想在域控制器上使用dsquery列出所有机器。

我想知道:

  • 如果我在不同地点分布域控制器,它会工作吗?
  • 我是否需要在主域控制器上运行它?
  • 有其他select吗?

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

我build议使用PowerShell。 当您有Windows 7或Vista计算机(使用域join)时,您可以安装RSAT并使用提供的cmndlet

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

此代码为您提供了dnsname和当前ipv4地址(如果正在运行;使用cmdlettesting连接)。

3个问题的答案:

  1. 如果您在站点之间使用特殊的复制计划,您可能会遇到DNS区域不是最新的。
  2. 你不需要运行PDC模拟器(或PDC,如果你是上帝禁止的话,仍然使用NT4),但是如果你想要在林中的一个域中检索计算机上的信息,你可能想运行它违背了全球目录
  3. 如果您在本地networking中使用Microsoft DHCP,请使用以下命令显示活动的客户机租用: Netsh dhcp server scope 10.0.0.0 show clients

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

  1. 针对全局编录执行LDAPsearch,筛选operatingsystem属性,
  2. 对于每个返回的logging,对本地DNS服务器执行DNS查找
  3. 用WMI查询每台计算机(只是一个简单的查询),以确保它在线