Con PowerShell possiamo gestire molti aspetti della scheda di rete del nostro computer, per vedere l'elenco completo dei moduli a nostra disposizione dobbiamo usare il comando: get-command -module NetTCPIP. Vediamo ora il funzionamento di alcuni di questi moduli utilizzando appunto PowerShell.

Aggiunti nuovi cmdlet, non tutti presenti nel modulo NetTCPIP, sempre per la gestione e raccolta informazioni della scheda di rete.
Nelle immagini presenti nel resto dell'articolo faccio riferimento ai nomi e agli ifIndex del computer dove ho fatto le prove, dovrete ovviamente cambiare i comandi indicati e adattarli ai valori rilevati nel vostro computer. Dove trovate una X dovete sostituire il valore presente nel vostro ifIndex.
Schede rete configurate
Il cmdlet Get-NetAdapter, senza argomenti, permette di vedere le schede di rete presenti nel computer con il loro nome, il MacAddress, lo stato o la velocità.

Se vogliamo i dati di una singola scheda di rete possiamo fare riferimento al name e suo ifIndex, i comandi da usare sono Get-NetAdapter -Name "Ethernet", Get-NetAdapter NomeScheda, oppure Get-NetAdapter -InterfaceIndex X.

Rinominare scheda
Se si vuole cambiare il nome di una scheda di rete per renderlo più significativo, si può usare il comando Rename-NetAdapter -Name VecchioNome -NewName NuovoNome, il nuovo nome è attivo subito non serve riavviare il computer.

Disabilitare scheda di rete
Se avete bisogno di disattivare una scheda di rete potete usare il comando Get-NetAdapter -InterfaceIndex X | Disable-NetAdapter, dove X deve essere sostituito dal valore ifIndex della scheda che volete disabilitare.
Con Get-NetAdapter -InterfaceIndex X | Enable-NetAdapter potete invece riattivare la scheda disabilitata in precedenza.

Driver utilizzati
Il comando Get-NetAdapter | ft Name, DriverName, DriverVersion, DriverInformation, DriverFileName permette di visualizzare il driver in uso dalle schede di rete.

Raggiungibilità indirizzo
Il modulo Test-NetConnection permette di verificare se un sito, o un computer della rete, rispondono e sono raggiungibili. Per capirci meglio, il vecchio ping di una volta.

Indirizzi configurati
Get-NetIpConfiguration permette di visualizzare la configurazione di rete dei vari indirizzi delle schede di rete presenti nel computer.

Se volete i dettagli di una singola scheda non rimane che specificarne il nome nel comando Get-NetIPConfiguration -InterfaceAlias Nomescheda e per avere tutte le informazioni possibili si deve aggiungere l'opzione -Detailed in fondo al comando Get-NetIPConfiguration -InterfaceAlias Nomescheda -Detailed

Informazioni simili, anche queste troppo ricche di dati, si ottengono con il comando Get-NetIPAddress o Get-NetIPAddress -InterfaceAlias "Ethernet".
Cambiare o rimuovere l'indirizzo IP
I cmdlet New-NetIPAddress, Set-NetIPAddress, Remove-NetIPAddress permettono la creazione, modifica o rimozione di IP in caso di configurazioni di rete statiche.
L'IPAddress e il DefaultGateway vanno ovviamente modificati e adattati a quelli della vostra rete rilevati con il cmdlet Get-NetIPConfiguration.
Un esempio di nuovo indirizzo IP statico è questo: New-NetIPAddress -InterfaceAlias "Ethernet" -IPAddress 192.168.1.200 -PrefixLength 24 -DefaultGateway 192.168.1.254

Invece Remove-NetIPAddress va a rimuovere gli indirizzi IP da tutte le schede di rete presenti.

Maggiori dettagli: New-NetIPAddress, Set-NetIPAddress, Remove-NetIPAddress.
Riavviare scheda di rete
I comandi Ipconfig /release e ipconfig /renew servivano a "riavviare" la rete e farsi rilasciare un nuovo indirizzo IP, ora si può fare con Restart-NetAdapter -InterfaceAlias Ethernet

Connessioni attive
Con il comando Get-NetTCPConnection possiamo vedere le connessioni attive in quel momento, vediamo per esempio le porte utilizzate e l'indirizzo IP a cui stiamo puntando.
Per una versione del comando più dettagliata e leggibile si può usare questo comando: get-NetTCPConnection | select local*,remote*,state,@{Name="Process";Expression={(Get-Process -Id $_.OwningProcess).ProcessName}}

Server DNS utilizzati
Per vedere i server DNS configurati si può usare il cmdlet Get-DnsClientServerAddress e più nello specifico con Get-DnsClientServerAddress -InterfaceAlias "Ethernet" si ottengono quelli della scheda ethernet.

Svuotare la cache DNS
Per visualizzare la cache attuale dei DNS locali del computer si utilizza il cmdlet Get-DnsClientCache, mentre con Clear-DnsClientCache la si può ripulire, quello che si faceva (e si può ancora fare) con ipconfig /flushdns.

Per concludere inserisco due cmdlet che non ho ancora capito, o utilizzato, del tutto, ma li voglio segnalare come promemoria per eventuali futuri articoli quando li avrò analizzati completamente.
Le rotte
Il cmdlet Get-NetRoute visualizza la tabella di routing, è la versione PowerShell di route print. Con route print, al lavoro, siamo riusciti a risolvere alcuni problemi di mancato collegamento, attraverso la VPN aziendale, verso determinati siti perché il traffico finiva, per qualche motivo sulla scheda sbagliata. In genere bastava modificare la metrica delle schede di rete per ristabilire il corretto ordine.

Contatori schede di rete
Non conoscevo Get-NetAdapterStatistics, da quello che leggo dovrebbe fornire dei dettagli sugli errori della scheda di rete. Merita di essere approfondito in seguito.
Get-NetAdapterStatistics | Format-Table Name, ReceivedErrors, OutboundErrors
