Share via


Snap-in do PowerShell: Criando sites, aplicativos Web, dirs virtuais e pools de aplicativos

por Thomas Deml

Neste passo a passo, você aprenderá a criar Sites, Aplicativos Web, Diretórios Virtuais e Pools de Aplicativos.

Introdução

O namespace do IIS PowerShell consiste em itens como Sites, Aplicativos, Diretórios Virtuais e Pools de Aplicativos. Criar novos itens de namespace e gerenciá-los é muito fácil usando os cmdlets internos do PowerShell.

Criando sites da Web

Se você estiver familiarizado com o PowerShell, saberá que o cmdlet New-Item é usado para criar novos itens nos vários namespaces do PowerShell. No entanto, o comando New-Item c:\TestDirectory cria um novo diretório do sistema de arquivos (a maioria das pessoas usa o alias MD ou MKDIR para New-Item ). New-Item também é usado para criar novos Sites no namespace do IIS PowerShell.

Parâmetros

Especificar o nome do diretório é o único argumento necessário quando você cria um novo diretório do sistema de arquivos. Infelizmente, isso não é suficiente quando você cria um Site. Parâmetros adicionais, como o caminho do sistema de arquivos e as associações de rede, são necessários para criar um Site. Aqui está o comando para criar um novo Site da Web seguido por um comando dir:

PS IIS:\Sites> New-Item iis:\Sites\TestSite -bindings @{protocol="http";bindingInformation=":80:TestSite"} -physicalPath c:\test
PS IIS:\Sites> dir
Name             ID   State      Physical Path                  Bindings
----             --   -----      -------------                  --------
Default Web Site 1    Started    f:\inetpub\wwwroot             http *:80:
TestSite         2    Started    c:\test                        http :80:TestSite

Usar o argumento -physicalPath é bastante simples. Mas você pode se perguntar por que o argumento -bindings parece tão complexo.

O constructo usado é um hashtable (vá aqui para saber mais sobre tabelas de hash do PowerShell). Dentro dos pares chave=valor da tabela hash, indique as configurações que refletem os atributos na seção de associações de site do IIS:

<bindings>
    <binding protocol="http" bindingInformation=":80:TestSite" />
</bindings>

Agora aqui está o motivo pelo qual usamos uma tabela de hash: a configuração do IIS é completamente extensível (consulte aqui para obter mais detalhes) com seções e atributos adicionais. Você pode imaginar que alguém estendendo o elemento <associação> com atributos adicionais. Os pares de valor de chave dentro de uma tabela de hash fornecem a flexibilidade para incorporar esses novos atributos sem precisar reescrever completamente o Snap-in do IIS PowerShell.

É certo que a sintaxe é um pouco complexa. Estamos pensando em encapsular algumas tarefas típicas, como criar sites com funções ou scripts adicionais em uma visualização técnica posterior.

Excluindo sites

Veja como você exclui o site que acabou de criar.

PS IIS:\ >Remove-Item IIS:\Sites\TestSite

Criando aplicativos Web

Criar aplicativos Web é mais fácil do que criar sites. Aqui vamos nós:

PS IIS:\> New-Item 'IIS:\Sites\Default Web Site\DemoApp' -physicalPath c:\test -type Application
Name                     ApplicationPool          EnabledProtocols         PhysicalPath
----                     ---------------          ----------------         ------------
DemoApp                  DefaultAppPool           http                     c:\test

O único parâmetro que você precisa especificar é o tipo (tipo) porque, em um Site, talvez você queira criar aplicativos ou diretórios virtuais. Ao especificar o parâmetro -type, você informa ao Snap-in do IIS para criar um aplicativo.

Para excluir o aplicativo, você também pode usar Remove-Item.

Criando diretórios virtuais

Para criar um Diretório Virtual, você também usa o cmdlet New-Item. Vamos criar um Diretório Virtual abaixo do 'Site Padrão', mas um segundo abaixo do aplicativo Web que criamos na etapa anterior.

PS IIS:\> New-Item 'IIS:\Sites\Default Web Site\DemoVirtualDir1' -type VirtualDirectory -physicalPath c:\test\virtualDirectory1
Name                                              PhysicalPath
----                                              ------------
DemoVirtualDir1                                   c:\test\virtualDirectory1

PS IIS:\> New-Item 'IIS:\Sites\Default Web Site\DemoApp\DemoVirtualDir2' -type VirtualDirectory -physicalPath c:\test\virtualDirectory2
Name                                              PhysicalPath
----                                              ------------
DemoVirtualDir2                                   c:\test\virtualDirectory2

Criando pools de aplicativos

Mas fica ainda mais simples. A criação de um novo AppPool requer apenas que o nome seja especificado.

PS IIS:\> new-item AppPools\DemoAppPool
Name                     State
----                     -----
DemoAppPool              {}

