1

利用可能な COM ポートのリストが表示されるドロップダウン メニューを組み込みたいと考えています。$port を作成する COM4 の代わりに使用可能な COM ポートの名前を簡単に取得する方法が見つかりません。

$port = new-Object System.IO.Ports.SerialPort COM4,19200,None,8,one

Win32_SerialPort を使用することで、COM1 と COM3 を簡単に抽出できます。

Get-WmiObject Win32_SerialPort | Select-Object deviceid

結果:

デバイスID

COM3
COM1

しかし、私のデバイス マネージャには、リモート シリアル ハブからの 16 個の使用可能なポートが表示されます。 デバイス マネージャーのスナップショット

これが私が試したもので、名前を絞り込むことはできますが、 (COM--) 部分だけを抽出する方法がわかりません。

Get-WmiObject Win32_pnpentity  -Filter "Name LIKE 'devicemaster port%'" | Select-Object -Property Name 

結果のスクリーンショット

4

3 に答える 3

0

理解するためにいくつかの作業を残しますが、結果のスクリーンショットに基づいて、次のようなことができます。

$ports = @()
$ports += 'devicemaster port (COM1)'
$ports += 'devicemaster port (COM2)'
$ports += 'devicemaster port (COM3)'
$ports += 'devicemaster port (COM4)'


$ports | % {
    if ($_ -match "devicemaster port \((.*)\)") {
        $matches[1]
    }
}

そのオブジェクトを「$ports」に保存すると仮定します。「$ports.Name」を使用する必要がある場合があります...

正規表現がどのように機能するかについては、おそらく regex101.com を参照してください。

于 2016-11-01T23:54:23.023 に答える