Public/Watch-P1ServerModel.ps1

function Watch-P1ServerModel {
    <#
    .Synopsis
    Watch the model versions on PlannerOne server.
 
    .Description
    Display for each environment loaded in PlannerOne the real model and cache versions.
 
    .Parameter HostName
    The hostname to query (default localhost)
 
    .Parameter ServicePort
    The hostname port of REST Service (default 80)
 
    .Example
    Watch-P1ServerModel -ServicePort 8073
    #>


    [cmdletbinding()]
    param(
        [string] $HostName,
        [int] $ServicePort
    )
    Process
    {
        if ($HostName -eq "") {
            $HostName = "localhost"
        }

        if ($ServicePort -eq 0) {
            $ServicePort = 80
        }

        $url = 'http://' + $HostName + ':' + $ServicePort + '/Services/cache/all'
        $serviceUrl = FixUrl $url
        $auto = $true
        $continue = $true
        while($continue)
        {
            clear
            Get-Date
            $state = (wget $serviceUrl).Content
            $stateObj = $state | ConvertFrom-Json
            $displayArray = @()
            foreach ($env in $stateObj) {

                if ($env.Id.EnvironmentId.Kind -eq 1) {
                    $kind = "PS"
                } else {
                    $kind = "RP"
                }

                if ($env.Id.Nature -eq 1) {
                    $nature = "Working"
                } else {
                    $nature = "Published"
                }

                $displayObj = New-Object System.Object
                $displayObj | Add-Member -type NoteProperty -name Product -value $kind
                $displayObj | Add-Member -type NoteProperty -name Name -value $env.Id.EnvironmentId.Name
                $displayObj | Add-Member -type NoteProperty -name Group -value $env.Id.EnvironmentId.PlanningGroupContainer
                $displayObj | Add-Member -type NoteProperty -name Nature -value $nature
                $displayObj | Add-Member -type NoteProperty -name Cache_ReadOnlyVersion -value $env.ReadOnlyVersion
                $displayObj | Add-Member -type NoteProperty -name Cache_VOVersion -value $env.VOVersion
                $displayObj | Add-Member -type NoteProperty -name Real_Version -value $env.RealPlanningVersion.Version
                $displayObj | Add-Member -type NoteProperty -name Real_StaticVersion -value $env.RealPlanningVersion.StaticDataVersion
                $displayObj | Add-Member -type NoteProperty -name Real_DynamicVersion -value $env.RealPlanningVersion.DynamicDataVersion

                $displayArray += $displayObj
            }

            $displayArray | Format-Table

            echo "ESCAPE: Quit | R: Refresh | A: Auto-Refresh (5s): $auto"
            $counter = 0
            if ($auto) {
                while(![console]::KeyAvailable -and ($counter++ -lt 10))
                {
                    [Threading.Thread]::Sleep( 500 )
                }
            }

            if ([console]::KeyAvailable -or !$auto)
            {
               $x = [System.Console]::ReadKey()

               switch ($x.key)
               {
                   # http://msdn.microsoft.com/en-us/library/system.consolekey(v=vs.110).aspx
                   Escape { $continue = $false }
                   R { }
                   A { $auto = !$auto }
               }
            }
        }

        Write-Output "Watch end"
    }
}