我的工作中有一项任务,我们需要更改多台计算机上的静态 IP 地址(不是 DNS)。首先,是否可以使用 Powershell 中的脚本来执行此操作,或者我可以使用带有组策略的 AD?他们确实想要一些快速/自动化的方法来执行此操作,而我很难找到此请求的资源脚本。
答案1
您可以使用 Windows 管理规范 (WMI) 来实现这一点。Powershell 是操纵 WMI 的众多方法之一,因此如果您想使用 c#、Windows 脚本主机或其他具有 WMI 访问权限的程序,它们的工作原理都相同。
您将首先使用查询来获取允许您调整 IP 设置的正确 WMI 对象。然后您将使用获取的对象来执行此操作。
所讨论的对象是win32_NetworkAdapterConfiguration
……这个家伙会给你你想要的设置。然后你就可以调用EnableStatic(IP, Netmask)
它了!(很神奇……对吧?)
上述教程的第一部分使用 PowerShell 原生 cmdlet。第二部分使用 WMI cmdlet(我建议使用)。两者都可以。当您使用其他语言时,第二个会对您有所帮助。
嘿伙计?(你可能会问)机器可以使用的选项在哪里??。。查一下吧。。有很多选项。。我不可能全部告诉你。一旦你开始使用 WMI 进行管理。。你就再也不会回头了。;)
WMI 将允许您执行所有操作,从设置默认打印机到告诉您谁在其机器上安装了什么... 有了这项技术,您将成为 Windows 管理员 BADA$$!
需要将其放入脚本中吗?伪代码。
foreach (computer in the network)
{
get the wmi object for computer
set to static ip on object
}
答案2
您没有告诉我们您将如何确定每台计算机的静态 IP,但您肯定可以找到确定这一点的方法。您可以有一个包含要设置的主机名和 IP 的 CSV 文件,并让 PowerShell 读取该文件。
作为Señor CMasMas 说,您可以使用 WMI 设置静态 IP。为了给出更具体的答案,下面是 PowerShell 中的示例脚本:
$wmi = Get-WmiObject win32_networkadapterconfiguration -filter "ipenabled = 'true'"
$wmi.EnableStatic("10.0.0.15", "255.255.255.0")
$wmi.SetGateways("10.0.0.1", 1)
$wmi.SetDNSServerSearchOrder("10.0.0.100")
这(来自这里) 允许您设置静态 IP 地址、子网掩码、默认网关和 DNS 服务器。