Cross-Platform PowerShell framework that allows you to host REST APIs, Web Sites, and TCP/SMTP Servers
Badgerati on develop
fix for choco packer (compare)
Badgerati on gh-pages
v2.8.0 docs (compare)
Badgerati on v2.8.0
Badgerati on master
add workflows for auto-assignin… Merge pull request #1027 from B… helps if you add the action ver… and 71 more (compare)
$powerShell = $svr.PowerShell
$scriptPath = $svr.ScriptPath
Write-Host " Installing " -NoNewLine -ForegroundColor Green
Write-Host $serviceName -NoNewline -ForegroundColor Yellow
Write-Host " as a Windows service" -ForegroundColor Green
$nssm = (Get-Command nssm).Source
$pscmd = (Get-Command $powerShell).Source
$arguments = '-ExecutionPolicy Bypass -NoProfile -File "{0}"' -f $scriptPath
& $nssm install $serviceName $pscmd $arguments
& $nssm status $serviceName
Hey @cadayton, that should be about all that's needed. Few questions though, is $scriptPath
a relative or literal path? In the docs I used -Command
instead of -File
- any difference there if you change it?
On the last line you've got nssm status <name>
is that a typo here and meant to be nssm start <name>
?
Failing all of that, there's a change an error could be being thrown, so wrapping the whole server.ps1 in a try/catch could give some hints; something like:
try {
Start-PodeServer, etc, etc
}
catch {
$_.Exception.Message | Out-File C:/temp/pode_errors.txt
}
-Command
option and the try/catch combo too. Thanks again.
Import-Module Pode -Global
. So stumped as to why it is not being found.The term 'Start-PodeServer' is not recognized as a name of a cmdlet, function, script file, or executable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
get-module Pode -All -ListAvailable
Reset-PodeWebPage
in a Modal ?Date: 2021-10-12 16:16:01
at Invoke-PodeScriptBlock, C:\Users\sgagnon\Documents\PowerShell\Modules\Pode\2.4.2\Public\Utilities.ps1: line 662
at <ScriptBlock>, <No file>: line 107
Date: 2021-10-12 16:16:01
Level: Error
ThreadId: 3
Server: WH-DESK04
Category: System.Private.CoreLib
Message: Collection was modified; enumeration operation may not execute.
StackTrace: at System.Collections.Hashtable.HashtableEnumerator.MoveNext()
at System.Management.Automation.EnumerableOps.FlattenResults(Object o, List`1 result)
at System.Management.Automation.EnumerableOps.PropertyGetterWorker(CallSite`1 getMemberBinderSite, IEnumerator enumerator, ExecutionContext context, List`1 result)
at System.Management.Automation.EnumerableOps.PropertyGetter(PSGetMemberBinder binder, IEnumerator enumerator)
at Get-PodeRoute(Closure , FunctionContext )
-ArgumentList
, or something else?
$RoomList = Import-Csv -Path D:\Deployment\Rooms.csv -Delimiter ";" -Encoding UTF8
$Tabs = @( Foreach ( $Room in $RoomList )
{
New-PodeWebTab -Name $Room.Name -Icon $Room.Icon -Layouts @(
New-PodeWebCard -Content @(
New-PodeWebText -Value 'Here is some Normal text.'
)
)
} )
Add-PodeWebPage -Name 'Rooms' -Icon google-classroom -ArgumentList $Tabs -ScriptBlock {
param ($Tabs)
New-PodeWebTabs -Tabs @($Tabs)
}
-AccessGroup
or -AccessUser
in add-PodeWebPage
cmdlet. Is there anything equivalent for AAD? Thank you!
-AccessUsers
with AAD, though you might need to set -UsernameProperty
on Set-PodeWebLoginPage
to either "preferred_username" or "email" to force a username property, rather than just use Pode.Web's default. For groups, it breaks a little bit there at the moment. The access_token I think should be a JWT and contains claims like the groups, but will need parsing - in the next version of Pode its ConvertFrom-PodeJwt
should hopefully be moved to public :)
Hey @majkinetor :D, the lowest Pode's can go down to is a minute using cron; I've never stress tested it to extreme limits but I do have a health probe running on numerous web servers which runs a minutely schedule and it's not suffered any; plus another, which is a timer, that runs every 20secs, which does the bulk of CPU/IIS/Service checks, and also running fine. The most schedules I've seen was in a Pingdom-esque site someone built, which was running like 10-20 minutely schedules without issue.
As Pode triggers schedules, they're run in their own runspace, in a pool which allows up to a max of 10 to run at the same time (we could allow this to be customised), and then queues them if the pool is full. If you did have a schedule run every minute, and one of the times it triggered it did happen to run for 2mins, then Pode would trigger the schedule another 2 times during the running one.
I've been thinking about building a scheduler like this as well in Pode, so will be interesting to see how schedules/timers perform under load 🤔