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.
- Mínimo do Windows PowerShell 5.1 ou PowerShell 6+
- Módulo PowerShell do IISAdministration da PowerShell Gallery
- Recurso do Windows IIS 10.0 Habilitado

É 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.
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.

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.
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.
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.
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.*
Assim que o site for criado, você pode executar Get-IISSite
para inspecionar como ele se parece, como 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 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.

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.
Um exemplo de inspecionar o estado do site como Iniciado
, parar e inspecionar o estado novamente é mostrado abaixo. Neste exemplo, você está:
- Obtendo o status do site MyWebsite usando
Get-IISSite
. - 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. - Executando o
Get-IISSite
novamente para verificar se o site MyWebsite está parado, observando o estadoParado
.

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.

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
.
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.

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.
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.

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
.
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 vinculação, pode referenciar especificamente a propriedade bindingInformation
, conforme mostrado abaixo.

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.
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.
Ao executar o código, você será solicitado a confirmar sua decisão, pois está realizando uma ação destrutiva, conforme mostrado abaixo.

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
.

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.

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.
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.

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.

-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!