PowerShell IIS Mastery: Criar e Gerenciar Websites

Se você gerencia servidores Windows, provavelmente já trabalhou com o Serviços de Informações da Internet (IIS). Websites são uma das principais características do IIS e, usando o PowerShell, você pode facilmente gerenciar e automatizar o IIS com scripts do PowerShell IIS!

Neste artigo, você será apresentado a uma nova maneira de gerenciar o IIS usando o PowerShell. Usando as técnicas deste artigo, você pode facilmente construir scripts do PowerShell IIS para criar e gerenciar websites do IIS.

Para gerenciar o IIS com o PowerShell, você precisa de um dos dois módulos do PowerShell – WebAdminstration ou IISAdminstration. Este artigo aborda o módulo IISAdministration mais moderno. O vídeo complementar a este artigo demonstra o módulo WebAdministration mais antigo, caso você queira ver uma maneira alternativa.

Saber como gerenciar até mesmo um website simples para sua empresa ou para o mundo em geral irá diferenciá-lo dos seus colegas. As seguintes seções deste artigo irão ajudá-lo a aprender como criar e gerenciar um website no IIS. Você também aprenderá como gerenciar pools de aplicativos da web usando alguns cmdlets do PowerShell.

Módulos IISAdministration vs WebAdministration

Você tem duas opções para gerenciar o IIS. Você pode usar o WebAdministration ou o IISAdministration. Mas qual você deve usar?

Se você está usando o IIS 10.0 ou superior, o novo módulo IISAdministration oferece muitas melhorias em relação ao antigo módulo WebAdministration.

Aqui estão alguns destaques:

  • Os cmdlets do IISAdministration oferecem melhor suporte para o pipeline e têm uma melhor capacidade de escalonamento.
  • Comparados aos cmdlets mais antigos e legados do IIS WebAdministration, os cmdlets do IISAdministration contêm um código mais eficiente.
  • Os cmdlets do IISAdministration são mais simples e proporcionam acesso direto ao gerenciador do servidor.

Este artigo vai focar neste módulo mais recente do IISAdministration.

Pré-requisitos

Este artigo será prático. Se pretende seguir junto, certifique-se de ter os seguintes pré-requisitos em vigor.

The Windows 10 “Turn Windows features on or off” dialogue

É recomendável que você esteja familiarizado com o básico do HTML. Haverá um passo em que o uso de HTML desempenha um papel nos exemplos seguintes. Mas não se preocupe, você será capaz de copiar e colar o código!

Todos os exemplos neste post foram criados usando o IIS 10.0 no Windows 10 e o PowerShell 7 Preview 6. Os cmdlets do IISAdministration são os mesmos para o Windows Server 2016 & 2019 e funcionam com o Windows PowerShell 5.1.

Isso é tudo para as ferramentas utilizadas, agora para os recursos necessários para acompanhar.

Instalando o Módulo do IISAdministration

Assim que tiver cumprido os pré-requisitos, é hora de fazer algum trabalho de configuração. Felizmente, não há muita configuração a ser feita, já que o módulo PowerShell de que você precisa (IISAdministration) está disponível gratuitamente na PowerShell Gallery.

Prossiga e abra um console PowerShell elevado no seu servidor web e instale o módulo usando o comando abaixo.

PS> Install-Module -Name 'IISAdministration'

Se você não tiver acesso à internet, pode baixar o módulo para outro host e copiá-lo para o diretório de módulos. Dê uma olhada na documentação para o comando Save-Module.

Descobrindo Cmdlets Disponíveis

Como acontece com qualquer módulo PowerShell com o qual você pode não estar familiarizado, um dos primeiros cmdlets que você deve usar para descobrir o inventário de cmdlets de um módulo é o Get-Command. Usar o comando Get-Command -Module 'IISAdministration', como mostrado abaixo, permitirá que você veja o que é possível com este módulo.

Mesmo que você esteja aprendendo algumas ações comuns a serem realizadas em sites, esses comandos lhe darão uma ideia de tudo mais que você pode fazer.

Get-Command -Module ‘IISAdministration’ results

Agora que você tem uma lista de cmdlets disponíveis, é hora de começar a montar um site.

Criando Seu Primeiro Site

