Attivare IIS su Windows 10 senza passare dal Pannello di controllo
Su Windows 10 IIS non è un pacchetto da installare come su Linux: è una funzionalità di sistema. Con PowerShell puoi abilitarla in modo preciso, scegliendo i ruoli e le componenti realmente utili. Questo approccio è più pulito del classico percorso grafico perché lascia traccia di ciò che hai attivato, si presta a script ripetibili e riduce gli errori quando devi replicare la stessa macchina su più postazioni.
La logica è semplice: prima abiliti il servizio base, poi aggiungi solo ciò che serve davvero, come ASP.NET, autenticazione Windows, logging avanzato o strumenti di gestione. Se ti serve un server web per test locali, laboratorio o sviluppo di applicazioni .NET, questa è la strada più lineare.
Prerequisiti e contesto operativo
Serve una sessione PowerShell avviata con privilegi amministrativi. Senza elevazione, i cmdlet che modificano le funzionalità di Windows falliscono con errori di accesso negato. È anche utile sapere in anticipo se stai lavorando su Windows 10 Home, Pro o Enterprise: IIS è disponibile sulle edizioni client supportate, ma in ambienti gestiti possono esserci policy aziendali che impediscono l’attivazione di alcuni componenti.
Se stai configurando un ambiente di sviluppo, tieni presente che IIS ascolterà in genere su porta 80 e, se abiliti HTTPS, su 443. Se quelle porte sono già occupate da altri servizi locali, il sito partirà ma non sarà raggiungibile nel modo atteso. Conviene verificare prima lo stato delle porte e dei servizi in ascolto.
Verifica rapida della versione e dei ruoli disponibili
Prima di installare, controlla che il modulo per la gestione delle funzionalità sia disponibile e che IIS non sia già presente in forma parziale. Questo evita di interpretare male un’installazione precedente o una macchina già preparata da un altro operatore.
Get-WindowsOptionalFeature -Online -FeatureName IIS-WebServerRole
Se il risultato mostra State : Disabled, la funzionalità è presente ma non attiva. Se compare Enabled, IIS è già installato almeno come ruolo base. In caso di errore sul nome della feature, il problema è quasi sempre il contesto: verifica di essere su PowerShell con privilegi elevati e su un’installazione client di Windows supportata.
Installazione base di IIS con PowerShell
Per installare il minimo indispensabile basta attivare il ruolo server web principale. Questo crea la base del sito predefinito e abilita il servizio W3SVC, cioè il motore che serve le richieste HTTP in locale o in rete.
Enable-WindowsOptionalFeature -Online -FeatureName IIS-WebServerRole -All -NoRestart
L’opzione -All porta con sé le dipendenze richieste dal ruolo principale. -NoRestart evita il riavvio automatico: utile se vuoi completare più modifiche in un’unica finestra di manutenzione. Dopo il comando, Windows potrebbe comunque indicare che un riavvio è necessario per finalizzare alcuni componenti.
Se preferisci una via ancora più semplice e vuoi il set più comune per sviluppo web, puoi installare anche i componenti di gestione e compatibilità più usati. La scelta dipende da cosa devi fare: hosting statico, ASP.NET, autenticazione integrata o solo test di base.
Enable-WindowsOptionalFeature -Online -FeatureName IIS-WebServerRole,IIS-WebServer,IIS-CommonHttpFeatures,IIS-ManagementConsole -All -NoRestart
Questo set è più comodo perché ti evita di arrivare subito a una macchina con IIS “mezzo installato”, cioè presente ma priva di console o dei moduli HTTP essenziali. In pratica, è la scelta più sensata se vuoi una base pronta all’uso senza passare per il wizard grafico.
Componenti utili da aggiungere subito
IIS da solo serve un sito statico minimale. Nella pratica, quasi sempre vuoi almeno logging, gestione remota locale e il supporto per l’applicazione che andrai a pubblicare. Per evitare attivazioni successive frammentate, conviene decidere subito il profilo.
Per un ambiente .NET o per test di applicazioni dinamiche, i componenti più comuni sono ASP.NET, estensioni ISAPI e la console di gestione. Se lavori con autenticazione Windows in rete interna, abilita anche i moduli di sicurezza correlati. Se invece stai esponendo solo contenuti statici, tieni il profilo più leggero possibile.
Enable-WindowsOptionalFeature -Online -FeatureName IIS-ASPNET45,IIS-NetFxExtensibility45,IIS-ISAPIExtensions,IIS-ISAPIFilter,IIS-ManagementConsole -All -NoRestart
Non attivare tutto “per sicurezza”: su una macchina client questo aumenta superficie e complessità senza vantaggi reali. Meglio partire da un profilo minimo e aggiungere solo ciò che l’applicazione richiede davvero. Questo vale soprattutto se il PC è usato anche per navigazione, test e attività quotidiane.
Controllare che IIS sia davvero operativo
Dopo l’attivazione, verifica tre cose: il servizio, il sito predefinito e la risposta HTTP locale. Se una di queste manca, l’installazione è incompleta o il servizio non è partito correttamente.
Get-Service W3SVC
Lo stato atteso è Running. Se è Stopped, prova ad avviarlo manualmente e osserva l’errore. In caso di fallimento, il dettaglio utile è quasi sempre nel Visualizzatore eventi, sotto i log di applicazione e servizi di Windows.
Start-Service W3SVC
Controlla poi la risposta locale con una richiesta HTTP. Anche se non hai ancora pubblicato un sito personalizzato, il sito predefinito dovrebbe rispondere con una pagina IIS standard o comunque con un codice HTTP coerente.
Invoke-WebRequest http://localhost -UseBasicParsing
Se ottieni un errore di connessione, devi capire se il problema è sul servizio, sulla porta o sul binding. Se ricevi un 403 o una pagina diversa dal previsto, il server è attivo ma la configurazione del sito non è quella che ti aspettavi.
Creare un sito di test con PowerShell
Una volta installato IIS, il passo successivo è creare un sito dedicato invece di appoggiarti sempre al sito predefinito. È una scelta più ordinata, soprattutto se vuoi separare test diversi o evitare conflitti con altre applicazioni locali.
Prima prepara una cartella dedicata, ad esempio C:\Sites\demo, e inserisci un file HTML minimale. Poi crea il binding sul nome host o sulla porta che ti serve.
New-Item -ItemType Directory -Path C:\Sites\demo -Force
Set-Content -Path C:\Sites\demo\index.html -Value '<h1>IIS pronto</h1>'
Import-Module WebAdministration
New-Website -Name DemoSite -Port 8080 -PhysicalPath C:\Sites\demo -Force
Usare la porta 8080 è spesso più prudente sul desktop, perché riduce la probabilità di conflitto con altri servizi già presenti su 80 e 443. Dopo la creazione, verifica subito con il browser o con PowerShell.
Invoke-WebRequest http://localhost:8080 -UseBasicParsing
Se il sito non risponde, i punti da controllare sono quattro: cartella fisica esistente, binding corretto, servizio W3SVC attivo e firewall locale che non blocchi la porta scelta. In ambiente locale il firewall raramente è il colpevole per localhost, ma può esserlo per accessi da altri host della LAN.
Firewall e accesso dalla rete locale
Se vuoi raggiungere IIS da un’altra macchina della rete, non basta che il sito funzioni in locale. Devi consentire il traffico in ingresso sulla porta usata dal sito, almeno nel profilo di rete corretto. Su Windows 10 questo è un punto frequente di confusione: il server risponde su localhost ma non è visibile dalla LAN.
Per un test rapido puoi aprire la porta 8080 in ingresso, ma solo se sei consapevole del contesto e stai lavorando in un ambiente controllato. Se la macchina è esposta o usata in reti non fidate, riduci la superficie e limita la regola al profilo privato.
New-NetFirewallRule -DisplayName 'IIS DemoSite 8080' -Direction Inbound -Protocol TCP -LocalPort 8080 -Action Allow -Profile Private
La verifica più semplice è da un altro host della stessa rete: apri http://IP_DEL_PC:8080 oppure usa un test con curl. Se il traffico non passa, controlla che il profilo rete sia effettivamente Private e che il router o eventuali policy aziendali non blocchino la comunicazione.
Errori tipici e come leggerli senza perdere tempo
Il primo errore classico è l’uso di PowerShell senza privilegi elevati. In quel caso l’installazione fallisce o risulta parziale. Il secondo è il tentativo di usare nomi feature errati: non tutti i pacchetti hanno un nome intuitivo, e conviene sempre interrogare il catalogo prima di lanciare una modifica massiva.
Un altro caso frequente è il conflitto con altri software che occupano la porta 80, come server locali, proxy o strumenti di sviluppo. Per diagnosticarlo, basta vedere chi ascolta sulla porta.
Get-NetTCPConnection -LocalPort 80 -State Listen
Se trovi un processo diverso da IIS, non forzare subito la chiusura: identifica prima il servizio associato. In ambienti di sviluppo è comune avere Apache, Nginx, Docker Desktop o applicazioni vendor che intercettano la stessa porta. Cambiare il binding del sito IIS su 8080 o 8081 è spesso la soluzione meno invasiva.
Se invece il sito non parte ma il servizio è attivo, controlla i log di sistema e il canale applicativo di IIS. I percorsi utili, in generale, sono il Visualizzatore eventi e i log sotto C:\inetpub\logs\LogFiles. La presenza di log HTTP con richieste e codici risposta ti dice subito se il traffico arriva al server o si ferma prima.
Disinstallare o rimuovere i componenti in modo pulito
Se hai installato IIS per test e non ti serve più, puoi disattivarlo con lo stesso approccio usato per l’installazione. Anche qui conviene essere selettivi: rimuovere tutto è corretto solo se vuoi riportare il sistema allo stato iniziale.
Disable-WindowsOptionalFeature -Online -FeatureName IIS-WebServerRole -NoRestart
Se avevi creato regole firewall o siti personalizzati, rimuovi anche quelli. Il rollback non è completo se lasci porte aperte, binding inutili o cartelle di test con contenuti esposti. Prima di disattivare, annota la configurazione che ti serve conservare, così puoi ricostruirla senza ambiguità.
Una configurazione minima sensata per sviluppo
Se vuoi una ricetta pratica, su un Windows 10 da laboratorio io partirei con: ruolo web base, console di gestione, ASP.NET solo se serve, sito separato su porta non standard e regola firewall limitata al profilo privato. È un equilibrio ragionevole tra utilità e superficie d’attacco.
In più, conviene tenere un piccolo file di provisioning con i comandi PowerShell usati. Non è solo comodità: se devi ricreare la macchina o spiegare a un collega cosa è stato attivato, hai una traccia verificabile e non dipendi dalla memoria. In ambienti di team, questa disciplina evita molte installazioni “creative” difficili da replicare.
Il punto chiave è non confondere installazione e pubblicazione. Installare IIS significa preparare il motore; renderlo utile significa configurare siti, binding, permessi, log e regole di rete. Se separi questi passaggi, diagnosi e manutenzione diventano molto più semplici.
Comandi essenziali da tenere a portata di mano
Questi sono i comandi che uso più spesso quando devo verificare o ripristinare l’installazione:
Get-WindowsOptionalFeature -Online -FeatureName IIS-WebServerRole
Get-Service W3SVC
Start-Service W3SVC
Import-Module WebAdministration
Get-Website
Get-NetTCPConnection -LocalPort 80 -State Listen
Se questi controlli tornano coerenti, IIS è installato, il servizio è vivo e la macchina è pronta per ospitare il sito di test o l’applicazione locale. Da lì in poi il lavoro vero è nella configurazione applicativa, non più nell’abilitazione del ruolo.
Assunzione operativa: i comandi sono eseguiti su Windows 10 con PowerShell aperta come amministratore e con una configurazione locale standard, senza policy aziendali restrittive che blocchino le feature di IIS.
Commenti (0)
Nessun commento ancora.
Segnala contenuto
Elimina commento
Eliminare definitivamente questo commento?
L'azione non si può annullare.