将IP地址从dhcp更改为静态

时间:2018-08-21 14:09:22

标签: powershell dhcp static-ip-address

我编写了一个Powershell脚本,该脚本适用于Windows 10,但不适用于旧版本的Powershell。它还会在某些PC上引发CIM错误。真正的麻烦是,它无法在需要更换的200台PC上运行; Windows 7 PC,每个PC位于不同的网络中。

我需要这个来获取IP,更改最后一个八位位组,然后设置IP;我可以从LANDesk运行它,但是它需要在任何版本的Windows上都可以运行,所以我认为Powershell已经用完了吗?

我一般并不精通脚本编写,并且我只在Powershell中工作,但是,不必是Powershell。

我的脚本有些破烂,

$computername = HOSTNAME.EXE
$info = Get-NetIPAddress -CimSession $computername -AddressFamily IPv4 | where { $_.InterfaceAlias -notmatch 'Loopback'} | Select PSComputername,IPAddress,InterfaceIndex
$ip = $info.IPAddress
$intindex = $info.InterfaceIndex

write "IP: "$ip
write "InterfaceIndex: "$intindex

$ip2 = $ip.split('.')
$ip2[-1] = 80
$newip = $ip2 -join "." 

Write "New IP: "$newip

Set-NetIPAddress -InterfaceIndex $intindex -IPAddress $newip -PrefixLength 24 -WhatIf

2 个答案:

答案 0 :(得分:1)

感谢BenHPaxz

我有一个使用wmi的解决方案:

$ip = Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object { $_.IPAddress } | Select-Object -Expand IPAddress | Where-Object { $_ -like '10.*' }
$ip2 = $ip.split('.')
$ip2[-1] = 80
$newip = $ip2 -join "."
$gateway = (Get-wmiObject Win32_networkAdapterConfiguration | ?{$_.IPEnabled}).DefaultIPGateway
$wmi = Get-WmiObject win32_networkadapterconfiguration -filter "ipenabled = 'true'"
$wmi.EnableStatic($newip ,"255.255.255.0")
$wmi.SetGateways($gateway,1)
$wmi.SetDNSServerSearchOrder("10.x.x.x")

答案 1 :(得分:0)

使用PowerShell将IP地址从dhcp更改为静态:

setTimeout