【发布时间】:2020-09-07 23:29:07
【问题描述】:
对于一组计算机,我想连接每台计算机,枚举每个具有真实 IP 的 NIC,并且对于每个 NIC,我想循环通过每个 DNS 服务器(第一、第二、第三、第四、第五等)如果它包含特定的 IP(例如 8.8.8.8),我想在不影响任何其他 DNS 服务器的情况下替换它(用 7.7.7.7)。我如何为 X 数量的 DNS 服务器执行此操作,而无需一次执行每个服务器条目(就像我在下面对前 3 个所做的那样)并同时更改它。
$computer ='wrk-01'
$NICs = Get-WMIObject Win32_NetworkAdapterConfiguration -computername $computer |
where{$_.IPEnabled -eq "TRUE"}
Foreach($NIC in $NICs) {
# $DNSServerCount = $Nic.DNSServerSearchOrder.Count
# $DNSServerArray = @($nic.DNSServerSearchOrder[$DNSServerCount - $DNSServerCount,$DNSServerCount - $DNSServerCount + 1,$DNSServerCount - $DNSServerCount + 2])
# write-host $nic.description
# write-host $nic.PSComputerName $DNSServerArray
if($nic.dnsserversearchorder[0] -like "8.8.8.8"){
write-host "matched 8.8.8.8 at position 0"
$NIC.SetDNSServerSearchOrder(@("7.7.7.7", $nic.dnsserversearchorder[1], $nic.dnsserversearchorder[2]))
}
if($nic.dnsserversearchorder[1] -like "8.8.8.8"){
write-host "matched 8.8.8.8 at position 1"
$NIC.SetDNSServerSearchOrder(@($nic.dnsserversearchorder[0],"7.7.7.7", $nic.dnsserversearchorder[2]))
}
if($nic.dnsserversearchorder[2] -like "8.8.8.8"){
write-host "matched 8.8.8.8 at position 2"
$NIC.SetDNSServerSearchOrder(@($nic.dnsserversearchorder[0], $nic.dnsserversearchorder[1],"7.7.7.7"))
}
}
【问题讨论】:
标签: arrays powershell foreach get-wmiobject