我目前可以更改计算机列表中所有NICS的DNS服务器。
$computer = gc C:\computerlist.txt
$NICs = Get-WMIObject Win32_NetworkAdapterConfiguration -computername $computer | where { $_.IPEnabled -eq "TRUE"}
ForEach($NIC in $NICs) {
$DNSServers = "10.1.140.3", "10.1.140.4" # CHANGE THIS TO THE IP YOU WANT TO USE
$NIC.SetDNSServerSearchOrder($DNSServers)
$NIC.SetDynamicDNSRegistration(“TRUE”)
}如何只更改连接到某个域名的NIC的DNS服务器?有些计算机可能有多个NIC,我只想更改连接到"mytestdomain.local“的NICS的DNS设置。
从阅读PowerShell示例来看,ConnectionSpecificSuffix显示的是域名。(-ConnectionSpecificSuffix "mytestdomain.local")
有没有一种方法可以编辑我的脚本,并且只更改包含"mytestdomain.local“后缀的NIC的DNS设置?
这并不是:
$computer = gc C:\computerlist.txt
$NICs = Get-WMIObject Win32_NetworkAdapterConfiguration -computername $computer | where { $_.IPEnabled -eq "TRUE" -and $_.ConnectionSpecificSuffix -eq "mytestdomain.local"}
ForEach($NIC in $NICs) {
$DNSServers = "10.1.140.3", "10.1.140.4" # CHANGE THIS TO THE IP YOU WANT TO USE
$NIC.SetDNSServerSearchOrder($DNSServers)
$NIC.SetDynamicDNSRegistration(“TRUE”)
}发布于 2019-03-18 22:48:33
Win32_NetworkAdapterConfiguration实例没有ConnectionSpecificSuffix成员。然而,它们确实具有DNSDomain和DNSDomainSuffixSearchOrder属性。
所以,我想你要找的是.
$NICs = Get-WMIObject Win32_NetworkAdapterConfiguration -computername $computer `
| where { $_.IPEnabled -eq "TRUE" -and $_.DNSDomain -eq "mytestdomain.local" }或者,如果您想测试目标域是否在任何搜索后缀中,不管顺序如何,那么您可以这样做.
$NICs = Get-WMIObject Win32_NetworkAdapterConfiguration -computername $computer `
| where { $_.IPEnabled -eq "TRUE" -and $_.DNSDomainSuffixSearchOrder -contains "mytestdomain.local" }顺便说一句,这是未经测试的,但如果您的Windows版本足够新,您可以使用模块来简化您的代码,使之类似于.
Get-DnsClient -ConnectionSpecificSuffix 'mytestdomain.local' `
| Set-DnsClientServerAddress -ServerAddresses '10.1.140.3', '10.1.140.4'看起来,使用Set-DnsClient参数调用-RegisterThisConnectionsAddress可能与调用SetDynamicDNSRegistration做同样的事情。
发布于 2019-03-18 23:09:54
有一些预先构建好的脚本可以把你带到你想要去的地方。根据需要用柚木。例如:
Set-DNSServerSearchOrder 有时,有必要在未从DHCP接收其IP的计算机上设置DNS服务器搜索顺序。这个函数将允许您这样做。要验证DNS服务器搜索顺序的当前设置,可以运行以下Get-WmiObject命令并选择 下载: Set-DNSServerSearchOrder.ps1
# Validate DNS Search order
Get-WmiObject -Class Win32_NetworkAdapterConfiguration -ComputerName "Server01" -Filter "IPEnabled=TRUE" | Select PSComputerName,DNSServerSearchOrder
# or using the DNS cmdlets to first collect the info
(DnsClientGlobalSetting).SuffixSearchList -match $env:USERDNSDOMAIN
Get-DnsClientServerAddress -AddressFamily IPv4 | Select *
(Get-DnsClientServerAddress -AddressFamily IPv4).ServerAddresses
# Modify DNS search order
function Set-DNSServerSearchOrder
{
Param
(
[Parameter(ValueFromPipeline=$True,ValueFromPipelineByPropertyName=$True)]
$ComputerName=$Env:ComputerName,
[String[]]$DNSServers = @("10.10.10.1","10.10.10.2")
)
$getWmiObjectSplat = @{
Filter = "IPEnabled=TRUE"
ComputerName = $ComputerName
Class = 'Win32_NetworkAdapterConfiguration'
}
$NICs = Get-WmiObject @getWmiObjectSplat
foreach($NIC in $NICs)
{
$NIC.SetDNSServerSearchOrder($DNSServers) |
out-null
}
}使用CIM查看/修改信息。利用这个..。
$nics = [wmiclass]'win32_Networkadapterconfiguration'
[wmiclass]'Win32_NetworkAdapterConfiguration'
$nics.GetMethodParameters("SetDNSSuffixSearchOrder")
$nics | select -ExpandProperty Properties
DNSDomainSuffixSearchOrder
DNSServerSearchOrder
$cimClass = Get-CimClass win32_Networkadapterconfiguration
$cimClass.CimClassMethods
$cimClass.CimClassMethods["SetDNSSuffixSearchOrder"].Parameters
$cimClass.CimClassMethods["EnableDNS"].Parameters
$cimClass.CimClassMethods["EnableDNS"].Qualifiers
Get-WmiObject -Class win32_Networkadapterconfigurationhttps://stackoverflow.com/questions/55229652
复制相似问题