Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 用于常规命名约定的筛选器NIC_Powershell_Dns_Windows Server 2008 R2 - Fatal编程技术网

Powershell 用于常规命名约定的筛选器NIC

Powershell 用于常规命名约定的筛选器NIC,powershell,dns,windows-server-2008-r2,Powershell,Dns,Windows Server 2008 R2,我试图构建一个脚本来远程更改我们在远程服务器上使用的DNS服务器。但是我被卡住了。我想出了以下方法来获得列出的NIC别名: $server = "servername" $interfaces = Get-WmiObject Win32_NetworkAdapter -ComputerName $server $interfaces | ForEach{ $aliasname = $_ | ForEach-Object { $_.NetConnectionID } $name =

我试图构建一个脚本来远程更改我们在远程服务器上使用的DNS服务器。但是我被卡住了。我想出了以下方法来获得列出的NIC别名:

$server = "servername"
$interfaces = Get-WmiObject Win32_NetworkAdapter -ComputerName $server
$interfaces | ForEach{
    $aliasname = $_ | ForEach-Object { $_.NetConnectionID }
    $name = $_.GetRelated("Win32_PnPEntity") | Select-Object -ExpandProperty Name
    foreach($name in $aliasname){
        Get-WmiObject Win32_NetworkAdapterConfiguration -computername $server | select $name, Description, IPAddress, DNSServerSearchOrder |  Format-Table -AutoSize
    }
} 
但问题是,我只想更改一个NIC的DNS,不同服务器上的NIC可能具有相似的名称,但并不总是完全相同。它也可能不总是相同的数字。我想用一些东西来排除错误的NIC,所以我尝试了以下方法

    foreach($name in $aliasname | Where-Object -Property $name -contains "WhatIAmLookingFor"){
        Get-WmiObject Win32_NetworkAdapterConfiguration -computername $server | select $name, Description, IPAddress, DNSServerSearchOrder |  Format-Table -AutoSize
    }
}
但它仍然返回两个NIC。我已经尝试了很多方法来排除我不想更改的NIC,只包括我想要的NIC,但我通常要么什么也得不到,要么两个NIC都得到。我也知道大多数人会说去尝试

Get-WmiObject Win32_NetworkAdapterConfiguration-Filter 'IpEnabled=True' -computername $server


但问题是,除了遵循通用命名约定之外,没有一个服务器NIC是标准的。因此,选择IpEnabled=True可能会导致我更改用于连接到非公司所有网络的NIC。与仅选择第一个NIC相同。非常感谢您在这个问题上提供的任何帮助。

在第一个代码块中,您使用
$name=$\u.GetRelated(…)
定义变量
$name
。但是,您可以使用与foreach循环中最左边的变量相同的变量
foreach($aliasname中的name)
,立即销毁该变量。使用不同的变量名。因为这是服务器2008R2,所以您有什么Powershell版本?他们在v2和v5之间改变了很多,如果你知道dms服务器ip地址,你需要改变它,你可以用这个DNS ip获得NIC并替换它。这是v5。谢谢你的建议,我改变了变量。它的工作方式和我的一样。它似乎没有覆盖变量,但我可以看到它看起来是怎样的。Victor我确实知道NIC的DNS,我需要更改如何过滤它?在第一个代码块中,您使用
$name=$\uuu.GetRelated(…)
定义变量
$name
。但是,您可以使用与foreach循环中最左边的变量相同的变量
foreach($aliasname中的name)
,立即销毁该变量。使用不同的变量名。因为这是服务器2008R2,所以您有什么Powershell版本?他们在v2和v5之间改变了很多,如果你知道dms服务器ip地址,你需要改变它,你可以用这个DNS ip获得NIC并替换它。这是v5。谢谢你的建议,我改变了变量。它的工作方式和我的一样。它似乎没有覆盖变量,但我可以看到它看起来是如何的。Victor我确实知道NIC的DNS,我需要更改,我将如何过滤它?
$server = "servername"
$excludedNic= "nic to exclude"
$interfaces = Get-WmiObject Win32_NetworkAdapter -ComputerName $server -Filter "NetConnectionID!='$($excludedNic)'"
foreach($interface in $interfaces){
    if($null -ne $interface.NetConnectionID){
        Get-WmiObject Win32_NetworkAdapterConfiguration -computername $server -Filter "Description='$($interface.name)' " |Select-Object @{Name='NicName'; Expression={$interface.NetConnectionID}},  Description, IPAddress, DNSServerSearchOrder
    }
}

$server = "servername"
$excludedNic= "nic to exclude"
$interfaces = Get-WmiObject Win32_NetworkAdapter -ComputerName $server -Filter "NetConnectionID!='$($excludedNic)'"
foreach($interface in $interfaces){
    if($null -ne $interface.NetConnectionID){
        Get-WmiObject Win32_NetworkAdapterConfiguration -computername $server -Filter "Description='$($interface.name)' " |Select-Object @{Name='NicName'; Expression={$interface.NetConnectionID}},  Description, IPAddress, DNSServerSearchOrder
    }
}