Para ter um website em funcionamento, primeiro vamos criar um website. Para fazer isso, o primeiro passo é criar um diretório para salvar o conteúdo da web. Além disso, você precisará de um arquivo HTML nesse diretório para o IIS exibir. Este diretório servirá como o diretório da web que será usado em exemplos posteriores.

Criando a pasta e a página da web

Primeiro, crie um diretório. Para fazer isso, você pode usar o cmdlet New-Item. O código abaixo criará um diretório em C:\MeuWebsite.

PS> New-Item -ItemType Directory -Name 'MyWebsite' -Path 'C:\'

Você pode escolher qualquer caminho desejado com o código acima. Para manter as coisas simples, serão usados caminhos genéricos.

Depois de criar o diretório, é hora de criar um arquivo HTML que será a página inicial do seu novo website.

Agora crie um arquivo chamado index.html no diretório C:\MeuWebsite conforme mostrado abaixo.

PS> New-Item -ItemType File -Name 'index.html' -Path 'C:\MyWebsite\'

Depois de criar o arquivo, abra-o no seu editor favorito e copie e cole o código abaixo nesse documento. Este HTML é uma página simples que será usada para garantir que o IIS esteja configurado corretamente quando você terminar.

<!DOCTYPE html>
<html>
    <head>
         <title>IIS Administration With PowerShell Demo</title>
    </head>
    <body>
        <h1>IIS Administration with PowerShell Demo</h1>
        <p>Thank you for reading this post on how to administer IIS with PowerShell!</p>

        <p>This page was created using the newer IISAdministration PowerShell module.</p>
        <h2>First Steps</h2>
        <p>Keep calm and learn PowerShell.</p>
    </body>
</html>

Criando um website no IIS

Agora é hora de disponibilizar a página da web que acabou de criar para o mundo ver. Para fazer isso, você precisará criar um diretório virtual. O diretório virtual contém todos os ativos e recursos usados para a página que está sendo servida.

Por padrão, o IIS cria um diretório virtual em C:\inetpub\wwwroot. O diretório contém todos os ativos e recursos padrão da página da web para o IIS. Você também pode usar o diretório padrão C:\inetpub\wwwroot para armazenar seus arquivos, mas para esses exemplos, ele não será usado para manter os caminhos o mais curtos possível. É por isso que você está usando C:\MyWebsite.

Para criar um novo diretório virtual (site), use o cmdlet New-IISSite. Esse cmdlet permite criar o site do IIS.

Para este artigo, crie um site chamado MeuWebsite apontando para o diretório C:\MyWebsite que está ouvindo na porta 8088. No trecho de código abaixo, você pode ver como fazer isso usando o cmdlet New-IISSite.

A única parte que pode ser confusa é o parâmetro BindingInformation. Esse parâmetro permite apenas sintaxe de associação. Neste trecho, New-IISSite irá criar um site que está associado a um endereço IP (* é o mesmo que 127.0.0.1), a porta TCP para ouvir seguida por quaisquer cabeçalhos HTTP.

A sintaxe de associação pode ser explicada como protocolo, seguido por origem:Porta:destino. Neste exemplo, você configurou o IIS para ouvir solicitações HTTP de QUALQUER () endereço IP na porta 8088 e o destino é o localhost.*

PS> New-IISSite -Name 'MyWebsite' -PhysicalPath 'C:\MyWebsite\' -BindingInformation "*:8088:"

Assim que o site for criado, você pode executar Get-IISSite para inspecionar como ele se parece, como mostrado abaixo.

Creating a New Website in IIS

Por padrão, a configuração do site é iniciada e seu host da web começa a atender essas solicitações HTTP. Abra o navegador de sua escolha e acesse a máquina local apontando para a porta 8088. Agora você deverá ver a página da web que criou anteriormente sendo exibida.

MyWebSite IIS site in a web browser

Parabéns! Você acabou de configurar seu primeiro site no IIS usando o PowerShell!

Agora que você tem um site funcionando, é hora de aprender a gerenciar seu site e o servidor IIS que o hospeda.

Gerenciando o Site do IIS

Depois que um site estiver funcionando, você sem dúvida precisará realizar ações comuns como parar e iniciar o site. Por exemplo, se o site precisar de atualizações, às vezes será necessário reiniciar o site.

Para gerenciar o site no PowerShell, você tem dois cmdlets para trabalhar – Start-IISSite e Stop-IISSite. Esses dois cmdlets funcionam de forma semelhante ao Stop-Service e Start-Service.

