Chi si occupa in modo più o meno intenso della con­fi­gu­ra­zio­ne di reti con Windows, si imbatterà prima o poi in Network Shell (Netsh). Dietro questo termine si nasconde un’in­ter­fac­cia tra utente e sistema operativo che permette di am­mi­ni­stra­re e con­fi­gu­ra­re reti locali o distanti tra loro.

Lo spettro di pos­si­bi­li­tà va dalle im­po­sta­zio­ni per il firewall di Windows al­l'am­mi­ni­stra­zio­ne di LAN e WLAN fino alla con­fi­gu­ra­zio­ne IP e di server. Inoltre, è possibile pro­teg­ge­re da attacchi esterni le in­fra­strut­tu­re collegate da una rete. Questa utilità della riga di comando permette di dia­gno­sti­ca­re problemi e svolgere ri­pa­ra­zio­ni nella rete. Un grande vantaggio di Netsh: Lo svol­gi­men­to dei compiti di gestione relativi alla rete è un processo par­ti­co­lar­men­te rapido e pratico e può essere au­to­ma­tiz­za­to con l’uso di script.

Eseguire i comandi di Netsh: avviare il prompt dei comandi

Per poter uti­liz­za­re Netsh, è ne­ces­sa­rio spostarsi al prompt dei comandi che si apre at­tra­ver­so il menu “Esegui” (run) come indicato di seguito:

  1. Premere la com­bi­na­zio­ne di tasti [Windows] + [R].
  2. Digitare “cmd” (1) nel box di ricerca.
  3. Premere il pulsante “OK” (2).

Infine si aprirà la finestra del prompt dei comandi. Il programma si avvia digitando “netsh” e con­fer­man­do con il tasto [Invio]:

In caso di mancata ese­cu­zio­ne dei comandi e degli script di Netsh o se avete in programma in­ter­ven­ti più profondi sulla con­fi­gu­ra­zio­ne della rete, è ne­ces­sa­rio avviare Network Shell con diritti da am­mi­ni­stra­to­re. Con Windows 10 bisogna com­ple­ta­re i seguenti passaggi:

  1. Cliccare con il tasto destro del mouse sull’icona di Windows nella barra delle ap­pli­ca­zio­ni oppure premere la com­bi­na­zio­ne di tasti [Windows] + [X].
  2. Nel menu con­te­stua­le se­le­zio­na­re la voce “Windows Po­wer­Shell (am­mi­ni­stra­to­re)”:

Una com­po­nen­te di Netsh è il file ese­gui­bi­le netsh.exe, che si trova nella cartella di sistema di Windows (%windir%\system32). Con l’apertura diretta, ac­cor­ce­re­te i tempi impiegati per l’in­se­ri­men­to dei comandi di Netsh. Potete digitare il path C:\Windows\System32\netsh.exe nella barra degli indirizzi di Windows Explorer e premere su [Invio]. Nel box di ricerca che si apre potete inserire i comandi di Netsh.

Si può ac­ce­le­ra­re il processo creando un col­le­ga­men­to. Dopo averlo impostato, in futuro vi basterà un solo clic del mouse per digitare il comando, ef­fet­tuan­do le seguenti azioni:

  1. cliccate con il tasto destro del mouse sul desktop di Windows. Ora fate clic sulla voce “Nuovo” (1) e poi su “Col­le­ga­men­to” (2) nel menu con­te­stua­le che si aprirà:
  1. Nella procedura guidata per il col­le­ga­men­to potete inserire il path C:\Windows\System32\netsh.exe (1) e cliccare su “Avanti”.
  1. Si consiglia di dare un nome ap­pro­pria­to al col­le­ga­men­to (1) che troverete sul vostro desktop dopo aver cliccato su “Fine” (2).

Come è strut­tu­ra­to Netsh

Netsh è un’utilità di scripting che mette a di­spo­si­zio­ne numerose sintassi per i comandi. Chi vuole svolgere compiti precisi in modo mirato, deve prendere di­me­sti­chez­za con la struttura specifica della Network Shell. La struttura di questa utility si basa su contesti che rap­pre­sen­ta­no diversi livelli di gestione. Ciascun contesto ricopre una fun­zio­na­li­tà precisa della rete (per esempio con­fi­gu­ra­zio­ne IP, LAN o del firewall). Questa utility utilizza i file della Dynamic-Link Library (DDL) per in­te­ra­gi­re in modo con­te­stua­le con le com­po­nen­ti di Windows. Netsch si serve del Dhcpmon.dll per mo­di­fi­ca­re e gestire le im­po­sta­zio­ni del DHCP.

