Introdução
Desde o Windows 8 e o Windows Server 2012, o Windows PowerShell facilita a configuração e a verificação dos parâmetros de rede que anteriormente tinham que ser definidos a usar o Painel de Controlo de Rede. Enquanto ainda pode usar o Painel de Controlo de Rede para alterar parâmetros específicos da rede, o PowerShell possibilita automatizar o processo.
O Windows PowerShell é um shell de linha de comando do Windows projetado especialmente para administradores de sistema. O Windows PowerShell inclui um prompt interativo e um ambiente de script que pode ser usado independentemente ou em combinação.
Existem vários CmdLet do PowerShell que podem ser usados para automatizar a gestão de configuração das NICs de WLAN para esses clientes.
O cmdlet (pronuncia-se command-let) é um comando de recurso único que manipula objetos no Windows PowerShell. Pode reconhecer cmdlets pelo formato do nome – um verbo e um nome separados por um traço (-), como Get-Help, Get-Process e Start-Service.
Nesta postagem, mostrarei como aproveitar o PowerShell para alterar as configurações de Agressividade em roaming, Potência de transmissão e NIC de WLAN de banda preferida:
- obtenção e definição de configurações de parâmetro da NIC
- determinação de parâmetros válidos de NIC
- redefinição dos parâmetros para os valores padrão de fábrica
- utilização do sinalizador -NoRestart para alterações em ‘lote’
- determinação da versão do driver da NIC
Note Também existem outros parâmetros específicos (e pode alterar as configurações da NIC com fio) que podem ser ajustados usando esses métodos, portanto, trabalhar com a compreensão dos fundamentos será útil.
Info Dependendo do seu ambiente, pode precisar de uma conta de administrador e usar um prompt elevado do PowerShell para executar essas tarefas. Por exemplo, na minha máquina, os comandos que modificam as configurações são restritos apenas a contas administrativas.
Pre-requisitos
- PowerShell versão 6.0 ou mais recente
- Windows 8 ou mais recente
- Windows Server 2012 ou mais recente
Localizar e Nomear a sua NIC
Se tiver várias NICs, lembrar qual é o que pode ser difícil. A Nomenclatura de Dispositivo Consistente (CDN) foi adicionada no Windows 8 e no Windows Server 2012 e facilita a determinação de qual interface de rede física é qual.
Com o PowerShell, pode fornecer nomes descritivos às suas NICs que podem ser usadas para tarefas de configuração subseqüentes. Isso seria particularmente útil se tiver várias NICs de WLAN. Isso não é abordado nesta postagem.
Usando o Get-NetAdapter
CmdLet, obteremos uma lista de todas as NICs na máquina local atual (abreviada para caber melhor na tela):
PS C:\windows\system32> Get-NetAdapter
Name InterfaceDescription ifIndex Status MacAddress LinkSpeed
---- -------------------- ------- ------ ---------- ---------
Ethernet 3 ... Cisco AnyConnect Secu... 20 Disabled 00-05-9A-XX-XX-00 298.5 Mbps
Wi-Fi ... Intel(R) Dual Band Wi... 8 Up 28-C6-3F-XX-XX-AF 300 Mbps
Ethernet 2 ... Intel(R) Ethernet Con... 17 Disconnected A4-4C-C8-XX-XX-CA 0 bps
Ethernet 4 ... Npcap Loopback Adapte... 2 Up 02-00-4C-XX-XX-50 1.2 Gbps
Npcap Loopb... Npcap Loopback Adapte... 30 Up 02-00-4C-XX-XX-50 1.2 Gbps
Ethernet ... Realtek USB GbE Famil... 6 Disconnected A4-4C-C8-XX-XX-E4 0 bps
Dependendo de quantas NICs usar, poderá ignorar o seguinte e o recurso CDN mencionado acima. No entanto, se tiver várias NICs de WLAN, provavelmente verá algo assim:
PS C:\windows\system32> Get-NetAdapter
Name InterfaceDescription ifIndex Status MacAddress LinkSpeed
---- -------------------- ------- ------ ---------- ---------
Wi-Fi 14 802.11ac Wireless LAN C... 107 Disconnected CC-40-D0-XX-XX-85 0 bps
Ethernet 3 Cisco AnyConnect Secure... 20 Disabled 00-05-9A-XX-XX-00 298.5 Mbps
Wi-Fi 6 802.11ac Wireless LAN C... 25 Disconnected CC-40-D0-XX-XX-DD 0 bps
Wi-Fi Intel(R) Dual Band Wire... 8 Up 28-C6-3F-XX-XX-AF 300 Mbps
Ethernet 2 Intel(R) Ethernet Conne... 17 Disconnected A4-4C-C8-XX-XX-CA 0 bps
Wi-Fi 10 Realtek 8812AU Wireless... 10 Not Present 40-A5-EF-XX-XX-BF 0 bps
Wi-Fi 9 Realtek 8812AU Wireless... 18 Not Present 40-A5-EF-XX-XX-F2 0 bps
Wi-Fi 8 Realtek 8812AU Wireless... 24 Disconnected 40-A5-EF-XX-XX-BF 0 bps
Wi-Fi 7 Realtek 8812AU Wireless... 29 40-A5-EF-XX-XX-E7 0 bps
Ethernet 4 Npcap Loopback Adapter ... 2 Up 02-00-4C-XX-XX-50 1.2 Gbps
Npcap Loo... Npcap Loopback Adapter ... 30 Up 02-00-4C-XX-XX-50 1.2 Gbps
Wi-Fi 2 Realtek 8812AU Wireless... 15 Disconnected 40-A5-EF-XX-XX-F2 0 bps
Ethernet Realtek USB GbE Family ... 6 Disconnected A4-4C-C8-XX-XX-E4 0 bps
Nesse caso, pode fazer sentido renomear as NICs para algo mais fácil de entender. Então, vamos mostrar como renomear a NIC para algo mais claro.
PS C:\windows\system32> Rename-NetAdapter -Name "Wi-Fi" 'Internal WLAN NIC'
Execute o Get-NetAdapter
CmdLet novamente para ver o nome atualizado.
PS C:\windows\system32> Get-NetAdapter
Name InterfaceDescription ifIndex Status MacAddress LinkSpeed
---- -------------------- ------- ------ ---------- ---------
...
Internal WLAN NIC Intel(R) Dual Band Wireless-AC 8265 8 Up 28-C6-3F-XX-XX-AF 300 Mbps
...
Visualizar e configurar parâmetros avançados de NIC
Como exemplo prático, examinarei primeiro alguns parâmetros da NIC e depois mostrarei como alterá-los com o PowerShell. Para examinar os parâmetros da NIC da WLAN para minha Wi-Fi
NIC identificada anteriormente, podemos usar o seguinte. E para demonstrar caracteres curinga, vou abreviar a NIC denominada Wi-Fi
como W*i
. O PowerShell expandirá o curinga.
um curinga é um símbolo usado para substituir ou representar um ou mais caracteres.
PS C:\windows\system32> Get-NetAdapterAdvancedProperty W*i
Name DisplayName DisplayValue RegistryKeyword RegistryValue
---- ----------- ------------ --------------- -------------
Wi-Fi Sleep on WoWLAN Disconnect Disabled *DeviceSleep... {0}
Wi-Fi Packet Coalescing Enabled *PacketCoale... {1}
Wi-Fi ARP offload for WoWLAN Enabled *PMARPOffload {1}
Wi-Fi NS offload for WoWLAN Enabled *PMNSOffload {1}
Wi-Fi GTK rekeying for WoWLAN Enabled *PMWiFiRekey... {1}
Wi-Fi Wake on Magic Packet Enabled *WakeOnMagic... {1}
Wi-Fi Wake on Pattern Match Enabled *WakeOnPattern {1}
Wi-Fi Bluetooth(R) AMP Disabled BT3HSMode {0}
Wi-Fi 802.11n Channel Width for 2... Auto ChannelWidth24 {1}
Wi-Fi 802.11n Channel Width for 5... Auto ChannelWidth52 {1}
Wi-Fi Mixed Mode Protection RTS/CTS Enabled CtsToItself {0}
Wi-Fi Fat Channel Intolerant Disabled FatChannelIn... {0}
Wi-Fi Transmit Power 5. Highest IbssTxPower {100}
Wi-Fi HT Mode VHT Mode IEEE11nMode {2}
Wi-Fi MIMO Power Save Mode Auto SMPS MIMOPowerSav... {0}
Wi-Fi Roaming Aggressiveness 3. Medium RoamAggressi... {2}
Wi-Fi Preferred Band 1. No Preference RoamingPrefe... {0}
Wi-Fi Throughput Booster Disabled ThroughputBo... {0}
Wi-Fi U-APSD support Disabled uAPSDSupport {0}
Wi-Fi Wireless Mode 6. 802.11a/b/g WirelessMode {34}
Considere onde tem um SSID (Service Set Identifier) específico implantado em rádios de 2,4 GHz e 5 GHz (11 b / g / n && 11 a / n / ac). Haverá um BSSID específico para cada rádio para o mesmo SSID. Vamos mudar a banda preferida para 5 GHz. Alterar a banda preferida para 5 GHz fará com que o driver do cliente prefira conectar-se a um BSSID de 5 GHz em vez do BSSID de 2,4 GHz. Por padrão, o driver WLAN do cliente provavelmente preferirá conectar-se ao BSSID de 2,4 GHz. Isso pode não ser o ideal.
Para definir a NIC para preferir 5 GHz:
Set-NetAdapterAdvancedProperty W*i -DisplayName "Preferred Band" -DisplayValue "3. Prefer 5.2GHz band"
Para verificar se foi alterado, pode usar este comando:
Get-NetAdapterAdvancedProperty W*i -DisplayName "Preferred Band"
Esta seção ilustra, usando as opções -DisplayName
e -DisplayValue
, podemos identificar os nomes e as propriedades avançadas de uma NIC que queremos definir (alterar) usando o PowerShell.
Determinar valores de parâmetro válidos
Diferentes tipos de NICs (LAN x WLAN) terão diferentes configurações de parâmetros. Pode usar o PowerShell para determinar quais valores são válidos para um parâmetro específico em uma NIC específica. Esses valores são fornecidos pelo driver da NIC e refletirão os recursos específicos da NIC.
Vamos examinar todos os parâmetros e seus possíveis valores para minha Wi-Fi
NIC e formatar a exibição como uma tabela usando uma tabela de formato ( ft
).
PS C:\windows\system32> Get-NetAdapterAdvancedProperty W*i | ft DisplayName, DisplayValue, ValidDisplayValues
DisplayName DisplayValue ValidDisplayValues
----------- ------------ ------------------
Sleep on WoWLAN Disconnect Disabled {Disabled, Enabled}
Packet Coalescing Enabled {Disabled, Enabled}
ARP offload for WoWLAN Enabled {Disabled, Enabled}
NS offload for WoWLAN Enabled {Disabled, Enabled}
GTK rekeying for WoWLAN Enabled {Disabled, Enabled}
Wake on Magic Packet Enabled {Disabled, Enabled}
Wake on Pattern Match Enabled {Disabled, Enabled}
Bluetooth(R) AMP Disabled {Disabled, Enabled}
802.11n Channel Width for 2.4GHz Auto {20 MHz Only, Auto}
802.11n Channel Width for 5.2GHz Auto {20 MHz Only, Auto}
Mixed Mode Protection RTS/CTS Enabled {RTS/CTS Enabled, CTS-to-self Enabled}
Fat Channel Intolerant Disabled {Disabled, Enabled}
Transmit Power 5. Highest {1. Lowest, 2. Medium-low, 3. Medium, 4. Medium-High...}
HT Mode VHT Mode {Disabled, HT Mode, VHT Mode}
MIMO Power Save Mode Auto SMPS {Auto SMPS, Static SMPS, Dynamic SMPS, No SMPS}
Roaming Aggressiveness 3. Medium {1. Lowest, 2. Medium-low, 3. Medium, 4. Medium-High...}
Preferred Band 3. Prefer 5.2GHz band {1. No Preference, 2. Prefer 2.4GHz band, 3. Prefer 5.2GHz band}
Throughput Booster Disabled {Disabled, Enabled}
U-APSD support Disabled {Disabled, Enabled}
Wireless Mode 6. 802.11a/b/g {1. 802.11a, 2. 802.11b, 3. 802.11g, 4. 802.11b/g...}
Isso pode ser mais informações do que procuramos, então vamos filtrar a saída e ver os possíveis valores para Roaming Aggressiveness
:
PS C:\windows\system32> Get-NetAdapterAdvancedProperty W*i -DisplayName Roam* | ft DisplayName, DisplayValue, ValidDisplayValues
DisplayName DisplayValue ValidDisplayValues
----------- ------------ ------------------
Roaming Aggressiveness 3. Medium {1. Lowest, 2. Medium-low, 3. Medium, 4. Medium-High...}
Aqui vemos os únicos valores válidos para Roaming Aggressiveness
:
{1. Lowest, 2. Medium-low, 3. Medium, 4. Medium-High...}
Isso nos fornece uma lista de valores válidos que podemos definir Roaming Aggressiveness
como. Para alterar o valor 4. Medium-High
, podemos usar este comando:
Set-NetAdapterAdvancedProperty W*i -DisplayName "Roaming Aggressiveness" -DisplayValue "4. Medium-High"
Redefinir um parâmetro para o valor padrão
Se deseja redefinir um parâmetro para o valor padrão, pode usar o Reset-NetAdapterAdvancedProperty
CmdLet. Veja como Transmit Power
voltar ao padrão de fábrica:
Reset-NetAdapterAdvancedProperty W*i -DisplayName "Transmit Power"
Se deseja redefinir todos os parâmetros para seus valores padrão, use um curinga:
Reset-NetAdapterAdvancedProperty W*i -DisplayName *
Comandos em lotes
Quando altera um parâmetro da NIC, o driver da NIC precisa ser reiniciado para que a alteração seja aplicada. Se normalmente usa o painel de controle, pode ter notado que, ao aplicar as alterações, a interface de rede afetada fica inativa (quica) brevemente enquanto o driver é reiniciado.
Cada vez que altera um parâmetro com o PowerShell, a NIC é devolvida enquanto o driver é reiniciado. No entanto, o PowerShell possui um recurso que permitirá agrupar várias alterações em uma única operação. Isso reduzirá o número de vezes que a NIC será devolvida durante a configuração e acelerará a configuração ao alterar vários parâmetros ao mesmo tempo.
Isso é especialmente perceptível se estiver fazendo alterações através de uma sessão de terminal remoto e a NIC remota usada para as redefinições de sessão. A sessão será interrompida se o dispositivo final estiver usando a mesma NIC para conectividade na qual está fazendo alterações.
Se estiver fazendo várias alterações, o PowerShell permitirá que faça várias alterações em lote e aplique todas elas com uma única reinicialização de driver usando o -NoRestart
sinalizador.
Por exemplo, suponha que possua os três parâmetros de WLAN a seguir que desejo alterar. Posso anexar -NoRestart
a todos os seguintes comandos, exceto o último.
Set-NetAdapterAdvancedProperty W*i -DisplayName "Preferred Band" -DisplayValue "3. Prefer 5.2GHz band" -NoRestart
Set-NetAdapterAdvancedProperty W*i -DisplayName "Roaming Aggressiveness" -DisplayValue "3. Medium" -NoRestart
Set-NetAdapterAdvancedProperty W*i -DisplayName "Transmit Power" -DisplayValue "4. Medium-High"
A NIC será reiniciada quando o último CmdLet for executado e aplicará todas as configurações anteriores ao mesmo tempo. A NIC retornará apenas uma vez.
Se houver problemas com a NIC, poderá reiniciar explicitamente a NIC invocando: Restart-NetAdapter (NIC Name)
ou neste exemplo Restart-NetAdapter Wi-Fi
.
note Note também pode estar familiarizado com os CmdLet
Enable-NetAdapter
eDisable-NetAdapter
os que permitem ativar e desativar sua rede, respectivamente. No entanto, deve considerar o usoRestart-NetAdapter
descrito acima como uma opção mais segura com conexões remotas. Isso ocorre porqueDisable-NetAdapter
é assíncrono e retornará imediatamente para o script antes que o adaptador seja totalmente desativado. Quando o script é chamadoEnable-NetAdapter
, ele falha porque o adaptador ainda não está totalmente desativado.Restart-NetAdapter
os combina em uma única operação. Mais aqui .
Determinar o driver da NIC
Determinar a versão do driver da NIC é outra tarefa comum. É fácil fazer isso com o PowerShell usando as Get-NetAdapter
propriedades. Neste exemplo, estou usando um curinga para exibir, em formato de lista, todas as informações do driver:
PS C:\windows\system32> Get-NetAdapter W*i | fl Dri*
DriverInformation : Driver Date 2016-09-07 Version 19.20.0.6 NDIS 6.60
DriverFileName : Netwtw04.sys
DriverVersion : 19.20.0.6
DriverDate : 2016-09-07
DriverDateData : 131176800000000000
DriverDescription : Intel(R) Dual Band Wireless-AC 8265
DriverMajorNdisVersion : 6
DriverMinorNdisVersion : 60
DriverName : \SystemRoot\System32\drivers\Netwtw04.sys
DriverProvider : Intel
DriverVersionString : 19.20.0.6
Usar Enter-PSSession para alterar os parâmetros de WLAN NIC de uma máquina remota
O CmdLet Enter-PSSession iniciará uma sessão interativa do PowerShell com um computador remoto via autenticação Kerberos ou NTLM. Observe que isso requer pelo menos a versão 6 do PowerShell.
Uma vez conectado, pode emitir comandos como se estivesse em sua máquina local. No entanto, é importante observar que, quando executa um comando que reinicia o driver da NIC, isso causa uma interrupção na conectividade com o dispositivo remoto e o dispositivo remoto (se estiver usando a NIC para conectividade). Isso geralmente é apenas alguns momentos, mas pode levar até um minuto ou dois. Isso ocorre porque a NIC é devolvida enquanto o driver é reiniciado.
Aqui está um exemplo de conexão com uma máquina remota usando o nome do computador:
PS C:\windows\system32> Enter-PSSession -ComputerName CORPPC01
[CORPPC01]: PS> Set-NetAdapterAdvancedProperty Wi-Fi -DisplayName Roaming* -DisplayValue '3. Medium' -NoRestart
[CORPPC01]: PS> Set-NetAdapterAdvancedProperty Wi-Fi -DisplayName Preferred* -DisplayValue "1. No Preference"
WARNING: The network connection to CORPPC01 has been interrupted. Attempting to reconnect for up to 4 minutes...
WARNING: Attempting to reconnect to CORPPC01 ...
WARNING: The network connection to CORPPC01 has been restored.
[CORPPC01]: PS> Get-NetAdapterAdvancedProperty Wi-Fi -DisplayName *Band* | ft DisplayName, DisplayValue, ValidDisplayValues
DisplayName DisplayValue ValidDisplayValues
----------- ------------ ------------------
Preferred Band 1. No Preference {1. No Preference, 2. Prefer 2.4GHz band, 3. Prefer 5.2GHz band}
[CORPPC01]: PS> Get-NetAdapterAdvancedProperty Wi-Fi -DisplayName *Roam* | ft DisplayName, DisplayValue, ValidDisplayValues
DisplayName DisplayValue ValidDisplayValues
----------- ------------ ------------------
Roaming Aggressiveness 3. Medium {1. Lowest, 2. Medium-low, 3. Medium, 4. Medium-High...}
Aqui está um exemplo de conexão com uma máquina remota via IP:
PS> Set-Item WSMan:\localhost\Client\TrustedHosts -Value "192.168.1.83"
PS> $cred = Get-Credential
PS> Enter-PSSession -ComputerName 192.168.1.83 -Credential $cred
[192.168.1.83]: PS>
note Observação Como a autenticação Kerberos não suporta endereços IP, a autenticação NTLM é usada por padrão quando especifica um endereço IP. Isso significa que deve usar o transporte HTTPS ou adicionar o endereço IP da máquina remota à lista TrustedHosts na máquina local e também passar um objeto PSCredential para o parâmetro Credential em todos os comandos remotos. Crie um objeto PSCredential com o
Get-Credential
CmdLet. Para solução de problemas, consulte isso .
Apêndice: Comandos
Obter Transmit Power
exemplo de saída de valor:
PS C:\windows\system32> Get-NetAdapterAdvancedProperty Wi-Fi -DisplayName *Transmit* | ft DisplayName, DisplayValue, ValidDisplayValues
DisplayName DisplayValue ValidDisplayValues
----------- ------------ ------------------
Transmit Power 5. Highest {1. Lowest, 2. Medium-low, 3. Medium, 4. Medium-High...}
Obter:
Get-NetAdapter
Get-NetAdapterAdvancedProperty Wi-Fi
Get-NetAdapterAdvancedProperty Wi-Fi | ft DisplayName, DisplayValue, ValidDisplayValues
Get-NetAdapterAdvancedProperty Wi-Fi -DisplayName *Band* | ft DisplayName, DisplayValue, ValidDisplayValues
Get-NetAdapterAdvancedProperty Wi-Fi -DisplayName *Roam* | ft DisplayName, DisplayValue, ValidDisplayValues
Conjunto:
Set-NetAdapterAdvancedProperty W*i -DisplayName "Preferred Band" -DisplayValue "3. Prefer 5.2GHz band"
Set-NetAdapterAdvancedProperty W*i -DisplayName "Roaming Aggressiveness" -DisplayValue "3. Medium"
Exemplo de lote:
Set-NetAdapterAdvancedProperty Wi-Fi -DisplayName Roaming* -DisplayValue '3. Medium' -NoRestart
Set-NetAdapterAdvancedProperty Wi-Fi -DisplayName Transmit* -DisplayValue '4. Medium-High' -NoRestart
Set-NetAdapterAdvancedProperty Wi-Fi -DisplayName Preferred* -DisplayValue "3. Prefer 5.2GHz band"
Nota: lembre-se de que a NIC salta devido à redefinição do driver após o último comando.
Outros:
Reset-NetAdapterAdvancedProperty W*i -DisplayName "Transmit Power"
Reset-NetAdapterAdvancedProperty W*i -DisplayName *
Enter-PSSession
Enter-PSSession -ComputerName FOOBARPC
Links:
Fonte: wizardfi.com, Blog TechNet da Microsoft