Tentando iniciar o pool de aplicativos por meio do Script Powershell - recebendo um erro intermitentemente

11

Eu tenho um script em lote que me permite desativar um site, implantar arquivos e ativar o site novamente.

  1. Pare o pool de aplicativos - funciona
  2. Pare o site - funciona
  3. Implantar arquivos - funciona
  4. Iniciar pool de aplicativos - funciona apenas algumas vezes!
  5. Iniciar o website - funciona se trabalhos anteriores

Estou executando o Windows Server 2012 R2 e o script em lote é executado por um tentáculo Octopus Deploy.

A linha que está falhando é:

 Start-WebAppPool -Name $appPoolName

Onde $ appPoolName é live.website.com

Esta linha funciona algumas vezes, mas não em outras, e não é consistente em nenhum padrão.

Eu tenho o mesmo script trabalhando em outros servidores. Verifiquei se o serviço de Informações do aplicativo está sendo executado e se está funcionando bem. Não há registros do sistema no visualizador de eventos.

Embora eu tenha este erro de aplicação que é gerado quando o Start-WebAppPool é chamado:

ERROR  + Start-WebAppPool -Name $appPoolName
ERROR  start-webitem : The service cannot accept control messages at this time. 

Alguém sabe por que isso pode estar acontecendo? Eu tentei escrever um loop do-while até que ele esteja em um estado "Iniciado", mas o loop sempre falha.

Atualizar

Acontece que o processo não está sendo interrompido quando eu desligo o pool de aplicativos.

Por que o processo continua a ser executado após a interrupção do pool de aplicativos? Ele literalmente continua correndo, sem parar.

Fixo!

Então - seguindo os comentários abaixo, quando paro o pool de aplicativos, agora me certifico de que ele está completamente no estado interrompido antes de continuar o script.

Este é o script que tenho agora e está funcionando totalmente:

# Load IIS module:
Import-Module WebAdministration

# Get AppPool Name
$appPoolName = $OctopusParameters['appPoolName']

if ( (Get-WebAppPoolState -Name $appPoolName).Value -eq "Stopped" )
{
    Write-Host "AppPool already stopped: " + $appPoolName
}
else
{
    Write-Host "Shutting down the AppPool: " + $appPoolName
    Write-Host (Get-WebAppPoolState $appPoolName).Value

# Signal to stop.
Stop-WebAppPool -Name $appPoolName
}

do
{
    Write-Host (Get-WebAppPoolState $appPoolName).Value
    Start-Sleep -Seconds 1
}
until ( (Get-WebAppPoolState -Name $appPoolName).Value -eq "Stopped" )
    
por Base33 09.11.2015 / 17:10

1 resposta

0

O Octopus Deploy tem alguns scripts do PowerShell da comunidade, que você pode encontrar aqui link

Este é o conteúdo de um deles, que tem novas tentativas:

# Load IIS module:
Import-Module WebAdministration

# Get AppPool Name
$appPoolName = $OctopusParameters['appPoolName']
# Get the number of retries
$retries = $OctopusParameters['appPoolCheckRetries']
# Get the number of attempts
$delay = $OctopusParameters['appPoolCheckDelay']

# Check if exists
if(Test-Path IIS:\AppPools\$appPoolName) {

    # Stop App Pool if not already stopped
    if ((Get-WebAppPoolState $appPoolName).Value -ne "Stopped") {
        Write-Output "Stopping IIS app pool $appPoolName"
        Stop-WebAppPool $appPoolName

        $state = (Get-WebAppPoolState $appPoolName).Value
        $counter = 1

        # Wait for the app pool to the "Stopped" before proceeding
        do{
            $state = (Get-WebAppPoolState $appPoolName).Value
            Write-Output "$counter/$retries Waiting for IIS app pool $appPoolName to shut down completely. Current status: $state"
            $counter++
            Start-Sleep -Milliseconds $delay
        }
        while($state -ne "Stopped" -and $counter -le $retries)

        # Throw an error if the app pool is not stopped
        if($counter -gt $retries) {
            throw "Could not shut down IIS app pool $appPoolName. 'nTry to increase the number of retries ($retries) or delay between attempts ($delay milliseconds)." }
    }
    else {
        Write-Output "$appPoolName already Stopped"
    }
}
else {
    Write-Output "IIS app pool $appPoolName doesn't exist"
}

O que vem deste modelo de biblioteca link

    
por 03.10.2018 / 12:49