Deseamos compartir contigo la mejor respuesta que encontramos en línea. Nosotros esperamos que te resulte de ayuda y si puedes comentarnos algo que nos pueda ayudar a crecer hazlo libremente.
Solución:
Puede usar estos dos comandos para verificar el estado del sitio web/aplicación, digamos después de 10 segundos, luego use una instrucción If para eliminar registros solo cuando el estado devuelto sea stopped
Get-WebsiteState -name "MyWebsite"
Get-WebAppPoolState -name "MyWebsite"
Este bucle también debería ayudarte.
$currentRetry = 0;
$success = $false;
do
$status = Get-WebAppPoolState -name "MyWebsite"
if ($status -eq "Stopped")
<....your code here....>
$success = $true;
Start-Sleep -s 10
$currentRetry = $currentRetry + 1;
while (!$success -and $currentRetry -le 4)
Actualizado el 24 de abril de 2019
Según el comentario y el documento de cmdlet actual, parece que el tipo de devolución es de hecho un objeto. Por lo tanto, presumiblemente, se puede manejar como comentado o como el fragmento de línea a continuación. El autor ya no tiene acceso al entorno de Windows Server, por lo tanto, no modificó directamente la respuesta original ni pudo probar la actualización.
if ($status.Value -eq "Stopped")
Después de ejecutar ‘Stop-WebAppPool’, el estado de WebAppPool será “Deteniéndose” y pueden pasar unos segundos antes de que el estado de WebAppPool sea realmente “Detenido”.
Aquí hay una pequeña función para ayudar con WebAppPoolState
function Stop-AppPool ($webAppPoolName,[int]$secs)
$retvalue = $false
$wsec = (get-date).AddSeconds($secs)
Stop-WebAppPool -Name $webAppPoolName
Write-Output "$(Get-Date) waiting up to $secs seconds for the WebAppPool '$webAppPoolName' to stop"
$poolNotStopped = $true
while (((get-date) -lt $wsec) -and $poolNotStopped)
$pstate = Get-WebAppPoolState -Name $webAppPoolName
if ($pstate.Value -eq "Stopped")
Write-Output "$(Get-Date): WebAppPool '$webAppPoolName' is stopped"
$poolNotStopped = $false
$retvalue = $true
return $retvalue
puede ejecutar esta función usando, por ejemplo
Stop-AppPool "MyWebsite" 30
y verifique el valor de retorno para ver si WebAppPool se ha detenido en los segundos dados
Te invitamos a añadir valor a nuestra información asistiendo con tu experiencia en las explicaciones.