Per uti­liz­za­re un contesto, bisogna com­mu­tar­lo nel Windows Po­wer­Shell. Nel contesto di “gestione di LAN”, ad esempio, si arriva come segue:

  1. Digitare “netsh” nel prompt dei comandi e con­fer­ma­re con [Invio].
  2. Digitare “lan” e con­fer­ma­re con [Invio].
  3. Il prompt dei comandi mostrerà la com­mu­ta­zio­ne di contesto: netsh lan>

Una volta ef­fet­tua­ta la com­mu­ta­zio­ne nel contesto “LAN”, avrete a di­spo­si­zio­ne comandi del contesto e contesti ag­giun­ti­vi. Tra i comandi del contesto troviamo ad esempio “set” (configura im­po­sta­zio­ni sulle in­ter­fac­ce). Un esempio di comando base di Netsch su contesti ag­giun­ti­vi è il comando help “/?”, che mostra un elenco di sot­to­con­te­sti e comandi di­spo­ni­bi­li in ogni contesto. Dopo il suo invio, nel contesto “LAN” verrà mostrato il seguente elenco con tutti i comandi del contesto e dei contesti ag­giun­ti­vi:

Passando ad esempio al contesto di Firewall, la referenza dei comandi cor­ri­spon­den­te appare come segue:

La struttura con­te­stua­le non rap­pre­sen­ta l’unica par­ti­co­la­ri­tà d’uso. Netsh permette un utilizzo in modalità non in­te­rat­ti­va oppure in modalità in­te­rat­ti­va. Nella modalità non in­te­rat­ti­va alcune im­por­tan­ti im­po­sta­zio­ni di rete vengono esportate in un file di testo e poi reim­por­ta­te per un ri­pri­sti­no suc­ces­si­vo.

Nella modalità in­te­rat­ti­va si possono ad esempio avviare richieste dirette. Digitando “in­ter­fac­cia netsh mostra indirizzo ip”, verrà mostrato l’attuale indirizzo IP del computer. La modalità in­te­rat­ti­va può essere uti­liz­za­ta online oppure offline. Nel primo caso si applicano le ope­ra­zio­ni in modo diretto, nel secondo vengono salvate ed eseguite suc­ces­si­va­men­te. Per attivare le ope­ra­zio­ni salvate è ne­ces­sa­rio inserire al momento de­si­de­ra­to il comando Netsh “commit”.

I comandi di Netsh e i loro contesti

Abbiamo rag­grup­pa­to nella sintesi seguente i comandi Netsh più im­por­tan­ti con una breve spie­ga­zio­ne dei contesti. Se si tratta di un comando generale di un contesto ag­giun­ti­vo, vi saranno altre spie­ga­zio­ni nella colonna destra. I comandi a di­spo­si­zio­ne possono variare pun­tual­men­te in base alla versione del sistema operativo e al ruolo nella rete (client o server). L'e­se­cu­zio­ne di un comando in un computer con un Da­ta­cen­ter di Windows Server 2016 è:

