Alterar o DNS usando o erro do Powershell

1

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)

    
por Stephen Fitz 29.08.2010 / 16:52

2 respostas

1

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

    
por 31.08.2010 / 00:59
0

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'"
    
por 25.07.2012 / 17:04