Создано решение, сочетающее в себе Powershell и WSL .
1.Создать скрипт Powershell, comports.ps1 :
$DeadComport = 3
$COMportList = [System.IO.Ports.SerialPort]::getportnames()
if ($COMportList.Count -cgt 2) {
Write-Output "Too many com-ports connnected! "
Write-Host -NoNewline "Com-ports found:" $COMportList.Count
}else{
ForEach ($COMport in $COMportList) {
$temp = new-object System.IO.Ports.SerialPort $COMport
$portNr = $temp.PortName.SubString(3)
if ($portNr -eq $DeadComport){
continue
}
Write-Output $portNr
$temp.Dispose()
}
}
2.Создать bash-скрипт в WSL, comscript :
Предпочтительно в папке home/your-username/bin
, что делает bash-скрипт глобально исполняемым.
#!/bin/bash
echo "Active com-port"
powershell.exe -File "c:\your-folder\comports.ps1"
Теперь вы можете просто вызвать comscript ион выведет активный компорт, если активны более одного, он выдаст сообщение об ошибке.
Имейте в виду, что я отфильтровываю com-порт 3, так как он всегда есть и активен на моем компьютере.