Parar um site é semelhante a parar um serviço do Windows. Você está impedindo ou permitindo o acesso ao site acessível por um protocolo sendo atendido em uma porta única pelo IIS. No entanto, você não está parando o host do IIS. Os sites podem ser parados e iniciados em uma base individual.

Parar um único site

Para parar um site do IIS, você usará o cmdlet Stop-IISSite. Por padrão, o site que você criou anteriormente deve estar no estado Iniciado. Se você parar o site e assim impedir o acesso ao MyWebsite, execute o Stop-IISSite fornecendo o nome conforme mostrado abaixo. Este código impede que o site MyWebsite seja servido pelo IIS. Depois de parar o site, você não poderá mais acessá-lo.

PS> Stop-IISSite -Name "MyWebsite"

Um exemplo de inspecionar o estado do site como Iniciado, parar e inspecionar o estado novamente é mostrado abaixo. Neste exemplo, você está:

  1. Obtendo o status do site MyWebsite usando Get-IISSite.
  2. Executando o cmdlet Stop-IISSite no site MyWebsite. Este cmdlet interrompe o acesso ao site. Como essa ação está fazendo alterações operacionais, você será solicitado a confirmar.
  3. Executando o Get-IISSite novamente para verificar se o site MyWebsite está parado, observando o estado Parado.
Getting, stopping, and confirming MyWebsite state

Parando todos os sites

Acima, você parou um único site, mas também pode parar todos os sites com a mesma facilidade. Usando o pipeline e encaminhando a saída de Get-IISSite para Stop-IISSite, o PowerShell enumerará todos os sites e os interromperá. No exemplo de código abaixo, o parâmetro opcional Verbose é usado para mostrar mais informações.

Get-IISSite | Stop-IISSite -Verbose
Stopping all IIS sites with PowerShell

Você também pode parar todos os sites no IIS parando o W3SVC ou World Wide Web Publishing Service. Parar o serviço do Windows desliga o IIS e impede que todos os sites sejam servidos. No entanto, se você fizer isso, os sites ainda podem aparecer como estando em estado Iniciado.

Iniciando um único site

Vamos supor que você fez algumas alterações no site MeuSite e precisa iniciá-lo novamente. É hora de usar o comando Start-IISSite. Para fazer isso, simplesmente especifique o nome da mesma forma que você fez usando o cmdlet Stop-IISSite.

PS> Start-IISSite -Name 'MyWebsite'

Quando executado, você pode inspecionar o estado novamente usando o comando Get-IISSite. Ao fazer isso, você deverá ver uma saída semelhante à captura de tela abaixo.

Checking the status of MyWebsite using Get-IISSite and starting the site with Start-IISSite

E agora o seu site deve estar disponível novamente em http://localhost:8088 se você atualizar o seu navegador.

Iniciando todos os sites

Da mesma forma que você parou todos os sites de serem publicados, você pode usar o pipeline para iniciar todos os websites no seu host do IIS também.

PS> Get-IISSite | Start-IISSite

Mais uma vez, você está obtendo todos os sites do IIS que estão sendo servidos e usando o pipeline para iniciar cada um. A saída deve ser semelhante à captura de tela abaixo.

Using the pipeline to start all sites on host

Gerenciando ligações web

Agora é hora de começar a realizar algumas tarefas administrativas comuns no site MeuSite. Uma das tarefas mais comuns é alterar as ligações web.

Quando você criou o site MyWebsite, você usou a sintaxe de vinculação *:8088:. Essa sintaxe representava a escuta no endereço IP 127.0.0.1, na porta 80 sem cabeçalhos HTTP. Vamos dizer que agora você decidiu que, em vez disso, quer que o site escute na porta 9000. Para fazer isso, você precisará modificar as vinculações do site.

Inspeção das Vinculações Existentes

Antes de poder alterar as vinculações do site, você deve primeiro inspecionar a configuração atual. Uma maneira de fazer isso é inspecionar a propriedade Binding retornada por Get-IISSite. Observe no trecho de código a seguir como fazer isso. No trecho, Get-IISSite está consultando o site MyWebSite e apenas retornando a propriedade Bindings.

PS> (Get-IISSite -Name 'MyWebsite').Bindings

Ao inspecionar apenas a propriedade Bindings, o PowerShell retornará um objeto com algumas informações diferentes, conforme mostrado abaixo.

