Gerenciando Pools de Aplicativos 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.

Para gerenciar um conjunto potencialmente grande de pools de aplicativos em um servidor web IIS, para onde você se vira? 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 conforme necessário.

Vamos passar por alguns exemplos de como fazer isso.

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, esse não é o caso.

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

Relacionado: Invoke-Command: A Melhor Forma 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.

OBSERVAÇÃO: 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 os Pools de Aplicativos do IIS com o PowerShell

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

PS> Import-Module WebAdministration

Isso traz todos os cmdlets do IIS, além de criar a unidade IIS. É aqui que a maioria da configuração do pool de aplicativos será realizada. 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 IIS com PowerShell

Parece que 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 tempo de execução do .NET com o pool de aplicativos. Novamente, usando a unidade IIS, posso usar Set-ItemProperty para gerenciar pools de aplicativos como faço com o sistema de arquivos, registro, certificados e todas as outras coisas que têm uma unidade PowerShell.

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

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

Removendo Pools de Aplicativos com PowerShell

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

Remove-WebAppPool -Name MyAppPool

Todo esse código que temos usado foi executado localmente, mas e se você precisar executá-lo em um servidor IIS remoto? É aqui que entra o PowerShell remoto. Para fazer isso, precisaremos simplesmente agrupar todo esse código em um bloco de script e, em seguida, usar 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 aplicativos chamado MyAppPool, definiria uma propriedade e, em seguida, o removeria. Você notará que estou usando a variável $using. Como o código no bloco de script será executado em um computador remoto, isso é necessário para o PowerShell expandir essa variável e usar o valor real de $appPoolName que foi declarado localmente em nosso computador cliente.

Se você quiser saber mais sobre a administração do IIS em geral, confira a página de Administração do IIS no Technet. Lá você encontrará todos os cmdlets incluídos no módulo WebAdministration e como usá-los.

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