Share via


Snap-in do PowerShell: fazendo alterações de configuração em sites e pools de aplicativos

por Thomas Deml

Neste passo a passo, você aprenderá a alterar propriedades simples de contêineres de namespace do IIS, como Sites, Aplicativos Web, Diretórios Virtuais e Pools de Aplicativos usando cmdlets internos do PowerShell. O próximo passo a passo abordará como alterar as propriedades de configuração nas seções system.webServer e seções personalizadas.

Introdução

A tarefa dos Snap-ins do PowerShell é oferecer namespaces que podem ser gerenciados com cmdlets comuns e internos do PowerShell, como New-Item, Get-Item, Get-ChildItems, Set-Item, Set-ItemProperty etc.. Os cmdlets internos funcionam em todos os namespaces fornecidos pelo PowerShell. New-Item c:\testdir, por exemplo, permite que você crie um novo diretório do sistema de arquivos, mas também pode criar um novo objeto IIS, como um Site ou um Pool de Aplicativos, por exemplo, New-Item IIS:\AppPools\NewAppPool.

No passo a passo anterior, começamos a usar os cmdlets New-item e Get-Item. Este passo a passo explorará mais dos cmdlets internos.

Muitas vezes você pode ter que alterar as configurações nesses itens depois de criá-los. Para fazer isso, estamos usando os cmdlets internos New-ItemProperty e Set-ItemProperty. Também veremos como usar Get-Item e Set-Item.

Este passo a passo depende do site 'Demosite' e de seus Aplicativos Web e Diretórios Virtuais que criamos no último passo a passo.

Examinando as configurações

Antes de começarmos a alterar as configurações, queremos analisá-las primeiro. Aqui está um comando para examinar as configurações de 'DemoSite'.

PS IIS:\> get-item IIS:\Sites\DemoSite
Name             ID   State      Physical Path                  Bindings
----             --   -----      -------------                  --------
DemoSite         2    Started    c:\demosite                    http :8080:

Isso fornece uma exibição das propriedades mais importantes do site. No entanto, há mais configurações que você pode estar interessado.

Aqui está um comando que fornece mais detalhes:

(Get-ItemProperty IIS:\Sites\DemoSite -Name bindings).Collection

No exemplo acima, estamos usando parênteses porque a chamada Get-ItemProperty precisa ser avaliada primeiro antes de imprimirmos as entradas da coleção. Nesse caso, a mesma coisa que em matemática: (5 + 4) * 3 avaliará os 5 + 4 primeiro e, em seguida, multiplicarão por 3. Nesse caso, os resultados do comando Get-ItemProperty serão avaliados e o objeto de configuração do IIS resultante contém uma coleção que geramos para a tela.

Você pode usar a mesma estratégia com outras propriedades ou coleções, como a seção processModel do AppPools. O comando a seguir, por exemplo, retorna um belo objeto DateTime para o startupTimeLimit de nosso DemoAppPool:

PS IIS:\> (Get-ItemProperty IIS:\AppPools\DemoAppPool -name processModel).startupTimeLimit

Days              : 0
Hours             : 0
Minutes           : 1
Seconds           : 30
Milliseconds      : 0
Ticks             : 900000000
TotalDays         : 0.00104166666666667
TotalHours        : 0.025
TotalMinutes      : 1.5
TotalSeconds      : 90
TotalMilliseconds : 90000

Alterando configurações de Site e AppPool

Há duas maneiras básicas de fazer alterações.

  1. Se você estiver alterando uma propriedade simples, use Set-ItemProperty.
  2. Se você estiver lidando com uma coleção e quiser adicionar uma nova entrada de coleção, use New-ItemProperty. Em uma instalação padrão do IIS, a coleção de associações é a única coleção usada no namespace do IIS.

Set-ItemProperty e New-ItemProperty

Vamos começar adicionando uma associação adicional ao nosso DemoSite:

PS IIS:\> New-ItemProperty IIS:\sites\DemoSite -name bindings -value @{protocol="http";bindingInform
ation=":8081:"}

PS IIS:\> dir IIS:\Sites
Name             ID   State      Physical Path                  Bindings
----             --   -----      -------------                  --------
Default Web Site 1    Started    f:\inetpub\wwwroot             http *:80:
DemoSite         2    Started    c:\demosite                    http :8080:
                                                                http :8081:

Como você pode ver, o DemoSite agora também está escutando na porta 8081.

Use o Set-ItemProperty se desejar modificar uma propriedade existente. Alterando o nome do site, por exemplo:

PS IIS:\> Set-ItemProperty IIS:\Sites\DemoSite -name name -value NewDemoSite
PS IIS:\> dir iis:\Sites
Name             ID   State      Physical Path                  Bindings
----             --   -----      -------------                  --------
Default Web Site 1    Started    f:\inetpub\wwwroot             http *:80:
NewDemoSite      2    Started    c:\demosite                    http :8080:
                                                                http :8081:

Vamos alterá-lo de volta para o nome antigo:

PS IIS:\> Set-ItemProperty IIS:\Sites\NewDemoSite -name name -value DemoSite

Também queremos alterar a identidade em que nosso Pool de Aplicativos é executado. No entanto, primeiro temos que criar um usuário. Vamos usar ADSI para fazer isso

$computer = [ADSI]"WinNT://."
$user = $computer.Create("user", "DemoAppPoolUser")
$user.SetPassword("Secret!!Pw3009")
$user.SetInfo()

Agora estamos prontos para configurar o DemoAppPool para ser executado como este usuário:

Set-ItemProperty iis:\apppools\DemoAppPool -name processModel -value @{userName="DemoAppPoolUser";password="Secret!!Pw3009";identitytype=3}

Para ser extensível, estamos usando uma boa tabela de hash antiga para nomes de propriedade e seus valores. Se você esqueceu como usá-lo, aqui está um link.

Set-Item e Get-Item

Vamos fazer o mesmo, ou seja, atribuir um usuário a um Pool de Aplicativos, com a combinação set-item/get-item. Você pode gostar um pouco mais dessa variante porque ela permite que você aproveite a conclusão da linha de comando. Para ver como isso funciona, não copie e cole os comandos a seguir. Insira alguns caracteres e use a tecla TAB para aproveitar as vantagens da conclusão da linha de comando:

PS IIS:\AppPools> $demoPool = Get-Item IIS:\AppPools\DemoAppPool
PS IIS:\AppPools> $demoPool.processModel.userName = "DemoAppPoolUser"
PS IIS:\AppPools> $demoPool.processModel.password = "Secret!!Pw3009"
PS IIS:\AppPools> $demoPool.processModel.identityType = 3
PS IIS:\AppPools> $demoPool | Set-Item

Resumo

Neste passo a passo, você aprendeu a usar cmdlets fornecidos pelo PowerShell para gerenciar contêineres de namespace do IIS, como Sites e Pools de Aplicativos. Você aprendeu a usar tabelas de hash e como aproveitar a conclusão da linha de comando. No próximo passo a passo, você aprenderá a usar cmdlets snap-in do IIS para fazer alterações de configuração nas configurações do IIS que não são expostas por meio do namespace snap-in do IIS.