Public/Watch-P1WebModel.ps1
function Watch-P1WebModel { <# .Synopsis Watch the model versions on PlannerOne web. .Description Display for each session in PlannerOne Web application the model versions. .Parameter Tenant The tenant to use to retrieve connection informations. .Parameter HostName The hostname to query (default localhost) .Parameter ServicePort The hostname port of PlannerOne web Service (default 80) .Parameter WebAppName The web application name of PlannerOne (default PlannerOne) .Example Watch-P1WebModel -ServicePort 8073 #> [cmdletbinding()] param( [string] $Tenant, [string] $HostName, [int] $ServicePort, [string] $WebAppName ) Process { if ($Tenant -ne "") { $info = Get-TenantInfo $Tenant if ($info -eq $null) { Write-Warning "No information registered for tenant $Tenant" return } $HostName = $info.WebHost $ServicePort = $info.SitePort $WebAppName = $info.WebApplicationName } else { $Tenant = "NA" } if ($HostName -eq "") { $HostName = "localhost" } if ($ServicePort -eq 0) { $ServicePort = 80 } if ($WebAppName -eq "") { $WebAppName = "PlannerOne" } $url = 'http://' + $HostName + ':' + $ServicePort + '/' + $WebAppName + '/Api/CacheInfo.svc/versions' $serviceUrl = FixUrl $url $auto = $true $clean = $true $continue = $true while($continue) { clear echo "Tenant: $Tenant - Host: $HostName - Port: $ServicePort - WebApp: $WebAppName" $lastRefresh = Get-Date echo "$lastRefresh - Version format: Planning | Static | Dynamic" $stateJson = (wget $serviceUrl -UseDefaultCredentials).Content $state = $stateJson | ConvertFrom-Json Write-Verbose "state: $state" if ($state -ne $null) { $web = "WebApplication: " + $state.Name # echo $web foreach ($session in $state.Sessions) { if ($clean -eq $false -or $session.Environments -ne $null) { $sess = "Session: " + $session.Id echo $sess foreach ($env in $session.Environments) { $environment = "|_Environment: " + $env.Key echo $environment $vw = Get-PlanningVersionWeb $env.Working echo "| |_Working:`t$vw" $vp = Get-PlanningVersionWeb $env.Published echo "| |_Published:`t$vp" foreach ($tab in $env.Tabs) { $t = $tab.Key $v = "View: " + $tab.Version.View + " | Last: " + $tab.Version.Last echo "| |_$t : $v" } echo "|" } echo "" } } } echo "ESCAPE: Quit | R: Refresh | A: Auto-Refresh (5s): $auto | C: Clean empty sessions: $clean" $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 } C { $clean = !$clean } } } } Write-Output "Watch end" # Write-Host must be call for ReadKey to not corrupt the console Write-Host } } |