Comando Funzione Gestisce contesto di Netsh
.. Raggiunge un livello di contesto più alto  
? Mostra un elenco di comandi  
abort Ignora qualsiasi modifica ef­fet­tua­ta in modalità offline  
add Aggiunge una voce di con­fi­gu­ra­zio­ne a un elenco di voci  
ad­v­fi­rewall Passa al contesto “netsh ad­v­fi­rewall” Firewall (linee guida e con­fi­gu­ra­zio­ne)
alias Aggiunge un alias  
bran­ch­ca­che Passa al contesto “netsh bran­ch­ca­che” Im­po­sta­zio­ni del bran­ch­ca­che
bridge Passa al contesto “netsh bridge” Bridge di rete
bye Chiude il programma  
commit Apporta le modifiche ef­fet­tua­te in modalità offline  
delete Elimina una voce di con­fi­gu­ra­zio­ne da un elenco di voci  
dh­c­p­client Passa al contesto “netsh dh­c­p­client” Client DHCP
dnsclient Passa al contesto “netsh dnsclient” Im­po­sta­zio­ni del client DNS
dump Vi­sua­liz­za uno script di con­fi­gu­ra­zio­ne  
exec Esegue un file di script  
exit Chiude il programma  
firewall Passa al contesto “netsh firewall” Firewall (linee guida e con­fi­gu­ra­zio­ne)
help Mostra un elenco di comandi  
http Passa al contesto “netsh http” Server web http (http.sys)
interface Passa al contesto “netsh interface” Con­fi­gu­ra­zio­ne IP (v4, v6)
ipsec Passa al contesto “netsh ipsec” Linee guida IPSec
ip­sec­do­spro­tec­tion Passa al contesto “netsh ip­sec­do­spro­tec­tion” Pro­te­zio­ne da attacchi del tipo IPSEC Denial of Service
lan Passa al contesto “netsh lan” In­ter­fac­ce di rete collegate
namespace Passa al contesto “netsh namespace” Linee guida del client DNS
netio Passa al contesto “netsh netio” Filtri di binding
offline Imposta offline come modalità corrente  
online Imposta la modalità attuale su online  
popd Estrae un contesto dallo stack  
pushd Inserisce un contesto corrente sullo stack  
quit Chiude il programma  
ras Passa al contesto “netsh ras” Server di accesso remoto
rpc Passa al contesto “netsh rpc” Con­fi­gu­ra­zio­ne del servizio RPC
set Im­po­sta­zio­ni di con­fi­gu­ra­zio­ne correnti  
show Vi­sua­liz­za in­for­ma­zio­ni  
trace Passa al contesto “netsh trace”  
unalias Elimina un alias  
wfp Passa al contesto “netsh wfp” Piat­ta­for­ma di fil­trag­gio di Windows
winhttp Passa al contesto “netsh winhttp” Im­po­sta­zio­ni proxy e tracking del client http di Windows
winsock Passa al contesto “netsh winsock” Con­fi­gu­ra­zio­ne di Winsock
wlan Passa al contesto “netsh wlan” In­ter­fac­cia rete senza fili

Parametri di sintassi di Netsh: cosa si­gni­fi­ca­no?

Per avviare azioni e compiti concreti, i comandi netsh possono essere uti­liz­za­ti anche con parametri fa­col­ta­ti­vi. Lo schema di sintassi per la com­bi­na­zio­ne di comandi e parametri Netsh è:

netsh [-a AliasFile] [-c Context] [-r RemoteComputer] [-u [DomainName\]UserName] [-p Password | *] [NetshCommand | -f ScriptFile]

I seguenti parametri sono tutti fa­col­ta­ti­vi, e possono quindi essere uti­liz­za­ti e integrati in base alle esigenze:

-a Specifica che dopo l'e­se­cu­zio­ne di AliasFile verrà vi­sua­liz­za­to nuo­va­men­te il prompt netsh.
AliasFile (ita: FileAlias) Specifica il nome del file di testo che contiene uno o più comandi netsh.
-c Specifica che Netsh immette il contesto netsh spe­ci­fi­ca­to.
Context (ita: Contesto) Carattere per il contesto netsh da immettere (per es. WLAN)
-r Specifica che il comando deve essere eseguito in un computer remoto (Re­mo­te­com­pu­ter) dove bisogna eseguire il registro di sistema remoto.
Re­mo­te­com­pu­ter (ita.: Computer remoto) Nome del computer remoto che verrà con­fi­gu­ra­to
-u Specifica di eseguire il comando netsh con un account utente.
Do­main­Na­me\ (ita: No­me­Di­Do­mi­nio\) Specifica il dominio in cui si trova l'account utente (il valore pre­de­fi­ni­to è il dominio locale se non si specifica il Do­main­Na­me)
UserName (ita: Nome utente) Nome del­l'ac­count utente
-p Specifica che verrà fornita una password per l'account utente.
Password Specifica la password per l'account utente indicato con -u UserName
Ne­tsh­Com­mand (ita: Co­man­do­Ne­tsh) Specifica il comando netsh da eseguire
-f Chiude netsh dopo l'e­se­cu­zio­ne dello script designato con Script­Fi­le
Script­Fi­le (ita: Fi­le­Script) Specifica lo script da eseguire

Ri­pri­sti­na­re TCP/IP uti­liz­zan­do l'utilità NetShell

