【问题标题】:Finding All DHCP and DNS servers查找所有 DHCP 和 DNS 服务器
【发布时间】:2020-05-03 13:45:25
【问题描述】:

我有一个客户要求我找到他所有的 Dhcp 和 DNS 服务器以及一些附加信息,例如 DC 服务器和操作系统 所以我决定尝试提高我的 powershell 技能,但我还是新手,所以我写了这个脚本,但我想还是缺少一些东西,因为它不起作用

编辑:我设法找到了一种方法来获取我想要的信息,即操作系统,但它让我找回了公司中的所有服务器

$servers = get-dhcpserverindc
   foreach($server in $Servers){
get-adcomputer -filter {Operatinsytem -like "*windows server*"} -properties 
Operatingsystem | sort name | format-table name,Operatinsytem

}

【问题讨论】:

  • Get-DhcpServerInDC 将返回域中所有独立运行的 DHCP 服务器。列出域中 DNS 服务器的最简单方法是使用nslookup,将类型设置为NS,然后搜索域名。
  • 我知道,但我想做的是获取完整的信息,例如操作系统以及哪个是 DC
  • Get-ADDomainController 将检索 DC - 您可以从那里交叉引用。
  • 您的客户端是否明确要求 Windows DNS/DHCP 服务器?因为他们可能还在 Linux 上运行了 BIND 或 ISC DHCP。

标签: windows powershell server


【解决方案1】:

这不是太棘手。首先,您连接到安装了 RSAT 工具的机器,例如管理服务器、跳转框或域控制器,并获取所有 DHCP 服务器的列表。

$DHCPServers = Get-DhcpServerInDC

然后我们使用 PowerShell 的内置循环逻辑来单步执行每个服务器,并检查您需要的操作系统信息。

ForEach ($DHCPServer in $DHCPServers){
   $OSInfo = Get-CIMInstance -ComputerName $DHCPServer.DnsName -ClassName Win32_OperatingSystem
}

最后,我们将在上面进行修改以返回您要查找的信息,即 IP 地址、名称和操作系统版本

ForEach ($DHCPServer in $DHCPServers){
   $OSInfo = Get-CIMInstance -ComputerName $DHCPServer.DnsName -ClassName Win32_OperatingSystem
   [pscustomobject]@{
      ServerName = $DHCPServer.DnsName;
      IPAddress=$DHCPServer.IpAddress;
      OS=$OSInfo.Caption
    }
}

ServerName IPAddress    OS                                    
---------- ---------    --                                    
dc2016     192.168.10.1 Microsoft Windows Server 2016 Standard

从那里,您可以将其存储在一个变量中,使其成为电子表格,做任何您需要做的事情。

希望这会有所帮助。

如果这不起作用,请确保您首先启用了 PowerShell 远程处理。

【讨论】:

  • 看起来很棒,我明天会试试这个,肯定会更新你。我是这个社区的新手,到目前为止你们都很棒!
猜你喜欢
  • 2014-02-10
  • 2014-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多