Simples, não foi? Agora vamos montar isso em um cenário de ponta a ponta.

Juntando todas as peças

No seguinte cenário de ponta a ponta, executaremos a seguinte etapa:

  1. Crie um conjunto de novos diretórios do sistema de arquivos para sites, aplicativos Web e diretórios virtuais que criaremos um pouco mais tarde.
  2. Copie um conteúdo da Web muito simples para os diretórios recém-criados.
  3. Criar novo pool de aplicativos
  4. Crie um novo site, um novo aplicativo e dois novos diretórios virtuais e atribua-os ao pool de aplicativos recém-criado.
  5. Solicite o conteúdo da Web por meio do navegador da Web.

Etapa 1: Criar novos diretórios

Usamos o cmdlet New-Item para criar quatro diretórios do sistema de arquivos. Execute os seguintes comandos (use 'md' em vez de New-Item se você não quiser especificar o parâmetro -type):

New-Item C:\DemoSite -type Directory
New-Item C:\DemoSite\DemoApp -type Directory
New-Item C:\DemoSite\DemoVirtualDir1 -type Directory
New-Item C:\DemoSite\DemoVirtualDir2 -type Directory

Etapa 2: Copiar Conteúdo

Agora, vamos escrever um conteúdo html simples para estes diretórios:

Set-Content C:\DemoSite\Default.htm "DemoSite Default Page"
Set-Content C:\DemoSite\DemoApp\Default.htm "DemoSite\DemoApp Default Page"
Set-Content C:\DemoSite\DemoVirtualDir1\Default.htm "DemoSite\DemoVirtualDir1 Default Page"
Set-Content C:\DemoSite\DemoVirtualDir2\Default.htm "DemoSite\DemoApp\DemoVirtualDir2 Default Page"

Etapa 3: Criar novo pool de aplicativos

Crie o novo Pool de Aplicativos 'DemoAppPool' para o novo site se você excluiu o que criamos no exemplo anterior.

New-Item IIS:\AppPools\DemoAppPool

Observação

O cmdlet acima falhará se o módulo WebAdministration não tiver sido importado. Para fazer isso, você pode adicionar o seguinte cmdlet como a primeira etapa de um script que contém o cmdlet acima:

Import-Module "WebAdministration"

Etapa 4: Criar novos sites, aplicativos Web e diretórios virtuais e atribuir ao pool de aplicativos

Aí vem a carne. Criamos DemoSite, DemoApp e dois Diretórios Virtuais – DemoVirtualDir1 está diretamente abaixo de DemoSite e DemoVirtualDir2 está abaixo de DemoApp. Estamos atribuindo o DemoSite e o DemoApp ao DemoAppPool criado na etapa anterior. O DemoSite é atribuído à porta 8080 para não entrar em conflito com o 'Site Padrão'

New-Item IIS:\Sites\DemoSite -physicalPath C:\DemoSite -bindings @{protocol="http";bindingInformation=":8080:"}
Set-ItemProperty IIS:\Sites\DemoSite -name applicationPool -value DemoAppPool
New-Item IIS:\Sites\DemoSite\DemoApp -physicalPath C:\DemoSite\DemoApp -type Application
Set-ItemProperty IIS:\sites\DemoSite\DemoApp -name applicationPool -value DemoAppPool
New-Item IIS:\Sites\DemoSite\DemoVirtualDir1 -physicalPath C:\DemoSite\DemoVirtualDir1 -type VirtualDirectory
New-Item IIS:\Sites\DemoSite\DemoApp\DemoVirtualDir2 -physicalPath C:\DemoSite\DemoVirtualDir2 -type VirtualDirectory

Voila. Tudo o que resta é solicitar o conteúdo da Web.

Etapa 5: Solicitar o conteúdo da Web

É claro que você pode abrir o navegador e inserir http://localhost:8080/ e todas as outras URLs. Mas é um passo a passo do PowerShell e usaremos o PowerShell para fazer isso usando as classes .NET WebClient:

$webclient = New-Object Net.WebClient
$webclient.DownloadString("http://localhost:8080/");
$webclient.DownloadString("http://localhost:8080/DemoApp");
$webclient.DownloadString("http://localhost:8080/DemoVirtualDir1");
$webclient.DownloadString("http://localhost:8080/DemoApp/DemoVirtualDir2");

Se você se sentir aventureiro, também poderá usar o próprio objeto do Internet Explorer:

$ie = new-object -com InternetExplorer.Application
$ie.Visible = $true
$ie.Navigate("http://localhost:8080/");

Resumo

Neste passo a passo, você aprendeu a criar Sites, Aplicativos Web, Diretórios Virtuais e Pools de Aplicativos com o PowerShell. Recursos adicionais do PowerShell foram usados para criar um cenário funcional de ponta a ponta.