Compartilhar via


Snap-in do PowerShell: como usar os cmdlets baseados em tarefas do Snap-in do PowerShell do IIS

por Thomas Deml

Introdução

Os cmdlets do Snap-in do PowerShell do IIS podem ser agrupados em três categorias:

  • Cmdlets exigidos pela Hierarquia de Provedores
  • cmdlets de configuração de nível inferior
  • Cmdlets baseados em tarefa

Este passo a passo apresenta o cmdlet baseado em tarefa do IIS e fornece alguns exemplos de como usá-lo.

Cmdlets exigidos pela Hierarquia de Provedores

O IIS decidiu logo no início disponibilizar a configuração do IIS como uma hierarquia de Sites, Aplicativos, Diretórios Virtuais e Pools de Aplicativos. O benefício é que os clientes podem navegar até um local, por exemplo, um Site ou Aplicativo, na hierarquia e definir configurações nesse contexto. Para dar suporte a uma hierarquia de navegação, determinados cmdlets predefinidos do PowerShell, como New-Item, Set-ItemProperty etc. precisam ser implementados. A hierarquia e esses cmdlets internos foram enviados na Versão Beta 1 em abril de 2008.

Cmdlets de configuração de nível inferior

O sistema de configuração do IIS foi completamente revisado na versão 7. O novo sistema de configuração é totalmente baseado em XML, orientado por esquema e completamente extensível. O novo Servidor FTP do IIS (FTP7) e muitos outros módulos do IIS, como o Reescritor de URL, WebDAV etc. aproveitam essa extensibilidade para conectar-se ao sistema de configuração do IIS.

Essa extensibilidade dificulta o envio de cmdlets com argumentos estáticos. Imagine o caso em que alguém estende uma seção de configuração existente. Por exemplo, alguém adiciona uma propriedade myFancyNewBehavior à seção de configuração do virtualDirectory. Sem revisar os cmdlets do IIS, fancyNewBehavior não seria configurável por meio dos cmdlets do Snap-in do PowerShell.

A Versão Beta 1 do Snap-in do PowerShell do IIS incluiu apenas cmdlets de nível inferior que levaram em conta a extensibilidade de configuração total. Cada configuração do IIS (mais de 100 seções de configuração com coleções, enumerações etc.) pode ser configurada usando esses cmdlets. Esses cmdlets de nível inferior também funcionam em relação à configuração personalizada, por exemplo, se você estendeu a configuração do IIS com sua própria seção de configuração.

Aqui está a lista de cmdlets de nível inferior que enviamos desde a Versão Beta 1 em abril de 2008:

Add-WebConfiguration                                                                               
Add-WebConfigurationProperty                                                                       
Begin-WebCommitDelay                                                                                  
Clear-WebConfiguration                                                                             
End-WebCommitDelay                                                                                    
Get-WebURL                                                                                            
Get-WebConfiguration                                                                               
Get-WebConfigurationProperty                                                                       
Get-WebItemState                                                                                   
Remove-WebConfigurationProperty                                                                    
Restart-WebItem                                                                                    
Set-WebConfiguration                                                                               
Set-WebConfigurationProperty   
Select-WebConfiguration                                                             
Start-WebItem                                                                                      
Stop-WebItem

Cmdlets baseados em tarefa

Aqui vem a notícia empolgante. Para tarefas diárias do IIS, como criar sites da web, habilitar o rastreamento de solicitações, adicionar um manipulador ou um módulo, o ideal é usar os cmdlets baseados em tarefas que vêm com o Snap-in do PowerShell do IIS. Aqui está uma lista dos cmdlets baseados em tarefa:

Add-WebConfigurationLock
Backup-WebConfiguration
Clear-WebRequestTracingSettings
ConvertTo-WebApplication
Disable-WebGlobalModule
Disable-WebRequestTracing
Enable-WebGlobalModule
Enable-WebRequestTracing
Get-WebAppDomain
Get-WebApplication
Get-WebAppPoolState
Get-WebBinding
Get-WebConfigFile
Get-WebConfigurationBackup
Get-WebConfigurationLocation
Get-WebConfigurationLock
Get-WebFilePath
Get-WebGlobalModule
Get-WebHandler
Get-WebItemState
Get-WebManagedModule
Get-WebRequest
Get-Website
Get-WebsiteState
Get-WebURL
Get-WebVirtualDirectory
New-WebApplication
New-WebAppPool
New-WebBinding
New-WebFtpSite
New-WebGlobalModule
New-WebHandler
New-WebManagedModule
New-Website
New-WebVirtualDirectory
Remove-WebApplication
Remove-WebAppPool
Remove-WebBinding
Remove-WebConfigurationBackup
Remove-WebConfigurationLocation
Remove-WebConfigurationLock
Remove-WebGlobalModule
Remove-WebHandler
Remove-WebManagedModule
Remove-Website
Remove-WebVirtualDirectory
Rename-WebConfigurationLocation
Restart-WebAppPool
Set-WebBinding
Set-WebGlobalModule
Set-WebHandler
Set-WebManagedModule
Start-WebAppPool
Start-Website
Stop-WebAppPool
Stop-Website

Ajuda para os cmdlets baseados em tarefa

'Usar o sistema de ajuda interno é a maneira mais fácil de descobrir quais cmdlets estão disponíveis e como usá-los. O comando a seguir lista todos os cmdlets do IIS.

get-command -pssnapin WebAdministration

Outra maneira é procurar o prefixo -Web que usamos para todos os cmdlets do IIS. Experimente este comando:

get-command *-Web*