Uno tra gli utilizzi più comuni dei comandi netsh è il ri­pri­sti­no TCP/IP che permette lo scambio di pacchetti di dati nelle reti. Questa misura si rivela par­ti­co­lar­men­te utile in caso di problemi di con­nes­sio­ne o di rete, per es. di pro­to­col­li TCP/IP impostati in modo difettoso o scorretto. Con il seguente comando di ri­pa­ra­zio­ne viene ef­fet­tua­to un reset con con­se­guen­te rein­stal­la­zio­ne di TCP/IPv4.

netsh int ip reset

Può essere inoltre pre­di­spo­sto un file di pro­to­col­lo che documenta le modifiche avvenute con successo.

netsh int ip reset c:\tcpipreset.txt

Dopo il reset è ne­ces­sa­rio riavviare il computer.

Consiglio

I comandi di netsh possono essere uti­liz­za­ti anche con file batch (*.bat) per au­to­ma­tiz­za­re i compiti di routine. Potete scoprirne di più nella nostra guida “creare file batch”.

Im­por­ta­zio­ne ed espor­ta­zio­ne delle con­fi­gu­ra­zio­ni della rete

Netsh vi permette anche di esportare in un file di testo semplice le con­fi­gu­ra­zio­ni attuali della rete. In caso di problemi di rete sarà semplice ri­pri­sti­na­re una con­fi­gu­ra­zio­ne fun­zio­nan­te e corretta.

Nel primo passaggio (espor­ta­zio­ne) si legge la con­fi­gu­ra­zio­ne della rete, si scrive in un file di testo (netcnfig.txt) e salva in una cartella esempio chiamata “Con­fi­gu­ra­zio­ne­Del­la­Re­te” nel drive C:\ . Prima della prima espor­ta­zio­ne, dovrete spostare ma­nual­men­te la cartella “Con­fi­gu­ra­zio­ne­Del­la­Re­te” nel drive di de­sti­na­zio­ne (con netsh non viene fatto au­to­ma­ti­ca­men­te). Poi aprite il prompt dei comandi e digitate il seguente codice:

netsh -c interface dump>c:\ConfigurazioneDellaRete\netcnfig.txt

Per la suc­ces­si­va im­por­ta­zio­ne delle im­po­sta­zio­ni, è ne­ces­sa­rio inserire il seguente comando:

netsh -f c:\ConfigurazioneDellaRete\netcnfig.txt
Consiglio

Windows 10 supporta la funzione copia e incolla anche nel prompt dei comandi. Questo vi permette di copiare in modo semplice la sintassi del comando da questo articolo e inserirla infine nel box di ricerca.

Con­fi­gu­ra­zio­ne IP con netsh

Un altro noto caso d’uso di netsh è la modifica delle con­fi­gu­ra­zio­ni IP. Se a un computer non viene assegnato un indirizzo IP statico, ma au­to­ma­ti­co, si applica il Dynamic Host Con­fi­gu­ra­tion Protocol Questo pro­to­col­lo di co­mu­ni­ca­zio­ne permette ai client all’interno di una rete di assegnare au­to­ma­ti­ca­men­te indirizzi IP e altri dati di con­fi­gu­ra­zio­ne necessari. Per questo processo sono necessari diversi passaggi:

Per prima cosa bisogna aprire le im­po­sta­zio­ni correnti e i nomi delle schede di rete di­spo­ni­bi­li:

netsh interface ipv4 show interface

Ecco che verrà mostrata una scheda LAN precisa (in questo esempio: Ethernet) definita come ri­ce­vi­to­re del­l'as­se­gna­zio­ne IP at­tra­ver­so il DHCP:

netsh interface ipv4 set address name="Ethernet" source=dhcp

Il DHCP si assumerà la gestione dinamica delle con­fi­gu­ra­zio­ni della rete che ri­guar­da­no la scheda Ethernet.

Attivare e di­sat­ti­va­re il firewall di Windows

Per attivare o di­sat­ti­va­re il firewall di Windows, basta una semplice sintassi di comando netsh: Potete attivare il firewall come indicato di seguito:

netsh firewall set opmode enable

Il firewall verrà di­sat­ti­va­to con la seguente riga di comando:

netsh firewall set opmode disable
N.B.

In alcuni contesti Windows consiglia al­ter­na­ti­ve all’am­mi­ni­stra­zio­ne di rete con netsh. Viene nominato sempre più spesso Windows Po­wer­Shell di cui troverete un’in­tro­du­zio­ne nel nostro articolo dedicato.

Vai al menu prin­ci­pa­le