Se você gerencia servidores Windows, provavelmente já trabalhou com o Serviço de Informações da Internet (IIS). Os sites são uma das principais características do IIS, e, usando o PowerShell, você pode gerenciar e automatizar facilmente o IIS com scripts do PowerShell IIS!
Neste artigo, você será apresentado a uma nova maneira de gerenciar o IIS usando o PowerShell. Utilizando as técnicas deste artigo, você pode facilmente criar scripts do PowerShell IIS para criar e gerenciar sites no IIS.
Para gerenciar o IIS com PowerShell, é necessário um dos dois módulos do PowerShell – WebAdministration ou IISAdministration. Este artigo aborda o módulo mais moderno, IISAdministration. Um vídeo complementar a este artigo demonstra o módulo mais antigo, WebAdministration, caso prefira uma abordagem alternativa.
Saber como gerenciar até mesmo um site simples para sua empresa ou para o mundo em geral o distinguirá dos demais. As seções a seguir neste artigo ajudarão você a aprender como criar e gerenciar um site no IIS. Você também aprenderá como gerenciar pools de aplicativos da web usando alguns cmdlets do PowerShell.
IISAdministration vs. Módulos WebAdministration
Você tem duas opções para gerenciar o IIS. Você pode usar WebAdministration ou IISAdministration. Mas qual deles deve usar?
Se estiver 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 escalabilidade.
- Comparados aos antigos cmdlets WebAdministration do IIS, os cmdlets do IISAdministration contêm código mais eficiente.
- Os cmdlets do IISAdministration são mais simples e proporcionam acesso direto ao gerenciador do servidor.
Este artigo vai se concentrar neste módulo mais recente do IISAdministration.
Pré-requisitos
Este artigo será prático. Se você pretende seguir junto, certifique-se de ter os seguintes pré-requisitos em vigor.
- Mínimo de Windows PowerShell 5.1 ou PowerShell 6+
- Módulo PowerShell IISAdministration da PowerShell Gallery
- Recurso do Windows IIS 10.0 Habilitado

É recomendável que você esteja familiarizado com o básico de HTML. Haverá um passo em que o uso de HTML desempenha um papel nos exemplos a seguir. Mas não se preocupe, você poderá 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 e 2019 e funcionam com o Windows PowerShell 5.1.
Isso é tudo para as ferramentas utilizadas, agora para os recursos necessários para seguir adiante.
Instalando o Módulo IISAdministration
Assim que você tiver cumprido os pré-requisitos, é hora de fazer algumas configurações. Felizmente, não há muita configuração a ser feita, já que o módulo PowerShell necessário (IISAdministration) está disponível gratuitamente na Galeria do PowerShell.
Vá em frente e abra um console do PowerShell elevado em seu servidor web e instale o módulo usando o comando abaixo.
Se você não tiver acesso à internet, pode baixar o módulo para outro host e copiá-lo para o seu diretório de módulos. Dê uma olhada na documentação para o
Save-Module
comando.
Descobrindo Cmdlets Disponíveis
Como em qualquer módulo do PowerShell com o qual você possa não estar familiarizado, um dos primeiros cmdlets que você deve usar para descobrir o inventário de cmdlets de um módulo é 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 para realizar em sites, esses comandos lhe darão uma ideia de tudo mais que você pode fazer.

Agora você tem uma lista de cmdlets disponíveis. É hora de começar a montar um site.
Criando Seu Primeiro Site
Para ter um site para trabalhar, primeiro vamos criar um site. 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 que o IIS o exiba. Este diretório servirá como o diretório da web que será usado nos exemplos posteriores.
Criando a Pasta e 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:\MeuSite.
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 site.
Agora crie um arquivo chamado index.html no diretório C:\Meusite conforme mostrado abaixo.
Assim que o arquivo for criado, abra-o em 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.
Criando um Site IIS
Agora é hora de tornar a página da web recém-criada disponível 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ê pode usar o diretório padrão C:\inetpub\wwwroot para armazenar seus arquivos também, mas para esses exemplos, 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 New-IISSite
cmdlet. Esse cmdlet permite criar o site IIS.
Para este artigo, crie um site chamado Mywebsite 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
. Este parâmetro permite apenas sintaxe de vinculação. Neste trecho, New-IISSite
criará um site vinculado 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 vinculaçã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.*
Assim que o site for criado, você pode executar Get-IISSite
para inspecionar como ele se parece, conforme mostrado abaixo.

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 preferência 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.

