使用CSV输入的批量IP配置



我有一个CSV文件,每个计算机的以下值我想使用静态IP

进行远程重新配置
name,nic,ip,mask,defaultgw

我希望能够为每个列出的IP重新配置IP,但是如果我列出了多个计算机,则脚本会卡住。这是因为在第一个循环迭代的末尾,除非我手动在脚本运行的服务器上手动执行ipconfig /flushdns,否则我将失去与要配置的服务器的连接,并且脚本只是悬挂,将其余的服务器悬挂。到目前为止,我拥有的是:

$csv = import-csv "c:scriptsbuildsmachines.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}}
}

可以使用工作流或只是简单的启动工作?

我怀疑您一旦更改IP地址而丢失了与远程计算机的连接,而本地计算机则悬挂尝试保持连接。

尝试拨打呼叫,然后删除有效载荷,然后在断开连接后运行

也就是说,上传代码,然后产生它,然后在它有机会运行之前断开连接(可能在远程代码中添加睡眠?)。这样,您可以在影响您之前启动有效负载并断开连接。

例如,您可以将文件复制到具有所需值的计算机,然后安排一个任务以将来在5秒内运行,然后在运行之前断开连接。然后,任务将运行,并且由于您已经断开连接,因此您不会受到它的影响。

您也可以考虑具有静态预订的DHCP。这比您在这里尝试做的事情要容易得多。

最新更新