Gerenciando Pools de Aplicativos do IIS: Um Tutorial do PowerShell

Precisa ficar de olho nos pools de aplicativos do seu servidor web IIS? Aqui está um guia sobre como criar um pool de aplicativos no IIS com o PowerShell.

Onde você se vira quando está gerenciando uma fazenda de servidores web IIS com potencialmente dezenas ou centenas de pools de aplicativos? Scripts do PowerShell, é claro! Ao usar o módulo WebAdministrationPowerShell que vem instalado como parte do IIS e um pouco de remoting do PowerShell, você pode facilmente criar, modificar e remover pools de aplicativos a seu bel-prazer.

Vamos passar por alguns exemplos de como fazer isso acontecer.

Se você nunca usou o PowerShell para gerenciar seus servidores IIS antes, sua primeira inclinação pode ser procurar por um ComputerName na maioria dos cmdlets. Infelizmente, este não é o caso.

Para gerenciar servidores IIS remotamente, somos forçados a usar remoting do PowerShell com o cmdlet Invoke-Command. Embora isso não seja um impeditivo, ele torna o código um pouco mais verboso do que poderia ser. Isso não é para desencorajá-lo a gerenciar servidores IIS remotos com PowerShell, mas é mais um aviso.

Relacionado: Invoke-Command: A Melhor Maneira de Executar Código Remoto

I know I was pretty frustrated the first time I tried this and didn’t see that familiar ComputerName parameter on many of the cmdlets.

NOTA: Daqui para frente, estaremos construindo código para inserir em um scriptblock. Em seguida, usaremos Invoke-Command para executar este scriptblock no servidor IIS remoto.

Listando Pools de Aplicativos do IIS com PowerShell

Para gerenciar pools de aplicativos da web, primeiro precisamos importar o módulo WebAdministration.

PS> Import-Module WebAdministration

Isso traz todos os cmdlets do IIS e cria a unidade IIS. É aqui que a maior parte da configuração do pool de aplicativos será feita. Vamos primeiro verificar se já existem pools de aplicativos.

PS> Get-ChildItem -Path IIS:\AppPools
 
 Name  State. Applications
 ----- ------ -------------
 GHI  Started

Criando novos pools de aplicativos do IIS com o PowerShell

Parece que eu já tenho um chamado GHI. Talvez eu queira criar outro. Usar a unidade IIS torna isso tão fácil. Basta usar New-Item e especificar o caminho.

PS> New-Item -Path IIS:\AppPools\MyAppPool
 
 Name      State.  Applications
 -----     ------  -------------
 MyAppPool Started

Inspeção e modificação das propriedades do pool de aplicativos

I’ve now created a new app pool. We can then check all of the properties on that app pool using Get-ItemProperty and select all of the properties it returns with Select-Object. This will return all of the property names and values so you can get figure out which ones you need to modify with Set-ItemProperty.

Get-ItemProperty IIS:\AppPools\MyAppPool | select *

Agora que você tem um pool de aplicativos e pode ver as propriedades, vamos modificar uma propriedade. Talvez eu queira usar uma versão específica do .NET runtime com o pool de aplicativos. Novamente, usando a unidade IIS, posso usar Set-ItemProperty para gerenciar pools de aplicativos como posso fazer com o sistema de arquivos, registro, certificados e todas as outras coisas que têm uma unidade do PowerShell.

PS> Set-ItemProperty -Path IIS:\AppPools\MyAppPool -Name managedRuntimeVersion -Value 'v4.0'

Usando Set-ItemProperty, você pode modificar quase todas as propriedades de um pool de aplicativos.

Removendo pools de aplicativos com o PowerShell

Finalmente, terminamos com nosso pool de aplicativos e agora precisamos removê-lo. Desta vez, temos um cmdlet do PowerShell integrado chamado Remove-WebAppPool. Basta especificar o nome e ele desaparece!

Remove-WebAppPool -Name MyAppPool

Todo este código que temos estado a utilizar foi executado localmente, mas e se precisar de executá-lo num servidor IIS remoto? É aqui que entra o PowerShell remoting. Para fazer isso, precisaremos apenas de agrupar todo este código num bloco de script e depois usar o Invoke-Command para executá-lo no servidor remoto.

$appPoolName = 'MyAppPool'
 $scriptBlock = {
    Import-Module WebAdministration
    New-Item -Path IIS:\AppPools\$using:appPoolName
    Set-ItemProperty -Path IIS:\AppPools\$using:appPoolName -Name managedRuntimeVersion -Value 'v4.0'
    Remove-WebAppPool -Name $using:appPoolName
 }
 
 Invoke-Command -ComputerName SOMEIISSERVER -ScriptBlock $scriptBlock

Embora não seja muito funcional, este código criaria um novo pool de aplicações chamado MyAppPool, definiria uma propriedade e depois o removeria. Você notará que estou a usar a variável $using. Como o código no bloco de script vai ser executado num computador remoto, isso é necessário para o PowerShell expandir essa variável e usar o valor real de $appPoolName que foi declarado localmente no nosso computador cliente.

Se quiser aprender mais sobre a gestão do IIS em geral, consulte a página de Administração IIS no Technet. Lá encontrará todos os cmdlets incluídos no módulo WebAdministration e como pode utilizá-los.

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