Example 1: Finding binding information

Se você deseja ver apenas as informações de vinculação, pode referenciar especificamente a propriedade bindingInformation, conforme mostrado abaixo.

Example 2: Finding binding information

Removendo Vinculações

Se você deseja alterar em qual porta um site escuta, primeiro deve remover a vinculação existente que o liga a essa porta. Para remover a vinculação, primeiro você precisa parar o site.

PS> Stop-IISSite -Name 'MyWebsite'

Depois que o site estiver parado, agora você pode remover a vinculação existente que liga o site MyWebsite à porta 8088. Para fazer isso, você pode usar o Remove-IISSiteBinding cmdlet.

Para remover a associação para MyWebsite conforme definido anteriormente, abaixo você pode ver um exemplo de uso do comando Remove-IISSiteBinding para fazer exatamente isso. Abaixo, você fornece o nome do site e especifica a sintaxe de associação descoberta anteriormente.

PS> Remove-IISSiteBinding -Name 'MyWebsite' -BindingInformation "*:8088:"

Ao executar o código, você será solicitado a confirmar sua decisão, pois está realizando uma ação destrutiva, conforme mostrado abaixo.

Removing site binding using Verbose parameter

Não há limite para quantas associações você pode ter. Você poderia facilmente manter a associação original e adicionar a porta TCP 9000 como uma nova associação.

Agora você pode executar novamente Get-IISSite -Name 'MyWebsite'. Você verá que as informações de associação foram removidas, como mostrado pelo valor em branco em Bindings.

Confirming the old bindings were removed

Mesmo que o site esteja publicado, o IIS não sabe como direcionar o tráfego para seu site.

É importante ter pelo menos uma associação atribuída ao seu site. Para mostrar a importância, tente navegar para http://localhost:8088/index.html novamente. Se você estiver usando o navegador da web Mozilla Firefox, poderá ver esta mensagem abaixo.

Can’t establish a connection

Criando Novas Associações

Na última seção, você removeu a única associação de site que MyWebsite tinha. Embora isso tenha quebrado o site, é apenas um problema temporário. É hora de corrigir esse problema criando uma nova associação.

Para criar uma nova associação, use o cmdlet New-IISSiteBinding. Como você precisa vincular a porta 9000 ao site MyWebsite agora, especifique a sintaxe de associação correta, conforme mostrado abaixo.

PS> New-IISSiteBinding -Name 'MyWebsite' -BindingInformation "*:9000:"

Assim que criar a nova ligação, inicie o site novamente com Start-IISSite. Lembre-se de que, para criar esta nova ligação, o IIS exigiu que o site fosse desativado.

Quando o site iniciar novamente, agora deverá conseguir aceder a ele na porta 9000. Para verificar isso, abra o navegador da web de sua escolha e vá para http://localhost:9000. Agora deverá ver que a página da web está funcionando novamente na porta 9000.

Same page, different TCP port

Remover um Site

Se acabou de seguir um tutorial e não pretende manter o site MyWebsite permanentemente, é hora de o limpar. Para remover um site, utilize o cmdlet Remove-IISSite.

Remover um site do IIS pode ser uma tarefa perigosa, especialmente se estiver a remover um site no IIS que está a hospedar outros sites de produção. Para garantir que está a remover o site correto, recomenda-se utilizar o parâmetro comum do PowerShell WhatIf. Este parâmetro permite que inspecione o que teria acontecido se o comando tivesse sido efetivamente executado.

Pode ver um exemplo de remoção do site MyWebsite utilizando o parâmetro WhatIf abaixo.

Remove-IISSite -Name 'MyWebSite' -WhatIf
Being careful with destructive cmdlets by using -WhatIf !

Se tudo parecer bem, solte a barra de segurança e execute o código novamente, desta vez sem o parâmetro -WhatIf.

Ao utilizar o cmdlet Remove-IISSite, o site não é apagado. É removido da configuração do IIS. Os ficheiros do site permanecem intactos.

Resumo

Neste artigo, você aprendeu a criar um site usando o módulo IISAdministration. Você viu como realizar operações administrativas necessárias para manter um site. Agora, você já tem conhecimento suficiente sobre os conceitos básicos para trabalhar com qualquer host moderno do IIS usando o PowerShell!

Leitura Adicional

Source:
https://adamtheautomator.com/powershell-iis/