Parabéns! Você acabou de configurar seu primeiro site no IIS usando o PowerShell!
Agora que você tem um site em funcionamento, é hora de aprender a gerenciar seu site e o servidor IIS que o hospeda.
Gerenciando o Site do IIS
Assim que um site estiver em funcionamento, você certamente 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 reiniciá-lo.
Para gerenciar o site no PowerShell, você tem dois cmdlets para trabalhar – Start-IISSite
e Stop-IISSite
. Esses dois cmdlets funcionam de maneira semelhante à forma como os cmdlets Stop-Service
e Start-Service
operam.
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 servido em uma porta exclusiva pelo IIS. No entanto, você não está parando o host do IIS. Os sites podem ser parados e iniciados individualmente.
Parar um Único Site
Para parar um site IIS, você usará o cmdlet Stop-IISSite
. Por padrão, o site que você criou anteriormente deve estar em estado Started
. Se você parar o site e, assim, impedir o acesso a MeuSite, execute Stop-IISSite
fornecendo o nome conforme mostrado abaixo. Este código interrompe o funcionamento do site MeuSite pelo IIS. Após parar o site, você não poderá mais acessá-lo.
Um exemplo de inspecionar o estado do site como Started
, parar e inspecionar o estado novamente é mostrado abaixo. Neste exemplo, você está:
- Obtendo o status do site MeuSite usando
Get-IISSite
. - Executando o cmdlet
Stop-IISSite
contra o site MeuSite. Este cmdlet desativa o acesso ao site. Como esta ação está realizando alterações operacionais, será solicitada uma confirmação. - Executando
Get-IISSite
novamente para verificar se o site MeuSite está parado, observando o estadoStopped
.

Parando Todos os Sites
Anteriormente, você parou um único site, mas também pode parar todos os sites da mesma maneira. Ao usar o pipeline e encaminhar 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 de switch opcional Verbose
é usado para mostrar mais informações.

Você também pode parar todos os sites no IIS ao interromper o W3SVC ou Serviço de Publicação na Web. Parar o serviço do Windows desliga o IIS e impede que todos os sites sejam servidos. No entanto, se fizer isso, os sites ainda podem mostrar que estão em estado Iniciado.
Iniciando um Único Site
Vamos dizer que você fez algumas alterações no site MyWebsite e precisa iniciá-lo novamente. É hora de usar o comando Start-IISSite
. Para fazer isso, basta especificar o nome da mesma forma que fez usando o cmdlet Stop-IISSite
.
Ao ser executado, você pode então inspecionar o estado novamente usando Get-IISSite
. Quando o fizer, deverá ver uma saída semelhante à captura de tela abaixo.

Get-IISSite
and starting the site with Start-IISSite
E agora seu site deve estar disponível novamente em http://localhost:8088 se você atualizar seu navegador.
Iniciando Todos os Sites
Assim como você parou todos os sites de serem publicados, você pode usar o pipeline para iniciar todos os sites em seu host IIS também.
Mais uma vez, você está obtendo todos os sites do IIS que estão sendo servidos e usando o pipeline para iniciar cada um. Sua saída deve se parecer com a captura de tela abaixo.

