Eu consegui reescrever o script usando apenas o WMIC para consultar as informações das interfaces de rede apropriadas.
O script funciona consultando o WMI para os adaptadores de rede cujo status ipenabled está definido como true. Isso elimina todas as interfaces que não são adaptadores Ethernet reais. Em seguida, armazenamos a primeira linha da saída (número de índice mais baixo para um adaptador Ethernet real) e passamos para uma segunda consulta WMI. Que por sua vez utiliza o número do índice para obter o netconnectionid que é o nome configurado real do adaptador "IE Local Area Connection 1". Podemos então passar o netconnectionid para um comando netsh para alterar a configuração desse adaptador específico. Então passamos o controle de volta para o primeiro loop FOR via exit / b para puxar para cima o nosso próximo número de índice e repetir o processo novamente.
Isso pode ser expandido para mais de duas NICs adicionando mais comparações IF / ELSE após o comando netsh. O valor NEWNICNAME no início será o nome aplicado ao menor índice. A linha SET NEWNICNAME após a comparação IF / ELSE será aplicada ao próximo menor índice reportado. Código super amador da seguinte forma:
set NEWNICNAME=Internet
FOR /F "skip=1 tokens=1 delims=" %%a in (
'wmic path Win32_NetworkAdapterConfiguration where 'ipenabled^="true"' get index'
) do (
set index=%%a && Call :sub1
)
:sub1
FOR /F "skip=1 tokens=1 delims=" %%b in (
'wmic path Win32_NetworkAdapter where index^=%index% get NetConnectionId'
) do (
set OGNICNAME=%%b
)
netsh interface set interface name=%OGNICNAME% newname=%NEWNICNAME%
if %NEWNICNAME%==InternalLAN (
GOTO EOL
) else (
set NEWNICNAME=InternalLAN
)
exit /b
Existe, no entanto, um grande problema com isso no XP. A documentação sobre como renomear adaptadores de rede com netsh especifica explicitamente o uso de aspas duplas em torno dos valores name e newname. No entanto, fazer isso em um arquivo em lotes que não é executado / chamado de um prompt CMD elevado para o Windows XP quebra o comando e retorna "Uma interface com esse nome não está registrada no roteador". De alguma forma, exatamente o mesmo comando sem as aspas duplas mudará o nome do adaptador sem problemas. O problema então se torna se o NetConnectionId retornar com espaços, seu script falhará. Esse comportamento é realmente aceitável na minha instância, já que posso implantar uma imagem mestra na minha frota com a LAN1 / LAN2 renomeada da NIC, em vez de um nome com espaços. Em seguida, realizo a pós-implantação de reconfiguração baseada em índice no próprio metal.