PS-Commands/Scripts/Pode-WinMan.ps1

52 lines
2.3 KiB
PowerShell
Raw Normal View History

2023-11-03 16:25:24 +03:00
Start-PodeServer {
Add-PodeEndpoint -Address localhost -Port "8080" -Protocol "HTTP"
### Get info endpoints
Add-PodeRoute -Path "/" -Method "GET" -ScriptBlock {
Write-PodeJsonResponse -Value @{
"service"="/api/service";
"process"="/api/process"
}
}
### GET
Add-PodeRoute -Path "/api/service" -Method "GET" -ScriptBlock {
Write-PodeJsonResponse -Value $(
Get-Service | Select-Object Name,@{
Name="Status"; Expression={[string]$_.Status}
},@{
Name="StartType"; Expression={[string]$_.StartType}
} | ConvertTo-Json
)
}
Add-PodeRoute -Path "/api/process" -Method "GET" -ScriptBlock {
Write-PodeJsonResponse -Value $(
Get-Process | Sort-Object -Descending CPU | Select-Object -First 15 ProcessName,
@{Name="ProcessorTime"; Expression={$_.TotalProcessorTime -replace "\.\d+$"}},
@{Name="Memory"; Expression={[string]([int]($_.WS / 1024kb))+"MB"}},
@{Label="RunTime"; Expression={((Get-Date) - $_.StartTime) -replace "\.\d+$"}}
)
}
Add-PodeRoute -Path "/api/process-html" -Method "GET" -ScriptBlock {
Write-PodeHtmlResponse -Value (
Get-Process | Sort-Object -Descending CPU | Select-Object -First 15 ProcessName,
@{Name="ProcessorTime"; Expression={$_.TotalProcessorTime -replace "\.\d+$"}},
@{Name="Memory"; Expression={[string]([int]($_.WS / 1024kb))+"MB"}},
@{Label="RunTime"; Expression={((Get-Date) - $_.StartTime) -replace "\.\d+$"}} # Auto ConvertTo-Html
)
}
### POST
Add-PodeRoute -Path "/api/service" -Method "POST" -ScriptBlock {
# https://pode.readthedocs.io/en/latest/Tutorials/WebEvent/
# $WebEvent | Out-Default
$Value = $WebEvent.Data["ServiceName"]
$Status = (Get-Service -Name $Value).Status
Write-PodeJsonResponse -Value @{
"Name"="$Value";
"Status"="$Status";
}
}
}
# irm http://localhost:8080/api/service -Method Get
# irm http://localhost:8080/api/process -Method Get
# irm http://localhost:8080/api/process-html -Method Get
# irm http://localhost:8080/api/service -Method Post -Body @{"ServiceName" = "AnyDesk"}