Condividi tramite


Snap-in di PowerShell: modifica delle impostazioni semplici nelle sezioni di configurazione

di Thomas Deml

Nella procedura dettagliata precedente si è appreso come gestire i contenitori dello spazio dei nomi IIS, ad esempio Siti, pool di applicazioni, applicazioni e directory virtuali.

In questa procedura dettagliata verranno gestite le impostazioni di configurazione non esposte tramite lo spazio dei nomi IIS.

Introduzione

Esistono diversi cmdlet che consentono di modificare le impostazioni IIS non configurabili tramite lo spazio dei nomi IIS, ad esempio non è possibile usare i cmdlet predefiniti per modificarli. È invece necessario usare i cmdlet forniti da IIS. Questa procedura dettagliata si basa sul sito, sulle applicazioni e sulle directory virtuali create nelle procedure dettagliate precedenti.

Get-WebConfiguration e Get-WebConfigurationProperty

Get-WebConfiguration e Get-WebConfigurationProperty consentono di ottenere sezioni di configurazione IIS. Sono molto simili a Get-Item e Get-ItemProperty. Dove Get-Item* funziona solo con i contenitori dello spazio dei nomi (Siti, App, AppPools, VDirs) Get-WebConfiguration* funzioneranno con qualsiasi sezione di configurazione IIS.

Esecuzione di query su impostazioni di configurazione

Esaminiamo le impostazioni per la sezione directoryBrowse abilitate nell'applicazione DemoApp creata in precedenza. Prima di tutto si passa alla cartella DemoApp e quindi si esegue una query sulle impostazioni di autenticazione in questa cartella. Ecco come farlo:

PS IIS:\> cd IIS:\Sites\DemoSite\DemoApp
PS IIS:\Sites\DemoSite\DemoApp> dir
Type               Name                             Physical Path
----               ----                             -------------
file               Default.htm                      C:\DemoSite\DemoApp\Default.htm
virtualDirectory   DemoVirtualDir2                  C:\DemoSite\DemoVirtualDir2

Nell'esempio successivo si usa il parametro -filter per specificare la sezione di configurazione a cui si è interessati e il parametro -name per specificare la proprietà da esaminare. Se si desidera visualizzare le impostazioni di una sezione che non è la posizione corrente, è possibile usare la proprietà -PSPath in alto. Ecco un esempio di come eseguire query sulle impostazioni di esplorazione della directory nel sito Web predefinito:

Get-WebConfigurationProperty -filter /system.webServer/directoryBrowse -name enabled -PSPath 'IIS:\Sites\Default Web Site'
ItemXPath                   : /system.webServer/directoryBrowse
IsInheritedFromDefaultValue : False
IsProtected                 : False
Name                        : enabled
TypeName                    : System.Boolean
Schema                      : Microsoft.IIs.PowerShell.Framework.ConfigurationAttributeSchema
Value                       : False
IsExtended                  : False

Uso di Set-WebConfigurationProperty

La modifica dell'impostazione è semplice come:

Gestione delle sezioni bloccate

Ecco un problema. Le sezioni di autenticazione sono in genere bloccate, ovvero non possono essere scritte in un file web.config, ma devono essere scritte nel file centrale applicationhost.config. L'uso del comando precedente per abilitare WindowsAuthentication avrà esito negativo con una violazione di blocco:

PS IIS:\Sites\DemoSite\DemoApp> Set-WebConfigurationProperty -filter /system.webServer/security/authentication/windowsAuthentication -name enabled -value true
Set-WebConfigurationProperty : This configuration section cannot be used at this path. This happens
 when the section is locked at a parent level. Locking is either by default (overrideModeDefault="D
eny"), or set explicitly by a location tag with overrideMode="Deny" or the legacy allowOverride="fa
lse".
At line:1 char:29
+ Set-WebConfigurationProperty  <<<< -filter /system.webServer/security/authentication/windowsAuthentication -name enabled -value true

È necessario eseguire questa operazione per usare il parametro -PSPath e -location. Il comando seguente abilita l'autenticazione di Windows per l'applicazione DemoApp. La configurazione viene scritta in applicationhost.config tuttavia usando un tag di posizione. Fare clic su qui per trovare altre informazioni sul blocco e sui tag di posizione.

PS IIS:\Sites\DemoSite\DemoApp> Set-WebConfigurationProperty -filter /system.webServer/security/authentication/windowsAuthentication -name enabled -value true -PSPath IIS:\ -location DemoSite/DemoApp

Non è necessario specificare i percorsi durante la query sulla configurazione. Il comando Get-WebConfigurationProperty regolare mostrerà che l'impostazione è abilitata.

PS IIS:\Sites\DemoSite\DemoApp> Get-WebConfigurationProperty -filter /system.webServer/security/authentication/windowsAuthentication -name enabled
True

Get-WebConfiguration e Get-WebConfigurationProperty

Lo stesso vale per Get-Item e Get-ItemProperty nell'esempio precedente. Get-WebConfiguration ottiene l'intera sezione anziché solo una proprietà. In questo modo è possibile archiviare la sezione in una variabile, apportare modifiche alle proprietà della sezione e salvare nuovamente la sezione tramite Set-WebConfiguration. E si ottiene il vantaggio del completamento dei comandi.

Ecco un esempio. Non copiare e incollare. Esplorare le proprietà della sezione windowsAuthentication. Digitare $winAuth. e premere il <tasto TAB> per scorrere le proprietà e le funzioni disponibili.

PS IIS:\Sites\DemoSite\DemoApp> $winAuth = Get-WebConfiguration -filter /system.webServer/security/authentication/windowsAuthentication 
PS IIS:\Sites\DemoSite\DemoApp> $winAuth.enabled = $false
PS IIS:\Sites\DemoSite\DemoApp> $winAuth | set-Webconfiguration -filter /system.webServer/security/authentication/windowsAuthentication -PSPath IIS:\ -location "DemoSite/DemoApp"

Add-WebConfiguration

Add-WebConfiguration è un cmdlet che si vuole usare se è necessario aggiungere qualcosa a una raccolta di configurazione IIS. Gestori, moduli, impostazioni di documento predefinite e altri esempi in cui IIS usa una raccolta per archiviare più valori.

Ecco un esempio su come aggiungere un nuovo documento predefinito alla raccolta documenti predefinita demoApp:

PS IIS:\Sites\DemoSite\DemoApp>Add-WebConfiguration /system.webServer/defaultDocument/files  "IIS:\sites\Default Web Site" -at 0 -value
@{value="new-index.html"}

Nell'esempio viene usato il parametro aggiuntivo -at. In questo modo è possibile specificare dove nella raccolta si vuole aggiungere il nuovo valore. 0 è all'inizio; -1 specifica la fine.

Riepilogo

In questa procedura dettagliata si è appreso come usare i cmdlet di configurazione Web forniti da IIS. Si è appreso come eseguire query per le impostazioni di configurazione, come configurare le impostazioni usando i tag di posizione, come sfruttare il completamento della riga di comando e come aggiungere voci alle raccolte.

Nella procedura dettagliata successiva si apprenderà come eseguire alcune attività di configurazione complesse usando funzionalità avanzate del provider IIS, ad esempio globbing e XPath.