7 de set. de 2011

Manipulando IIS com Powershell

image

Ultimamente tenho trabalhado bastante com Powerhell Powershell devido a uma consultoria no módulo de Build do TFS. O legal desse módulo é que você pode interagir com scripts Powershell e variáveis do Work Flow que o TFS utiliza durante um build.

O Powershell é muito poderoso, isso se deve ao fato dele usufruir das classes .NET, utilizar o Windows Remote Management (WinRM) para execução remota de scripts, e comandos nativos das versões mais atuais do prompt, como o ROBOCOPY.

image

Assim como no .NET, nós podemos instalar módulos adicionais, e até mesmo importar os já instalados. No caso do IIS devemos importar o módulo “WebAdministration” . Então segue alguns scripts para manipulação do IIS.

Import-Module WebAdministration;

#region Manipulação do IIS
       
    function PararPool([string] $poolName)
    {
        Stop-WebAppPool -Name $poolName;
    }
       
    function IniciarPool([string] $poolName)
    {
        Start-WebAppPool -Name $poolName;
    }
       
    function PararSite([string] $siteName)
    {
        $site = GetSite $siteName;
        $site.Stop();
    }
       
    function IniciarSite([string] $siteName)
    {
        $site = GetSite $siteName;
        $site.Start();
    }
       
    function GetSite($siteName)
    {   
        $site = Get-Item IIS://Sites/$siteName -ErrorAction SilentlyContinue;
        return $site;
    }
       
    function GetDirectorySite($site)
    {
        (Get-Item IIS://Sites/$site).PhysicalPath;
    }
       
    function GetPoolSite($site)
    {
        $objSite = Get-Item IIS://Sites/$site;
        return $objSite.ApplicationPool;
    }
       
    function CriarSite([string] $siteName, [string] $caminho)
    {
        New-Item IIS:\AppPools\$siteName;
        New-Item IIS:\Sites\$siteName -bindings @{protocol="http";bindingInformation=":80:$siteName"} -physicalPath $caminho;
        Set-ItemProperty IIS:\Sites\$siteName -name applicationPool -value $siteName;
    }
       
#endregion

Os scripts foram testados no IIS 7 e 7.5.

image

É lógico que existem mil e uma maneiras de preparar neston atingir um objetivo.

image

É possível utilizar o Active Directory Service Interfaces (ADSI), ou até mesmo o Windows Management Instrumentation (WMI). Acompanhe como reciclaríamos um determinado pool do IIS com o ADSI:

function ReciclarPool([string] $server, [string] $poolName)
{           
    ([adsi]"IIS://$server/W3SVC/AppPools/$poolName").Recycle();
}

Uma última dica por hora, para editar e depurar scripts powershell, estou usando o programa PowerGUI.

image

É isso daí pessoal. Por hora é só, espero que tenham gostado! Smile

3 comentários:

Unknown disse...

Isso ai muito bom, continue assim

Unknown disse...
Este comentário foi removido pelo autor.
deniszaranza disse...

Boa noite. COmo faço pra alterar as configurações de um pool pelo PowerShell? Exemplo, preciso ajustar as configurações de reciclagem de um pool. Obrigada