Files
serverinfotest/host/send_sysinfo.ps1
DESKTOP-PUHFO60\dsx2016 8cc030178f Add cross-platform Python host agent with psutil and optional NVML.
Replace Windows-only WMI collector so Win10/11, Linux, and macOS can feed the same SI protocol.
2026-10-27 20:21:08 +08:00

58 lines
1.7 KiB
PowerShell

# Thin Windows launcher for the cross-platform Python agent.
# Prefer: python send_sysinfo.py
# This script only finds Python and forwards args.
#
# Usage:
# .\send_sysinfo.ps1
# .\send_sysinfo.ps1 -Port COM5
# .\send_sysinfo.ps1 -Port COM5 -IntervalMs 1000
param(
[string]$Port = "",
[int]$IntervalMs = 1000,
[int]$Baud = 460800
)
$ErrorActionPreference = "Stop"
$here = Split-Path -Parent $MyInvocation.MyCommand.Path
$pyScript = Join-Path $here "send_sysinfo.py"
function Find-Python {
foreach ($c in @(
"python",
"py",
(Join-Path $env:USERPROFILE "AppData\Local\Programs\Python\Python312\python.exe"),
(Join-Path $env:USERPROFILE "AppData\Local\Programs\Python\Python311\python.exe")
)) {
if (-not $c) { continue }
if ($c -eq "py") {
$cmd = Get-Command py -ErrorAction SilentlyContinue
if ($cmd) { return @($cmd.Source, "-3") }
continue
}
$cmd = Get-Command $c -ErrorAction SilentlyContinue
if ($cmd) { return @($cmd.Source) }
if (Test-Path $c) { return @($c) }
}
return $null
}
$py = Find-Python
if (-not $py) {
throw "Python not found. Install Python 3.8+ then: pip install -r requirements.txt"
}
& $py[0] @($py[1..($py.Length-1)]) -c "import psutil,serial" 2>$null
if ($LASTEXITCODE -ne 0) {
Write-Host "Installing host deps..."
& $py[0] @($py[1..($py.Length-1)]) -m pip install -r (Join-Path $here "requirements.txt")
& $py[0] @($py[1..($py.Length-1)]) -m pip install nvidia-ml-py
}
$argv = @($pyScript, "--baud", "$Baud", "--interval-ms", "$IntervalMs")
if ($Port) { $argv += @("--port", $Port) }
Write-Host "Launch: $($py -join ' ') $($argv -join ' ')"
& $py[0] @($py[1..($py.Length-1)]) @argv
exit $LASTEXITCODE