Tente uma cláusula Where para o endereço MAC: $ NICs = Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Computador $ computer | Onde {$ _. MACAddress -eq $ MAC}
Trabalhei para mim
Eu tenho este script powershell que altera as configurações de DNS. O script abaixo funciona bem, mas eu quero filtrar por endereço MAC para ter certeza de que estou alterando o NIC correto.
$ computer="pc01"
$ NICs = Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Computador $ computer -Filtro "IPEnabled = TRUE"
$ DNSServers="192.168.1.1", "192.168.1.2"
foreach ($ NIC em $ NICs) { $ NICs.SetDNSServerSearchOrder ($ DNSServers)
Então eu mudei o filtro para usar o endereço MAC. Mas eu recebo o seguinte erro.
$ computer="pc01"
$ NICs = Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Computador $ computer -Filter "MACAddress = 00: 1E: 55: 40: 70: E8"
$ DNSServers="192.168.1.1", "192.168.1.2"
foreach ($ NIC em $ NICs) { $ NICs.SetDNSServerSearchOrder ($ DNSServers)
Saída:
Consulta inválida + $ NICs = Get-WmiObject < < < < -Class Win32_NetworkAdapterConfiguration -Computer $ computer -Filter "MACAddress = 00: 1E: 65: 40: 80: E4"
Você não pode chamar um método em uma expressão com valor nulo. + $ NICs.SetDNSServerSearchOrder < < < < ($ DNSServers)
Tente uma cláusula Where para o endereço MAC: $ NICs = Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Computador $ computer | Onde {$ _. MACAddress -eq $ MAC}
Trabalhei para mim
Coloque as marcas '
em volta do que está sendo filtrado. Usar -filter
é preferível ao usar where {}
devido ao modo como os dados são manipulados. Usar o where {}
envolve carregar todos os objetos do Get-WmiObject
e, em seguida, filtrá-los. Usar o -filter
fará a filtragem imediatamente, então você acaba com menos dados sendo trabalhados e menos tempo para executar o script.
$NICs = Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Computer $computer -Filter "MACAddress='00:1E:55:40:70:E8'"