none
Obter Status do Pool das aplicações Web remotamente RRS feed

  • Pergunta

  • Bom dia,

    Gostaria de ajuda para verificar atraves do powershell o status dos pools das aplicações web remotamente.

    com o código abaixo consigo fazer o monitoramento local apenas:



    try{
    Import-Module WebAdministration
    Get-WebApplication
     
    $webapps = Get-WebApplication
    $list = @()
    foreach ($webapp in get-childitem IIS:\AppPools\)
    {
    $name = "IIS:\AppPools\" + $webapp.name
    $item = @{}
     
    $item.WebAppName = $webapp.name
    $item.Version = (Get-ItemProperty $name managedRuntimeVersion).Value
    $item.State = (Get-WebAppPoolState -Name $webapp.name).Value
    $item.UserIdentityType = $webapp.processModel.identityType
    $item.Username = $webapp.processModel.userName
    $item.Password = $webapp.processModel.password
     
    $obj = New-Object PSObject -Property $item
    $list += $obj
    }
     
    $list | Format-Table -a -Property "WebAppName", "Version", "State", "UserIdentityType", "Username", "Password"
     
    }catch
    {
    $ExceptionMessage = "Error in Line: " + $_.Exception.Line + ". " + $_.Exception.GetType().FullName + ": " + $_.Exception.Message + " Stacktrace: " + $_.Exception.StackTrace
    $ExceptionMessage
    }

    sábado, 10 de outubro de 2015 08:26

Todas as Respostas

  • Infelizmente os CmdLets do módulo WebAdministration não estão maduros o suficiente para fazer seu trabalho em um host remoto.

    Para fazer isso você terá que usar o CmdLet Get-WMIObject e na minha opinião, uma função para retornar o estado do pool amigavelmente já que este item é representado por números e não uma string.

    Function Get-AppPoolStateInfo ($StateNumber) {
    	Switch ($StateNumber) {
    		1 {"Running"}
    		3 {"Stopped"}
    	}
    }
    
    $AppPoolList = @()
    $OutPut = @()
    $AppPoolList += Get-WmiObject -Class ApplicationPool -ComputerName USNYCBRDS-P0001 -NameSpace "root\WebAdministration" | `
    Select-Object PSComputerName, Name | Sort Name
    ForEach ($AppPool in $AppPoolList) {
    	$FormattedArray = [Ordered]@{ComputerName=$AppPool.PSComputerName; ApplicationPoolName=$AppPool.Name; `
    	ApplicationPoolStatus=(Get-AppPoolStateInfo (Get-WmiObject -ComputerName $AppPool.PSComputerName -Class ApplicationPool `
    	-NameSpace 'root\WebAdministration' | ? {$_.Name -eq $AppPool.Name}).GetState().ReturnValue)}
        $NewArrayObj = New-Object PSObject -Property $FormattedArray
        $OutPut += $NewArrayObj
    }
    $OutPut | Ft -Wrap




    sábado, 10 de outubro de 2015 15:47