我正在编写一个 Powershell 脚本来确定某台机器是否在公司网络上。该机器可能在域中,也可能不在域中,所以我想在“IP”级别进行检查。
已经编写了一些东西来检查,通过 ping 几个不同子网上的几个服务器(以避免某人位于另一个(外部)子网上且主机位于同一 IP 上的风险)。
可以工作,但是速度有点慢,并且不是特别“面向未来”——例如,两年后当我停止使用服务器时它就会崩溃。
有没有什么办法我可以使用本地 dhcp 服务器提供的 dns 后缀?
只要告诉我需要检查什么,我就能弄清楚脚本。
哒,
本
答案1
查看 WMI。Win32_NetworkAdapterConfiguration 类将告诉您有关主机的信息,例如其具有的 DNS 后缀以及从哪个 DHCP 服务器租用了 IP 地址。
答案2
嗯,有趣的问题......
我的 3.50 美元:hey.look.im.on.the.internal.network.mycompany.com. IN A 127.0.0.1
在您的内部 DNS 上创建一个具有 1 秒 TTL 的 DNS 条目(如)并尝试解决它。
如果存在(并且与 IP 匹配),则说明您处于内部网络中。如果不存在,则说明您处于其他网络中。(请注意,这种方法也存在很多问题,但似乎比 ping 网络方法要好一些)。
答案3
也许最简单的方法是寻找 LAN 上始终可用的某些东西。例如,网关机器和只有本地 DNS 服务器才能回答的 DNS 查询。
答案4
它可能不完全是你想要的但它可能会帮助你达到目标。