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 contenitori di spazi dei nomi IIS come Siti, Pool di applicazioni, Applicazioni e Directory virtuali.

In questa guida gestiremo 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 modificarle. È invece necessario usare i cmdlet forniti da IIS. Questa procedura dettagliata si basa sul sito, sulle applicazioni e sulle directory virtuali che abbiamo creato 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 contro i contenitori dello spazio dei nomi (Siti, App, AppPools, VDirs), Get-WebConfiguration* funzionerà contro qualsiasi sezione di configurazione IIS.

Esecuzione di query nelle impostazioni di configurazione

Si esaminerà ora le impostazioni per la sezione directoryBrowse abilitate nell'applicazione DemoApp creata in precedenza. Passare prima alla cartella DemoApp e quindi eseguire una query sulle impostazioni di autenticazione in questa cartella. Ecco come eseguire questa operazione:

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 seguente viene usato 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 utilizzare la proprietà -PSPath sopra. Di seguito è riportato un esempio di come eseguire una query per le 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

Utilizzo 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 applicationhost.config centrale. 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

A questo punto è necessario usare il parametro -PSPath e -location. Il comando seguente abiliterà l'autenticazione di Windows per l'applicazione DemoApp. La configurazione viene scritta in applicationhost.config tuttavia usando un tag location. 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 è tuttavia necessario specificare i percorsi durante l'esecuzione di query sulla configurazione. Il normale comando Get-WebConfigurationProperty 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. Il comando 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. Puoi ottenere 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 predefinite del documento 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 desidera aggiungere il nuovo valore. 0 è all'inizio; -1 specifica la fine.

Sommario

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.