Gerenciando Vínculos Web
Agora é hora de realizar algumas tarefas administrativas comuns no site MyWebsite. Uma das tarefas mais comuns é alterar os vínculos da web.
Quando você criou o site MyWebsite, você usou a sintaxe de ligaçã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 deseja que o site escute na porta 9000. Para fazer isso, será necessário modificar as ligações do site.
Inspeção das Ligações Existentes
Antes de poder alterar as ligaçõ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 retornando apenas a propriedade Bindings
.
Ao inspecionar apenas a propriedade Bindings
, o PowerShell retornará um objeto com algumas informações diferentes, conforme mostrado abaixo.

Se você deseja ver apenas as informações de ligação, pode fazer referência específica à propriedade bindingInformation
, como mostrado abaixo.

Remoção de Ligações
Se deseja alterar a porta em que um site escuta, primeiro deve remover a ligação existente associada a essa porta. Para remover a ligação, é necessário primeiro parar o site.
Assim que o site estiver parado, você pode remover a ligação existente que conecta o site MyWebsite à porta 8088. Para fazer isso, pode usar o Remove-IISSiteBinding
cmdlet.
Para remover a ligação para MyWebsite conforme definido anteriormente, abaixo você pode ver um exemplo de como usar Remove-IISSiteBinding
para fazer isso. Abaixo, você está fornecendo o nome do site e especificando a sintaxe de ligação descoberta anteriormente.
Ao executar o código, você será solicitado a confirmar sua decisão, pois está fazendo algo destrutivo, como mostrado abaixo.

Não há limite para quantas ligações você pode ter. Você também poderia ter mantido a ligação original e adicionado a porta TCP 9000 como uma nova ligação.
Agora você pode executar Get-IISSite -Name 'MyWebsite'
novamente. Agora você verá que as informações de ligação foram removidas, como mostrado pelo valor em branco em Bindings
.

Mesmo que o site esteja publicado, o IIS não tem como rotear o tráfego para o seu site.
É importante ter pelo menos uma ligação atribuída ao seu site. Para mostrar a importância, tente navegar para http://localhost:8088/index.html novamente. Se estiver usando o navegador da web Mozilla Firefox, você pode ver esta mensagem abaixo.

Criando Novas Ligações
Na última seção, você removeu a única ligação do site MyWebsite. Embora isso tenha quebrado o site, é apenas um problema temporário. É hora de corrigir esse problema criando uma nova ligação.
Para criar uma nova ligação, use o cmdlet New-IISSiteBinding
. Como você precisa vincular a porta 9000 ao site MyWebsite agora, especifique a sintaxe de ligação correta como mostrado abaixo.
Assim que você criar o novo vínculo, inicie o site novamente com Start-IISSite
. Lembre-se de que para criar este novo vínculo, o IIS exigiu que o site fosse encerrado.
Quando o site iniciar novamente, você deverá conseguir acessá-lo na porta 9000. Para verificar isso, abra o navegador da web de sua escolha e acesse http://localhost:9000. Agora você deverá ver que a página da web está funcionando novamente na porta 9000.

Removendo um Site
Se você acabou de passar por um tutorial e não pretende manter o site MyWebsite permanentemente, é hora de limpar. Para remover um site, use o cmdlet Remove-IISSite
.
Remover um site do IIS pode ser uma empreitada perigosa, especialmente se estiver removendo um site no IIS que hospeda outros sites de produção. Para verificar se está removendo o site certo, é recomendável usar o parâmetro WhatIf
comum do PowerShell. Este parâmetro permite que você inspecione o que teria acontecido se o comando realmente tivesse sido executado.
Você pode ver um exemplo de remoção do site MyWebsite usando o parâmetro WhatIf
abaixo.

-WhatIf
!Se tudo parecer correto, solte a barra de segurança e execute o código novamente, desta vez sem o parâmetro -WhatIf
.
Ao usar o cmdlet
Remove-IISSite
, o site não é excluído. Ele é removido da configuração do IIS. Os arquivos 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ê tem conhecimento suficiente sobre os conceitos básicos para trabalhar com qualquer host IIS moderno usando o PowerShell!