对于要使用静态IP远程重新配置的每台计算机,我都有一个csv文件,其中包含以下值
name,nic,ip,mask,defaultgw
我希望能够为列出的每个IP重新配置IP,但是如果列出的计算机不止一台,则脚本会卡住。这是因为在第一次循环迭代结束时...除非我在运行脚本的服务器上手动执行ipconfig / flushdns,否则我将失去与正在配置的服务器的连接,并且脚本将挂起,剩下的服务器。到目前为止,我是这个。
$csv = import-csv "c:\scripts\builds\machines.csv"
foreach ($Row in $csv) {
$machine = $Row.name
$Nic = $row.Nic
$address = $row.IP
$mask =$row.mask
$defaultgw = $row.gw
invoke-command -computername $machine -scriptblock { Get-NetIpAddress - InterfaceAlias $using:nic | New-NetIPAddress -ipaddress $using:address -PrefixLength $using:mask -DefaultGateway $using:defaultgw | Register-DnsClient}}
}
这可以使用工作流或只是简单的开始作业来完成,如果可以的话,我将感谢您对正确和经过测试的任何帮助 代码吗?
答案 0 :(得分:0)
我怀疑一旦更改IP地址,您将丢失与远程计算机的连接,而本地计算机挂起并试图保持连接。
尝试拨打电话,放下有效负载,然后在断开连接后运行。
也就是说,上传代码,然后生成它,然后在它有机会运行之前断开连接(也许在远程代码中添加了睡眠?)。这样,您可以启动有效负载并断开连接,然后再影响您。
例如,您可以将具有所需值的文件复制到该计算机,然后计划在未来5秒钟内运行任务,然后在运行之前断开连接。该任务将运行,并且由于您已经断开连接,因此不会受到影响。
您还可以考虑使用具有静态保留的DHCP。比您在此尝试要做的事情要容易得多。