O sistema de ajuda interno fornece uma descrição rápida sobre um cmdlet individual, sobre os parâmetros e argumentos necessários e tem exemplos de como usar o cmdlet. Experimente o seguinte:

get-help New-WebSite

Para receber a ajuda completa sobre um determinado cmdlet, insira o seguinte:

get-help New-Website -full

Se você quiser ver apenas um exemplo de como usá-lo, experimente o seguinte comando:

get-help New-Website -example

Exemplo de ponta a ponta

O poder dos cmdlets baseados em tarefa aparece quando você o usa para um cenário de ponta a ponta. No exemplo a seguir, criaremos um novo site, adicionaremos um conteúdo ao site, faremos algumas alterações de configuração, habilitaremos o Rastreamento de Solicitações e solicitaremos a nova página de conteúdo.

Etapa 1: Criar um novo site

Digite os seguintes comandos:

PS IIS:\>mkdir "$env:systemdrive\inetpub\MyNewWebSite"

Isso cria um novo diretório físico para nosso novo site.

PS IIS:\>New-Website -name "MyNewWebSite" -PhysicalPath "$env:systemdrive\inetpub\MyNewWebSite" -port 81

A linha acima cria um novo site apontando para o diretório recém-criado e escutando na porta 81.

Etapa 2: Adicionar conteúdo ao site

Os comandos a seguir navegarão pelo namespace do IIS e criarão um novo arquivo de conteúdo.

PS IIS:\>cd IIS:\sites\MyNewWebsite

O comando acima navega até o nó MyNewWebSite no namespace do IIS.

PS IIS:\Sites\MyNewWebSite> dir

O comando acima lista todo o conteúdo do novo site. Ele não mostrará nada porque não há conteúdo.

PS IIS:\Sites\MyNewWebSite> notepad "$(Get-WebFilePath .)\test.htm"

O comando acima abre o bloco de notas e permite editar test.htm. Em vez de ter que se lembrar do caminho físico do seu site. Insira um texto, por exemplo, "Olá, Mundo" e salve o arquivo no bloco de notas.

PS IIS:\Sites\MyNewWebSite> dir

Se você inserir o comando dir novamente, ele mostrará o arquivo recém-criado test.htm.

PS IIS:\Sites\MyNewWebSite> Get-WebURL -content ".\test.htm"

O comando acima fará uma solicitação HTTP para o site recém-criado e retornará o conteúdo inserido no bloco de notas.

Etapa 3: Como habilitar o Rastreamento de Solicitações

IMPORTANTE: Para que este exemplo funcione, o recurso de Rastreamento do IIS precisa ser habilitado. No Windows Vista, abra o Painel de Controle, clique em "Programas", selecione "Ativar ou desativar recursos do Windows". Localize e selecione "Rastreamento" em "Serviços de Informações da Internet", "Serviços da World Wide Web", "Integridade e Diagnóstico" e clique em "OK".

Como última etapa, estamos habilitando o Rastreamento de Solicitações. O Rastreamento de Solicitações da Web é um recurso do IIS que permite obter um log detalhado do que aconteceu durante a execução de uma solicitação. Esse recurso é extremamente valioso para muitos cenários de solução de problemas. Para habilitar o Rastreamento de Solicitações da Web, precisamos apenas executar outro cmldet com reconhecimento de localização chamado Enable-WebRequestTracing.

PS IIS:\Sites\MyNewWebSite> Enable-WebRequestTracing

Agora vamos examinar o arquivo web.config para ver qual configuração foi gravada pelo cmdlet Enable-WebRequestTracing. Fazemos isso usando o cmdlet Get-WebConfigFile, que também tem reconhecimento de localização:

PS IIS:\Sites\MyNewWebSite> notepad (Get-WebConfigFile)

A configuração é parecida com esta:

Conteúdo do arquivo web.config

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <tracing>
            <traceFailedRequests>
                <add path="*">
                    <traceAreas>
                        <add provider="ASPNET" areas="Infrastructure,Module,Page,AppServices" verbosity="Verbose" />
                    </traceAreas>
                    <failureDefinitions timeTaken="00:00:30" statusCodes="200-500" verbosity="Warning" />
                </add>
            </traceFailedRequests>
        </tracing>
    </system.webServer>
</configuration>

A configuração importante é a regra failureDefinitions. Por padrão, um arquivo de rastreamento é gerado quando o código de erro está entre 200 e 500 ou quando a solicitação leva mais de 30 segundos. Vamos emitir uma solicitação que gera uma resposta no intervalo de erros 200-500 executando o seguinte comando:

PS IIS:\Sites\MyNewWebSite>Get-WebURL -url http://localhost:81/URL_DOES_NOT_EXIST

Uma solicitação para um recurso não existente gera um erro 404. Para examinar o arquivo de rastreamento, é necessário navegar até o seguinte local:

PS IIS:\Sites\MyNewWebSite>cd "$env:systemdrive\inetpub\logs\failedReqLogfiles\w3svc2\"

Agora você pode examinar o arquivo de rastreamento abrindo o arquivo xml no Internet Explorer:

PS C:\inetpub\logs\FailedReqLogFiles\W3SVC2>&"$env:programfiles\Internet Explorer\iexplore.exe" "$env:systemdrive\inetpub\logs\failedReqLogfiles\w3svc2\fr000001.xml"

Resumo

Os novos cmdlets baseados em tarefas fornecerão aos Administradores uma maneira fácil de realizar a tarefa diária do IIS com o PowerShell. Os cmdlets oferecem reconhecimento de localização e sintaxe e ajuda intuitivas.

Os cmdlets de nível inferior do IIS enviados desde a Versão Beta 1 ainda permitirão tarefas de Administração do IIS mais avançadas.