今天是个好日子,
尝试编写一个简单的脚本,该脚本将在给定的计算机上找到以太网适配器的友好名称,并将该字符串传递给 cmdlet“Set-DnsClientServerAddress”,以便我只能更改以太网接口上的 DNS 服务器设置。
我尝试过这个:
$EthAdapter = Get-NetAdapter -Name Ether* | select Name | Set-DnsClientServerAddress -ServerAddresses 192.168.0.1, 192.168.0.2 -PassThru
并得到错误:
Set-DnsClientServerAddress:无法使用指定的命名参数解析参数集。在 C:\users\zsnow\Desktop\setup.ps1:5 char:59 + ...选择名称 | Set-DnsClientServerAddress -ServerAddresses 192.168.0.1,... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo:InvalidArgument:(@{Name=Ethernet 2}:PSObject)[Set-DnsClientServerAddress],ParameterBindingException + FullyQualifiedErrorId:AmbiguousParameterSet,Set-DnsClientServerAddress
我尝试过这个:
$EthAdapter = Get-NetAdapter -Name Ether* | select Name
Set-DnsClientServerAddress -InterfaceAlias $EthAdapter -ServerAddresses 192.168.0.1, 192.168.0.2 -PassThru
并收到此错误:
Set-DnsClientServerAddress:未找到属性“InterfaceAlias”等于“@{Name=Ethernet 2}”的 MSFT_DNSClientServerAddress 对象。请验证属性的值并重试。在 C:\users\zsnow\Desktop\setup.ps1:6 char:1 + Set-DnsClientServerAddress -InterfaceAlias $EthAdapter -ServerAddress ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo:ObjectNotFound:(@{Name=Ethernet 2}:String) [Set-DnsClientServerAddress],CimJobException + FullyQualifiedErrorId:CmdletizationQuery_NotFound_InterfaceAlias,Set-DnsClientServerAddress
任何援助将不胜感激。
答案1
尝试一下。
$EthAdapters = Get-NetAdapter -Name Ether*
foreach ($EthAdapter in $EthAdapters)
{
Set-DnsClientServerAddress -ServerAddresses 192.168.0.1, 192.168.0.2 -PassThru -InterfaceAlias $EthAdapter.name -Verbose
}
答案2
在您的原始帖子中,您要么需要在第一个命令中使用“select -expandproperty name”而不是“select name”,要么在第二个命令中使用 $ethadapter.name。只能选一个,不能同时使用。按照您的写法,$ethadapter 是一个数组,其中有一列名为“name”,因此您的 dns 命令试图对名为“@{Name=Ethernet 2}”的适配器进行更改,但它并不存在。