Powershell перечисляет последовательные порты описание

#list #powershell #serial-port

#Список #powershell #последовательный порт

Вопрос:

Я хотел бы создать список COM-портов на моем компьютере (COM-порт описание). Я хочу создать список COM-портов, чтобы взаимодействовать с коммутатором с помощью преобразователя USB / RS232.

Что я пробую до сих пор :

 Get-WMIObject Win32_SerialPort | Select-Object DeviceID,Description
  

Но все COM-порты не отображаются
(пример: COM11 отсутствует)

еще одна попытка :

 [System.IO.Ports.SerialPort]::getportnames()
  

здесь нужный мне порт присутствует, но описание отсутствует.
(пример: COM11 присутствует, но без каких-либо подробностей)

Комментарии:

1. Этот вопрос написан не на английском языке.

Ответ №1:

Как насчет этого?

 $c1 = new-object System.IO.Ports.SerialPort com1
$c1
BaseStream             :
BaudRate               : 9600
BreakState             :
BytesToWrite           :
BytesToRead            :
CDHolding              :
CtsHolding             :
DataBits               : 8
DiscardNull            : False
DsrHolding             :
DtrEnable              : False
Encoding               : System.Text.ASCIIEncoding
Handshake              : None
IsOpen                 : False
NewLine                :

Parity                 : None
ParityReplace          : 63
PortName               : com1
ReadBufferSize         : 4096
ReadTimeout            : -1
ReceivedBytesThreshold : 1
RtsEnable              : False
StopBits               : One
WriteBufferSize        : 2048
WriteTimeout           : -1
Site                   :
Container              :
  

Вы могли бы сделать это для каждого порта, который возвращается из getportnames() . Вероятно, вы захотите вызвать метод Dispose() для каждого порта и установить $c1 в $null после завершения сбора информации для него.

Комментарии:

1.Для завершения для новичка, который не понимает, как собрать все это вместе, вот мой комбо: $COMportList = [System.IO.Ports.SerialPort]::getportnames() ForEach ($COMport in $COMportList) { $temp = new-object System.IO.Ports.SerialPort $COMport echo $temp.PortName echo $temp.BaudRate $temp.Dispose() }

2. Похоже, этот ответ больше не работает для PowerShell 5.1.19041.906. Ответ Марка Стауффера работает.

Ответ №2:

Приведенные выше ответы, похоже, относятся к устаревшим объектам Powershell.

Я смог использовать это:

 Get-CimInstance -Class Win32_SerialPort | Select-Object Name, Description, DeviceID
  

Удалите | Select-Object Name, Description, DevideID , чтобы проверить дополнительные свойства.

Ответ №3:

сделал это:

https://www.google.com/search?q=powershell get available com portsamp;gws_rd=ssl

нашел это:

http://empegbbs.com/ubbthreads.php/topics/362862/Windows_command_to_quickly_lis

что привело к этому:

https://github.com/todbot/usbSearch/blob/master/listComPorts.vbs

итак, я адаптировал его к этому:

 Get-WmiObject Win32_PnPEntity -Filter "Name LIKE 'com%'" | Where Name -match 'COMd '
  

или это

 Get-WmiObject -Query 'SELECT Name, Description from Win32_PnPEntity WHERE Name LIKE "com%"'
  

Комментарии:

1. Это больше не работает в PowerShell 5.1.19041.906. ответ Марка Стоффера действительно работает.

2. спасибо, что сообщили нам, и спасибо @mark за ответ