Powershell Get-Netadapter 变量传递给 Set-DnsClientServerAddress

Powershell Get-Netadapter 变量传递给 Set-DnsClientServerAddress

今天是个好日子,

尝试编写一个简单的脚本,该脚本将在给定的计算机上找到以太网适配器的友好名称,并将该字符串传递给 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}”的适配器进行更改,但它并不存在。

相关内容