109 lines
2.6 KiB
PowerShell
109 lines
2.6 KiB
PowerShell
Add-Type -AssemblyName System.Windows.Forms
|
|
Add-Type -AssemblyName System.Drawing
|
|
|
|
$TaskName = "MinerOpsAgent"
|
|
$GuiPath = "C:\MinerOpsAgent\MinerOpsAgentGUI.ps1"
|
|
$LogPath = "C:\MinerOpsAgent\logs\agent.log"
|
|
$DashboardUrl = "https://plexus.lussier.cc/dashboard"
|
|
|
|
function Start-Agent {
|
|
Start-ScheduledTask -TaskName $TaskName -ErrorAction SilentlyContinue
|
|
}
|
|
|
|
function Stop-Agent {
|
|
Stop-ScheduledTask -TaskName $TaskName -ErrorAction SilentlyContinue
|
|
}
|
|
|
|
function Restart-Agent {
|
|
Stop-ScheduledTask -TaskName $TaskName -ErrorAction SilentlyContinue
|
|
Start-Sleep -Seconds 2
|
|
Start-ScheduledTask -TaskName $TaskName -ErrorAction SilentlyContinue
|
|
}
|
|
|
|
function Open-Gui {
|
|
Start-Process powershell.exe -ArgumentList "-NoProfile -ExecutionPolicy Bypass -File `"$GuiPath`""
|
|
}
|
|
|
|
function Open-Dashboard {
|
|
Start-Process $DashboardUrl
|
|
}
|
|
|
|
function Open-Log {
|
|
if (Test-Path $LogPath) {
|
|
Start-Process notepad.exe $LogPath
|
|
}
|
|
}
|
|
|
|
function Get-AgentStatusText {
|
|
$task = Get-ScheduledTask -TaskName $TaskName -ErrorAction SilentlyContinue
|
|
|
|
if (!$task) {
|
|
return "MinerOps Agent: task not installed"
|
|
}
|
|
|
|
return "MinerOps Agent: $($task.State)"
|
|
}
|
|
|
|
$notify = New-Object System.Windows.Forms.NotifyIcon
|
|
$notify.Icon = [System.Drawing.SystemIcons]::Application
|
|
$notify.Text = Get-AgentStatusText
|
|
$notify.Visible = $true
|
|
|
|
$menu = New-Object System.Windows.Forms.ContextMenuStrip
|
|
|
|
$itemOpen = $menu.Items.Add("Open Agent GUI")
|
|
$itemOpen.Add_Click({ Open-Gui })
|
|
|
|
$itemDashboard = $menu.Items.Add("Open Plexus Dashboard")
|
|
$itemDashboard.Add_Click({ Open-Dashboard })
|
|
|
|
$menu.Items.Add("-") | Out-Null
|
|
|
|
$itemStart = $menu.Items.Add("Start Agent")
|
|
$itemStart.Add_Click({
|
|
Start-Agent
|
|
Start-Sleep -Seconds 1
|
|
$notify.Text = Get-AgentStatusText
|
|
})
|
|
|
|
$itemStop = $menu.Items.Add("Stop Agent")
|
|
$itemStop.Add_Click({
|
|
Stop-Agent
|
|
Start-Sleep -Seconds 1
|
|
$notify.Text = Get-AgentStatusText
|
|
})
|
|
|
|
$itemRestart = $menu.Items.Add("Restart Agent")
|
|
$itemRestart.Add_Click({
|
|
Restart-Agent
|
|
Start-Sleep -Seconds 1
|
|
$notify.Text = Get-AgentStatusText
|
|
})
|
|
|
|
$menu.Items.Add("-") | Out-Null
|
|
|
|
$itemLog = $menu.Items.Add("Open Log")
|
|
$itemLog.Add_Click({ Open-Log })
|
|
|
|
$itemExit = $menu.Items.Add("Exit Tray Icon")
|
|
$itemExit.Add_Click({
|
|
$notify.Visible = $false
|
|
$notify.Dispose()
|
|
[System.Windows.Forms.Application]::Exit()
|
|
})
|
|
|
|
$notify.ContextMenuStrip = $menu
|
|
|
|
$notify.Add_DoubleClick({
|
|
Open-Gui
|
|
})
|
|
|
|
$timer = New-Object System.Windows.Forms.Timer
|
|
$timer.Interval = 5000
|
|
$timer.Add_Tick({
|
|
$notify.Text = Get-AgentStatusText
|
|
})
|
|
$timer.Start()
|
|
|
|
[System.Windows.Forms.Application]::Run()
|