- Inventario e filtri precisi: elenca, cerca e segmenta ruoli/funzionalità con Get-WindowsFeature.
- Automazione della distribuzione: installa/disinstalla (include strumenti) e lavora in remoto con Invoke-Command.
- Casi reali: preparazione di IIS e promozione di AD DS con cmdlet ADDSDeployment.
- Stato desiderato: applicare Presente/Assente con la risorsa DSC WindowsFeature.
Se gestisci quotidianamente Windows Server, padroneggiare Get-WindowsFeature fa la differenza tra perdere tempo a navigare in Server Manager e automatizzare l'inventario e la distribuzione di ruoli e funzionalità in pochi secondi. Questo tutorial ti mostrerà, senza complicazioni, come elencare, filtrare, installare, disinstallare e lavorare da remoto con questo cmdlet, utilizzando esempi concreti adatti al tuo flusso di lavoro quotidiano.
Inoltre, collegheremo l'utilizzo di Get-WindowsFeature ad attività tipiche come la distribuzione di IIS o Active Directory Domain Services (AD DS) , vedremo come interrogare la struttura della foresta e concluderemo con una sezione completa sulla risorsa DSC WindowsFeature per imporre lo stato desiderato ( installato o meno ) con proprietà come Ensure o IncludeAllSubFeature . Ho incluso comandi , filtri e suggerimenti in modo che possiate applicarli così come sono.
Che cos'è Get-WindowsFeature e qual è la sua sintassi?
Il cmdlet Get-WindowsFeature consente di interrogare i ruoli e le funzionalità disponibili e installati su Windows Server (a partire da Windows Server 2008). Visualizza il nome interno, il nome visualizzato e lo stato di installazione , accetta filtri e può essere eseguito su computer remoti.
Sintassi standard del cmdlet, inclusi parametri chiave come -Name , -ComputerName , -Credential , -LogPath o -Vhd :
Get-WindowsFeature <String[]> ]
Suggerimento utile : il parametro -LogPath consente di salvare i risultati in un file di log, ideale per audit o CI/CD.
Interpretare l'output e il filtro come un professionista
L'output mostra sia le funzionalità installate che quelle disponibili. Inoltre, la colonna InstallState visualizza "Installato" o "Disponibile". È possibile filtrare in base a una di queste proprietà.
Elenco completo senza filtri (e sì, potrebbe essere lungo):
Get-WindowsFeature
Filtra utilizzando i caratteri jolly nel nome interno per trovare, ad esempio, tutto ciò che contiene DHC (come DHCP):
Get-WindowsFeature -Name *DHC*
Mantenere solo ciò che è installato utilizzando lo stato di installazione è molto utile per l'inventario:
Get-WindowsFeature | Where-Object { $_.InstallState -eq "Installed" }
Elenca gli elementi disponibili per l'installazione (non installati):
Get-WindowsFeature | Where-Object { $_.InstallState -eq "Available" }
Esegui la ricerca tramite corrispondenza esatta del nome interno (ad esempio, il ruolo DNS) o tramite nome visualizzato in spagnolo:
# Por Name exacto
Get-WindowsFeature | Where-Object { $_.Name -eq "DNS" }
# Por DisplayName exacto
Get-WindowsFeature | Where-Object { $_.DisplayName -eq "Servidor DNS" }
Installare e disinstallare ruoli e funzionalità da PowerShell
Per installare, utilizzare Install-WindowsFeature indicando il nome del ruolo o della funzionalità. Se si desidera includere gli strumenti di amministrazione associati, aggiungere -IncludeManagementTools.
# Ejemplo: instalar IIS con sus herramientas de administración
Install-WindowsFeature -Name Web-Server -IncludeManagementTools
Per disinstallare, utilizzare Uninstall-WindowsFeature (se applicabile) oppure eseguire nuovamente Install con Ensure = Absent in DSC, come vedremo in seguito. È inoltre possibile consultare tutorial correlati sulla gestione degli utenti da PowerShell.
Registra l'operazione con -LogPath se hai bisogno di una traccia per soddisfare i requisiti di audit:
Install-WindowsFeature -Name Desktop-Experience -LogPath C:\logs\install-desktop-experience.log
Query remote: controlla i server da remoto
Il comando Get-WindowsFeature può puntare a un singolo server remoto con l'opzione -ComputerName , ideale per verificare lo stato dalla propria postazione di lavoro amministrativa:
Get-WindowsFeature -ComputerName SRV-CORE-01
Se è necessario interrogare più server contemporaneamente, appoggiarsi a te Invoke-Command Offre flessibilità e restituisce anche l'origine di ogni risultato nell'output:
Invoke-Command -ComputerName SRV-A,SRV-B -ScriptBlock { Get-WindowsFeature ADRMS, RemoteAccess }
È inoltre possibile effettuare ricerche da remoto utilizzando caratteri jolly per individuare funzionalità correlate come backup, clustering, ecc.:
Invoke-Command -ComputerName SRV-CORE-01 -ScriptBlock { Get-WindowsFeature *Backup* }
Esempio pratico 1: preparazione e gestione di un IIS con PowerShell
Iniziate verificando quali componenti di IIS sono presenti e quali mancano, utilizzando una query filtrata con caratteri jolly nel nome:
Get-WindowsFeature -Name *IIS*
Installa il server web e i relativi strumenti in un'unica soluzione, così non dovrai aggiungere nuovamente i componenti di gestione:
Install-WindowsFeature -Name Web-Server -IncludeManagementTools
Scopri quali cmdlet di gestione di IIS sono disponibili dopo l'installazione per automatizzare siti, pool, associazioni e così via:
Get-Command -Module IISAdministration
Crea la nuova cartella del sito e il relativo file index.html utilizzando i cmdlet PowerShell standard per il file system:
New-Item -ItemType Directory -Path 'C:\inetpub\wwwroot\MiSitio'
New-Item -ItemType File -Path 'C:\inetpub\wwwroot\MiSitio\index.html'
Distribuisci il sito e configura il suo binding in modo che venga servito su una porta specifica (ad esempio, 8080):
New-IISSite -Name 'MiSitio' -PhysicalPath 'C:\inetpub\wwwroot\MiSitio' -BindingInformation '*:8080:'
Avvia, arresta o controlla lo stato del sito come ti serve e usa -WhatIf per convalidare operazioni distruttive come l'eliminazione:
Start-IISSite -Name 'MiSitio'
Stop-IISSite -Name 'MiSitio'
(Get-IISSite -Name 'MiSitio').Bindings
Remove-IISSite -Name 'MiSitio' -WhatIf
Esempio pratico 2: Controllo dei ruoli in Windows Server 2022 e dello stato di AD DS
Sui server senza interfaccia grafica (Server Core), è comune uscire da sconfig e lavorare dalla console . Importa il modulo Active Directory se intendi eseguire controlli sulla foresta.
Import-Module ActiveDirectory
Verifica i ruoli o le caratteristiche di un computer specifico per accertarti che AD DS e DNS siano già presenti (le installazioni di AD DS in genere includono DNS):
Get-WindowsFeature -ComputerName server-2022-b
Ottieni la configurazione della foresta (nome della foresta, domini, GC, ecc.) con un cmdlet diretto e senza parametri obbligatori, oltre a consultare la struttura della tua infrastruttura con le risorse correlate per la migrazione di ruoli e servizi a un altro Windows Server.
Get-ADForest
Se lavori con più macchine, filtra o esplora l'output per individuare "Servizi di dominio Active Directory" e "Server DNS".
Distribuzione di AD DS con PowerShell: da zero a foresta, domini e controller
Iniziate installando il ruolo AD DS e gli strumenti necessari per avere a disposizione i cmdlet e le utilità con interfaccia grafica (Utenti e computer, ADAC, ecc.):
Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools
Scopri i cmdlet del modulo ADDSDeployment per automatizzare promozioni e installazioni. Questo processo consente anche di utilizzare le risorse per promuovere un server a controller di dominio.
Get-Command -Module ADDSDeployment
Richiedi le credenziali in modo sicuro dalla console e, ove opportuno, utilizza stringhe complesse per la password DSRM:
# Credenciales
$cred = Get-Credential
# Solicitud de contraseña DSRM como SecureString
$dsrm = Read-Host -Prompt 'DSRM Password:' -AsSecureString
# (No recomendado) Texto plano a SecureString
ConvertTo-SecureString "Password1" -AsPlainText -Force
Prima di eseguire l'installazione finale, verificare i prerequisiti con i cmdlet di test (le varianti Test-*).
Creare una nuova foresta con richieste interattive di password DSRM, considerando il suo utilizzo in:
Install-ADDSForest -DomainName 'corp.contoso.com'
Configura i livelli funzionali, la delega DNS e i percorsi DB/SYSVOL/Logs durante la creazione della foresta:
Install-ADDSForest -DomainName corp.contoso.com -CreateDNSDelegation -DomainMode Win2008 -ForestMode Win2025 -DatabasePath 'D:\NTDS' -SYSVOLPath 'D:\SYSVOL' -LogPath 'E:\Logs'
Aggiungi un dominio figlio o ad albero con Install-ADDSDomain definendo credenziali, sito, DC di origine e percorsi in modo che venga distribuita l'intera struttura necessaria.
RODC in due fasi: account preconfigurato e associazione
Per un RODC a livelli, creare innanzitutto l'account del controller di dominio di sola lettura utilizzando il cmdlet appropriato e delegare l'amministrazione, se necessario:
Add-ADDSReadOnlyDomainControllerAccount -DomainControllerAccountName RODC1 -DomainName corp.contoso.com -SiteName Boston -DelegatedAdministratorAccountName AdminUser
Sul server che verrà aggiunto a quell'account, senza ancora aggiungerlo al dominio , installa il ruolo e completa la promozione utilizzando l'account esistente:
Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools
Install-ADDSDomainController -DomainName corp.contoso.com -SafeModeAdministratorPassword (Read-Host -Prompt 'DSRM Password:' -AsSecureString) -Credential (Get-Credential Corp\AdminUser) -UseExistingAccount
È possibile confermare con Y o automatizzare con -Confirm per sopprimere le domande interattive negli script.
Installazione di AD DS tramite GUI (Server Manager): passaggi essenziali
Se preferisci la procedura guidata grafica, Server Manager copre l'intero ciclo : dall'aggiunta del ruolo AD DS alla promozione del server a controller di dominio tramite la procedura guidata di configurazione.
- Avvia "Aggiungi ruoli e funzionalità", selezionare l'installazione basata sui ruoli e il server di destinazione.
- Marchio "Active Directory Domain Services", accetta l'aggiunta della funzionalità e continua.
- Installa e, al termine, fai clic su "Promuovi questo server a controller di dominio" per aprire la procedura guidata di configurazione.
- Nella configurazione della distribuzione, scegli: aggiungi DC al dominio esistente, crea un dominio figlio, crea un dominio ad albero o crea una nuova foresta.
- Nelle Opzioni del controller di dominio, selezionare DNS, GC o RODC a seconda dei casi, scegliere il sito, definire la password DSRM.
- Se installi DNS, nelle Opzioni DNS decidere se aggiornare la delega (richiede autorizzazioni sulla zona primaria).
- Per RODCNelle Opzioni RODC è possibile delegare l'amministrazione e modificare i criteri di replica delle password.
- In Opzioni aggiuntive, convalida il NetBIOS del dominio o del controller di dominio di replica. IFM indica il percorso al supporto (non valido per il primo controller di dominio nel dominio).
- Nei percorsi, definisce le posizioni del database, i registri e SYSVOL (oppure accettare i percorsi predefiniti).
- Opzioni in preparazione, utilizzare le credenziali con autorizzazioni per eseguire adprep.
- Seleziona le opzioni, esporta il copione se vuoi ed esegue il controllo dei prerequisiti.
- Installa e lascia che il server si riavvii per completare la promozione.
Negli scenari RODC con un account preesistente , la procedura guidata consente di "Utilizzare un account RODC esistente", selezionare IFM, i percorsi e completare i controlli.
Risorsa DSC WindowsFeature: applica lo stato desiderato
Oltre al cmdlet, la risorsa DSC WindowsFeature garantisce la presenza o l'assenza di un ruolo o di una funzionalità su uno o più server, integrandosi perfettamente nelle infrastrutture completamente automatizzate.
Sinossi : Per installare o disinstallare un ruolo o una funzionalità di Windows in modo dichiarativo.
Sintassi delle risorse all'interno di una configurazione DSC:
WindowsFeature #ResourceName
{
Name =
]
]]
{ Absent | Present }]
]
]
]
}
Requisiti : Windows Server 2008 o versioni successive sul sistema di destinazione e accesso ai moduli PowerShell DISM e ServerManager.
Nome della proprietà chiave : utilizzare il nome interno del ruolo o della funzionalità (non il nome visualizzato). Per elencare le opzioni valide in un team, utilizzare questo campo, integrando così le informazioni necessarie per automatizzare la gestione di ruoli e funzionalità.
Altre proprietà rilevanti in scenari reali:
- Credenziali: Credenziale per aggiungere o rimuovere il ruolo di tale identità. Tipo PSCredential.
- Garantire: "Presente" per installare, "Assente" per rimuovere. Valore predefinito: Presente.
- Includi tutte le sottofunzioni: installa tutte le sottofunzionalità, se applicabili
$trueSe Ensure = Assente, rimuovere anche le sottocaratteristiche. - LogPath: percorso al file di registro di installazione o disinstallazione.
Proprietà di sola lettura DisplayName : il nome visualizzato che la risorsa ottiene dopo l'applicazione dello stato.
Impara più velocemente: guida aggiornabile ed esempi integrati
Mantieni aggiornata la tua guida con Update-Help , quindi usa Get-Help per visualizzare riepiloghi ed esempi di qualsiasi cmdlet, incluso quello di cui stiamo parlando:
Update-Help
Get-Help Get-WindowsFeature -Examples
Questa combinazione evita di perdere tempo in ricerche sul web quando si desiderano semplicemente esempi pronti da copiare e incollare.
Ambito e prodotti interessati
Il comando Get-WindowsFeature e le operazioni qui descritte si applicano a Windows Server (2008 e versioni successive). Alcuni riferimenti specifici menzionano Microsoft Windows Server 2012 e 2012 R2 come prodotti interessati.
Negli ambienti dei produttori, questa funzionalità è supportata su un'ampia gamma di server aziendali (ad esempio, le famiglie Dell PowerEdge come C4130, C4140 e C6400, tra le altre), rafforzandone l'applicabilità in ambienti di data center eterogenei. Per ulteriori informazioni, è possibile consultare anche le risorse relative a server e sedi.
Con questi elementi a disposizione, l'inventario e la standardizzazione dei ruoli con Get-WindowsFeature, la distribuzione di IIS o la promozione di AD DS diventano attività ripetibili, tracciabili e facili da automatizzare ; e, se si desidera garantire lo stato, la risorsa DSC WindowsFeature completa il ciclo con un solido livello dichiarativo.
Scrittore appassionato del mondo dei byte e della tecnologia in generale. Adoro condividere le mie conoscenze attraverso la scrittura, ed è quello che farò in questo blog, mostrarti tutte le cose più interessanti su gadget, software, hardware, tendenze tecnologiche e altro ancora. Il mio obiettivo è aiutarti a navigare nel mondo digitale in modo semplice e divertente.